Önceki yazımda genişlediğim için hala Hanoi Kuleleri yazıyorum. Halkalar üzerindeki halkaların nasıl çizileceğine dair harika bir çözüme kavuştuktan sonra, hala bir süredir bir süredir uğraştığım bir sorum var.Hanoi Kuleleri: Peg'den Peg'e Taşınan Halkalar
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("----------------");
}
}
}
Ve burada benim ana yöntemdir:
İşte benim PegClass olduğunu.
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);
}
}
}
Bu akım çıkışı:
| | |
| | |
| | |
| | |
| | -|-
| | --|--
| -|- ---|---
-|- --|-- ----|----
---------------- ---------------- ----------------
Sorum biri hareket eder, nasıl kalır - Bir istemi için sorulduğunda pimlenmesinin peg karakterleri ''. Saatlerce değiştirmeyi denedim ve hala anlayamadım.
Sadece "Birçok halkalar bu çiviye nasıl" ama bu yeterli olmayacak gibi halkaları tezahür etmiş
Hoşgeldin taşması yığın! Lütfen, bir dahaki sefere bir soru gönderdiğinizde, uygun şekilde girebilir misiniz? Bu sadece insanların kodunuzu okumasına ve anlamasına yardımcı olmaz, aynı zamanda sizin için okumanızı ve başkalarını okumanızı sağlar. – Rob
Sorunuzu biraz daha iyi anlamak için, mandalları Konsolun orijinal çıktısına taşımak ister misiniz? Ya da her girişten sonra yeni bir peg sistemini yeniden çizmek ister misiniz? – Ruskin
Halkaları ayrı nesneler olarak oluşturmanız gerekir. Şimdi göründüğü gibi aynı genişlikte 3 yüzük var, bu hanoi kuleleri değil, bu farklı bir şey. Bir pegin "yüksekliği", üzerinde kaç tane yüzük bulunduğuna göre verilir, ancak halkaları genişliğe sahip beton nesneler olarak örneklendirmeniz gerekir. –