gpt4 book ai didi

C# 汉诺塔控制台应用程序。

转载 作者:可可西里 更新时间:2023-11-01 09:33:13 33 4
gpt4 key购买 nike

我会保持简洁。我正在学习 C# 并探索该语言的可能性。作为一名 Python 程序员,我对 .NET 领域还很陌生。

我目前正在编写汉诺塔控制台应用程序。我已经理解代码的递归部分,因为这并不具有挑战性。

这是我的 Hook 类的当前代码。

namespace Tower_of_hanoi
{
class PegClass
{
private int pegheight;
private int y = 3;
int[] rings = new int[0];
public PegClass()
{
// default constructor

}
public PegClass(int height)
{
pegheight = height;
}




// other functions
public void AddRing(int size)
{
Array.Resize(ref rings, rings.Length + 1);
rings[rings.Length - 1] = size;
}

public void DrawPeg(int x)
{
for (int i = 1; i <= pegheight; i++)
{
Console.SetCursorPosition(x, y);
Console.WriteLine("|");
y++;
}

if (x < 7)
{
x = 7;
}


Console.SetCursorPosition(x - 7, y); // print the base
Console.WriteLine("----------------");
}


}
}

这是我在主类中显示钉子的代码。我通过将它们放在一个方法中来促进了钉子的打印。

    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.ReadLine();
}

public static void DrawBoard(PegClass peg1,PegClass peg2,PegClass peg3)
{
Console.Clear();
peg1.DrawPeg(20);
peg2.DrawPeg(40);
peg3.DrawPeg(60);

}

}

}

我的问题仍然存在,

如何在控制台应用程序中将“环”移动到“钉子”?我了解这在 WinForms 中的工作原理,但我想要挑战一下。

先谢谢大家,

你在外面

最佳答案

您所要做的就是修改 DrawPeg 方法以接受当前“环”的数量

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
Console.WriteLine("----------------");
}

然后,您可以使用当前值调用 DrawBoard 方法(现在它们是硬编码的)

public static void DrawBoard(PegClass peg1, PegClass peg2, PegClass peg3)
{
Console.Clear();
peg1.DrawPeg(20, 1);
peg2.DrawPeg(40, 2);
peg3.DrawPeg(60, 4);
}

现在你所要做的就是每次你的玩家移动时调用具有不同响铃数的方法

关于C# 汉诺塔控制台应用程序。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34579928/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com