私の前のポストでは、私はまだタワーズオブハノイを書いています。素晴らしい解決策を説明した後、どのようにリングをペグに描くかについて、私はまだしばらくの間、手をつけていたという疑問が1つあります。ハノイの塔:ペグからペグへのリングの移動
namespace Towers_Of_Hanoi
{
class PegClass
{
private int pegheight;
private int y = 3;
int[] rings = new int[0];
public PegClass()
{
//this is the default constructor
}
public PegClass(int height)
{
pegheight = height;
}
// other user defined functions
public void AddRing(int size)
{
Array.Resize (ref rings, rings.Length + 2);
rings[rings.Length - 1] = size;
}
public void DrawPeg(int x, int numberOfRings = 0)
{
for (int i = pegheight; i >= 1; i--)
{
string halfRing = new string (' ', i);
if (numberOfRings > 0)
{
if (i <= numberOfRings)
halfRing = new string ('-', numberOfRings - i + 1);
}
Console.SetCursorPosition(x - halfRing.Length * 2 + i + (halfRing.Contains("-") ? (-i + halfRing.Length) : 0), y);
Console.WriteLine(halfRing + "|" + halfRing);
y++;
}
if (x < 7) {
x = 7;
}
Console.SetCursorPosition (x - 7, y); //print the base of the peg
Console.WriteLine("----------------");
}
}
}
そして、ここに私の主な方法です。
は、ここに私のPegClassです。
namespace Tower_of_hanoi
{
class Program
{
static void Main(string[] args)
{
PegClass myPeg = new PegClass(8);
PegClass myPeg2 = new PegClass(8);
PegClass myPeg3 = new PegClass(8);
DrawBoard(myPeg, myPeg2, myPeg3);
Console.WriteLine ("\t\t\nWelcome to kTowers!");
while (true)
{
string input = "\nWhat peg do you want to move to commander?";
Console.WriteLine (input);
if (input == "2")
{
myPeg.DrawPeg (2);
}
Console.ReadLine();
}
}
public static void DrawBoard(PegClass peg1,PegClass peg2,PegClass peg3)
{
Console.Clear();
peg1.DrawPeg(20,1);
peg2.DrawPeg(40,2);
peg3.DrawPeg(60,4);
}
}
}
これは、現在の出力です:
| | |
| | |
| | |
| | |
| | -|-
| | --|--
| -|- ---|---
-|- --|-- ----|----
---------------- ---------------- ----------------
私の質問は1つが移動しないか、残っている - プロンプトのために求められたとき、PEGとペグから文字「」を。私は数時間それを調整しようとしたが、まだそれを理解することができませんでした。
はただ「どのように多くのリング、このペグの上にある」しかし、それは十分ではないとして、あなたがリングを明らかにしている、事前にyoumeoutside
は、スタックオーバーフローへようこそ!次回に質問を投稿するときは、正しくインデントしてください。人々があなたのコードを読んで理解するのを助けるだけでなく、それを読んだ人や他の誰もがそれをより穏やかにするでしょう。 – Rob
あなたの質問をもっとよく理解するために、コンソールの元の出力にペグを移動したいですか?あるいは、入力ごとに新しいペグシステムを再描画したいですか? – Ruskin
リングを個別のオブジェクトとして作成する必要があります。今度は同じ幅の3つのリングがありますが、これはハノイの塔ではありません。これは別のものです。だから、ペグの「高さ」はあなたが持っているリングの数によって与えられますが、幅を持つ具体的なオブジェクトとしてリングをインスタンス化する必要があります。 –