americanaccounts - Mi 07.05.08 13:31
Titel: TicTacToe 3 Probleme, Fehlersuche, Schreibweise in Methoden
Hallo,
ich weiß es ist nochmal das TicTacToe-Spiel, aber ich wusste nicht, ob ich meine Fragen nochmal in meinen abgeschlossenen Thread stellen sollte oder hier nochmal einen neuen Thread eröffnen sollte, da es sich um andere Probleme handelt.
Ich komm dann auch zur Sache:
Also mein Code zum Abfragen, ob die Zahl zwischen 1-9 ist und ob das Feld besetzt ist, sieht inzwischen so aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| while (true) { Console.WriteLine("Spieler1: Gib eine Zahl von 1 bis 9 ein:"); i = Convert.ToInt32(Console.ReadLine());
if (i > 9 || i < 1) { Console.WriteLine("Die eingegebene Zahl ist außerhalb des gültigen Bereichs."); continue; }
if (spielfeld[i-1] == 'O' || spielfeld[i-1] == 'X') { Console.WriteLine("Dieses Feld ist bereits besetzt, bitte suche dir ein anderes aus."); continue; }
break; } |
Jetzt wollte ich ganz einfach noch eine Abfrage machen, wann der Spieler1 gewonnen hat, also, dachte ich mir, mach ich das mit 'if'... wenn spielfeldx + spielfeldz +spielfeldy = X sind, dann hat Spieler1 gewonnen.
Sieht bei mir so aus (mit Schleife kombiniert):
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| while (true) { if (((spielfeld[0] == 'X') && (spielfeld[1] == 'X') && (spielfeld[2] == 'X')) || ((spielfeld[3] == 'X') && (spielfeld[4] == 'X') && (spielfeld[5] == 'X')) || ((spielfeld[6] == 'X') && (spielfeld[7] == 'X') && (spielfeld[8] == 'X')) || ((spielfeld[0] == 'X') && (spielfeld[4] == 'X') && (spielfeld[8] == 'X')) || ((spielfeld[2] == 'X') && (spielfeld[4] == 'X') && (spielfeld[6] == 'X'))) { Console.WriteLine("Spieler1 du hast gewonnen!"); break; } } |
Aber das Programm greift einfach nicht ein.
Es wäre als ob die ganze 'if'-Abfrage nicht da wäre...naja deshalb frag ich euch, habe ich einen offentsichtlichen Fehler in meinem Gedankengang oder woran könnte es dann liegen?
Mein zweites Problem ist, dass ich mein komplettes TicTacToe in Methoden schreiben will.
Z.B. gäbs dann die Methode name();
Diese Methode sieht dann so aus, dass nach dem Spielername von Spieler1 und Spieler2 gefragt wird. Die Methode funktioniert auch soweit, sogut, außer dass ich "außerhalb" der Methode die Namen nicht verwenden kann...bzw. nicht weiß wie ich die Namen für das Programm übergeben kann.
Hier das Live-Beispiel:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| public static void name() { string name1; string name2;
Console.WriteLine("Spieler1: Bitte geben Sie Ihren Namen an:"); name1 = Console.ReadLine();
Console.WriteLine("Spieler2: Bitte geben Sie Ihren Namen an:"); name2 = Console.ReadLine();
Console.WriteLine("Hi " + name1 + " und " + name2 + ",\ndas Spiel kann beginnen."); Console.WriteLine("Sie können Zahlen zwischen 1-9 eingeben, wenn Sie z.B. eine 1 drücken, wird die 1 durch ein O oder X ersetzte."); Console.ReadLine(); } |
Die Methode binde ich durch ein
name();
ein.
Aber wenn ich hinter dem name(); z.B. die Variable name1 verwende (in Console.Write("hallo"+ name1);, kommt ein Fehler (weiß jetzt nicht die genaue Fehlermeldung), aber es war soviel, dass die Variable nicht deklariert ist..oder so.
Ich bin mir ziemlich sicher, dass ich i-was mit return machen muss, würde mich daher über eine direkte Berichtigung meines Codes oder einfach mit paar Stichwörtern für Google freuen.
Meine letzte Frage ist eher nebensächlich und nur spielerei, aber wenn ich meinem TicTacToe ein Design verpassen will, wonach muss ich denn googlen. Finde i-wie nichts bei C# Design usw.
Ich bedanke mich für jede Antwort zu i-einer Frage, wobei die erste mir am wichtigsten ist, dann die zweite, dann die dritte.
Lg
Micha
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt