Tic Tac Toe Console Application C# nachdem ein Feld besetzt wurde soll das nicht mehr benutzt werden können, wie?


28.07.2022, 11:41

ich habe überlegt dass ich erstmal den Input vom Spieler nehme und nach dem Input einen for loop starte der erstmal den Array durchläuft und mit der .Contains Methode überprüft ob es schon den Wert "X" oder "O" hat.


28.07.2022, 11:42
                        choice1 = Int32.Parse(Console.ReadLine());

                        if(choice1 == 1 && playerOneTurn == true)
                        {
                            gameGrid.gamegrid[0, 0] = "X";


                            playerOneTurn = false;
                            playerTwoTurn = true;
                        }

So ändere ich den array.

2 Antworten

Für die Auswertung hast ja sicher einen Array mit Daten drin.

Wenn das gewähle Array Feld also schon Daten enthält, blocke den Input oder gebe einen Fehler zurück.

Woher ich das weiß:Berufserfahrung

hilfebitte393 
Beitragsersteller
 28.07.2022, 11:33

Das Array enthält halt von Anfang an schon Daten.

        public string[,] gamegrid =
        {
            {"1", "2", "3"},
            {"4", "5", "6"},
            {"7", "8", "9"}
        };
0
OctoMan  28.07.2022, 20:21
@hilfebitte393

Warum denn das? 1-9 sollten doch leer sein? bzw. Gefüllt mit X oder O während des Spielens?

0
hilfebitte393 
Beitragsersteller
 29.07.2022, 13:43
@OctoMan

Das ist scheinbar egal.

Ich habe es so versucht, aber es klappt nicht ganz. Es klappt zwar, aber diese Nachricht wird nie ausgeführt:

        void CheckSpotP1(int x, int y)
        {
            if(gameGrid.gamegrid[x,y].Equals("X") || gameGrid.gamegrid[x,y].Equals("O"))
            {
                System.Console.WriteLine("This spot is already occupied, try again.");
            }
            else
            {
                gameGrid.gamegrid[x, y] = "X";


                playerOneTurn = false;
                playerTwoTurn = true;
                plays++;
            }      
        }
0
OctoMan  29.07.2022, 15:42
@hilfebitte393

Debugge dochmal, ob die Funktion überhaupt aufgerufen wird, und in welcher Bedingung.

0
hilfebitte393 
Beitragsersteller
 29.07.2022, 15:58
@OctoMan

Gute Idee, aber ich hab auch so herausgefunden wieso. Jedes mal nachdem ein Zeichen gesetzt wurde wird die Konsole geleert und deswegen sieht man die Nachricht einfach nicht. Ich gehe dir jetzt nicht mehr auf dem Sack, danke für die Hilfe und schönen Tag noch :)

0