Hallo Habo,
ich sitze gerade an meiner Schulaufgabe (ein TicTacToe-Spiel mit C# zu programmieren) und komme nicht weiter.
Bevor ich zu meinen zwei Problemen komme, erkläre ich eben das Prinzip meines TicTacToe-Spiels:
Es wird ein Eindimensionaler-Array für das "Spielfeld" erzeugt, das Spielfeld besteht aus Zahlen von 1-9. Wenn ich jetzt z.B. eine 5 eingebe, wird das Spielfeld aktualisiert und wo vorher die 5 stand, steht nun ein X bzw. ein O.
Hier ist erstmal der Code und dann erläutere ich meine Probleme.
Das soll eign. mein Code sein, der eine Abfrage macht, ob die Zahl die eingeben wurde unter 1 oder über 10 ist und prüft, ob das Feld mit einem 'X' oder einem 'O' besetzt ist.
Also ich habe zwei Probleme in dem Code:
1)
Also ich bin Spieler1 und habe somit die 'X'se.
Wenn ich eine korrekte Zahl (also zwischen 1-9) eingebe, aber das Feld mit einem X besetzt ist, dann kommt die erwünschte Fehlermeldung: "Dieses Feld ist bereits besetzt". Wenn das besagte Feld allerdings mit einem 'O' besetzt ist, wird das O einfach mit einem X überschrieben.
Ich verstehe nicht ganz warum, weil meine Fehlerabfrage ist so gewollt:
Wenn das Feld[beliebigeZahl] mit einem X oder O besetzt ist, dann fordere den Spieler dazu auf, eine andere Zahl anzugeben - gehe erst weiter wenn auf ein Feld gesetzt wurde, wo kein O und kein X stehen.
2)
Ich bin Spieler1 und habe somit die 'X'se.
Ich gebe wieder eine korrekte Zahl ein, mein X wird gesetzt.
Nächste Runde gebe ich die gleiche Zahl ein, Fehlermeldung: "Dieses Feld ist bereits besetzt". Und wenn ich jetzt eine Zahl unter 1 oder über 10 eingebe, dann kommt es zu einem Fehler:
Habe auch mal versucht, das Ganze in eine do-while und nicht in zwei verschachtelte do-while Schleifen zu packen, das hat aber zu einem Desaster geführt.
Wenn jmd einen einfacheren, bzw. unkomplizierteren Weg hat oder kennt, dann freue ich natürlich über jede Anregung.
Ansonsten hoffe, dass ich meine Probleme deutlich gemacht habe, wenn noch Fragen offen sind, einfach Fragen.
Wen jmd. den kompletten (nicht funktionierenden ^^) Quellcode vom TicTacToe-Programm haben will, kann ich den selbstverständlich noch posten.
Grüße
micha
ich sitze gerade an meiner Schulaufgabe (ein TicTacToe-Spiel mit C# zu programmieren) und komme nicht weiter.
Bevor ich zu meinen zwei Problemen komme, erkläre ich eben das Prinzip meines TicTacToe-Spiels:
Es wird ein Eindimensionaler-Array für das "Spielfeld" erzeugt, das Spielfeld besteht aus Zahlen von 1-9. Wenn ich jetzt z.B. eine 5 eingebe, wird das Spielfeld aktualisiert und wo vorher die 5 stand, steht nun ein X bzw. ein O.
Hier ist erstmal der Code und dann erläutere ich meine Probleme.
Code:
do
{
if (i >= 10 || i <= 0)
{
Console.WriteLine("Spieler1: Gib eine Zahl von 1 - 9:");
i = Convert.ToInt32(Console.ReadLine());
}
do
{
if (spielfeld[i] == 'O' || spielfeld[i] == 'X')
{
Console.WriteLine("Dieses Feld ist bereits besetzt, bitte suche dir ein anderes aus.");
Console.WriteLine("Spieler1: Gib eine Zahl von 1 - 9:");
i = Convert.ToInt32(Console.ReadLine());
}
}
while (spielfeld[i] == 'O' || spielfeld[i] == 'X');
}
while(i >= 10 || i <= 0);
Das soll eign. mein Code sein, der eine Abfrage macht, ob die Zahl die eingeben wurde unter 1 oder über 10 ist und prüft, ob das Feld mit einem 'X' oder einem 'O' besetzt ist.
Also ich habe zwei Probleme in dem Code:
1)
Also ich bin Spieler1 und habe somit die 'X'se.
Wenn ich eine korrekte Zahl (also zwischen 1-9) eingebe, aber das Feld mit einem X besetzt ist, dann kommt die erwünschte Fehlermeldung: "Dieses Feld ist bereits besetzt". Wenn das besagte Feld allerdings mit einem 'O' besetzt ist, wird das O einfach mit einem X überschrieben.
Ich verstehe nicht ganz warum, weil meine Fehlerabfrage ist so gewollt:
Wenn das Feld[beliebigeZahl] mit einem X oder O besetzt ist, dann fordere den Spieler dazu auf, eine andere Zahl anzugeben - gehe erst weiter wenn auf ein Feld gesetzt wurde, wo kein O und kein X stehen.
2)
Ich bin Spieler1 und habe somit die 'X'se.
Ich gebe wieder eine korrekte Zahl ein, mein X wird gesetzt.
Nächste Runde gebe ich die gleiche Zahl ein, Fehlermeldung: "Dieses Feld ist bereits besetzt". Und wenn ich jetzt eine Zahl unter 1 oder über 10 eingebe, dann kommt es zu einem Fehler:
Was auch immer das heißen soll ?!IndexOutOfRangeException wurde nicht behandelt.
Der Index war außerhalb des Arraybereichs.
Habe auch mal versucht, das Ganze in eine do-while und nicht in zwei verschachtelte do-while Schleifen zu packen, das hat aber zu einem Desaster geführt.
Wenn jmd einen einfacheren, bzw. unkomplizierteren Weg hat oder kennt, dann freue ich natürlich über jede Anregung.
Ansonsten hoffe, dass ich meine Probleme deutlich gemacht habe, wenn noch Fragen offen sind, einfach Fragen.
Wen jmd. den kompletten (nicht funktionierenden ^^) Quellcode vom TicTacToe-Programm haben will, kann ich den selbstverständlich noch posten.
Grüße
micha