Espansione sul mio post precedente, sto ancora scrivendo Towers of Hanoi. Dopo aver trovato una soluzione meravigliosa su come disegnare gli anelli sui pioli, ho ancora una domanda con cui mi sto divertendo da un po 'ora.Towers of Hanoi: Moving Rings da Peg a Peg
Ecco il mio PegClass:
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("----------------");
}
}
}
E qui è il mio metodo principale.
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);
}
}
}
Questa è la corrente di uscita:
| | |
| | |
| | |
| | |
| | -|-
| | --|--
| -|- ---|---
-|- --|-- ----|----
---------------- ---------------- ----------------
La mia domanda rimane, come si fa a spostare il '-' caratteri da piolo a piolo quando gli viene chiesto per un prompt. Ho provato a modificarlo per ore e ancora non riuscivo a capirlo.
Grazie in anticipo, youmeoutside
Benvenuti a overflow dello stack! Per favore, la prossima volta che posti una domanda, puoi indentarla correttamente? Non solo aiuterà le persone a leggere e comprendere il tuo codice, ma renderà anche più ordinato per te e chiunque altro lo leggerà. – Rob
Per capire meglio la tua domanda, vuoi spostare i pioli sull'output originale della Console? O vuoi ridisegnare un nuovo sistema di pegging dopo ogni input? – Ruskin
È necessario creare gli anelli come oggetti separati. Come mostra ora hai 3 anelli con la stessa larghezza, non sono torri di hanoi, è qualcosa di diverso. Quindi "l'altezza" di un piolo è data da quanti anelli hai su di esso ma devi istanziare gli anelli come oggetti concreti che hanno una larghezza. –