• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kółko i krzyżyk dla początkujących -zapełnianie tablicy

0 głosów
1,273 wizyt
pytanie zadane 7 marca 2020 w Java przez marzena12345 Użytkownik (770 p.)

Witam, napisałam prostą grę w kółko i krzyżyk, na początku losujemy który gracz zaczyna, następnie określając miejsca na planszy zapełniamy tablicę dwuwymiarową. Wszystko działa jak należy, natomiast chciałabym to zmodyfikować tak, że jeżeli ktoś poda lokalizację, która padła już wcześniej w danej grze, program tego nie przepuści i zakomunikuje, że ta lokalizacją jest już zajęta, i da nową szansę na podanie lokalizacji.
Proszę o pomysły lub pomoc w związku z powyższym, wszelkie opinie dotyczące kodu również mile widziane.  

Pozdrawiam 

package pl.com.marzena.first;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        TicTacToe ticTacToe = new TicTacToe();
        System.out.println("Zaczyna gracz: " + ticTacToe.getPlayer());
        Scanner scan = new Scanner(System.in);

        char[][] game = new char[3][3];
        int horizontal;
        int vertical;

        for (int i = 0; i <= 9; i++) {
            System.out.println("Gracz numer: " + ticTacToe.getPlayer() + " -krzyżyk. Podaj lokalizację");
            horizontal = scan.nextInt();
            vertical = scan.nextInt();
            game[horizontal][vertical] = 'X';

            System.out.println(game[0][0] + "|" + game[0][1] + "|" + game[0][2]);
            System.out.println("-+-+-");
            System.out.println(game[1][0] + "|" + game[1][1] + "|" + game[1][2]);
            System.out.println("-+-+-");
            System.out.println(game[2][0] + "|" + game[2][1] + "|" + game[2][2]);
            boolean b = game[0][0] == 'X' && game[0][1] == 'X' && game[0][2] == 'X';
            boolean c = game[1][0] == 'X' && game[1][1] == 'X' && game[1][2] == 'X';
            boolean d = game[2][0] == 'X' && game[2][1] == 'X' && game[2][2] == 'X';
            boolean e = game[0][0] == 'X' && game[1][0] == 'X' && game[2][0] == 'X';
            boolean f = game[0][1] == 'X' && game[1][1] == 'X' && game[2][1] == 'X';
            boolean g = game[0][2] == 'X' && game[1][2] == 'X' && game[2][2] == 'X';
            boolean h = game[0][0] == 'X' && game[1][1] == 'X' && game[2][2] == 'X';
            boolean j = game[0][2] == 'X' && game[1][1] == 'X' && game[2][0] == 'X';
            if (winner(b, c, d, e, f, g, h, j)) {
                System.out.println("Wygrał gracz"+ ticTacToe.getPlayer());
                System.exit(0);
            }
            int secondPlayer;
            if(ticTacToe.getPlayer()==1){
                secondPlayer=2;
            }else{
                secondPlayer=1;
            }
            System.out.println("Gracz numer: "+secondPlayer+" -kółko. Podaj lokalizację");
            horizontal = scan.nextInt();
            vertical = scan.nextInt();
            game[horizontal][vertical] = 'O';
            System.out.println(game[0][0] + "|" + game[0][1] + "|" + game[0][2]);
            System.out.println("-+-+-");
            System.out.println(game[1][0] + "|" + game[1][1] + "|" + game[1][2]);
            System.out.println("-+-+-");
            System.out.println(game[2][0] + "|" + game[2][1] + "|" + game[2][2]);
            boolean bo = game[0][0] == 'O' && game[0][1] == 'O' && game[0][2] == 'O';
            boolean co = game[1][0] == 'O' && game[1][1] == 'O' && game[1][2] == 'O';
            boolean od = game[2][0] == 'O' && game[2][1] == 'O' && game[2][2] == 'O';
            boolean eo = game[0][0] == 'O' && game[1][0] == 'O' && game[2][0] == 'O';
            boolean fo = game[0][1] == 'O' && game[1][1] == 'O' && game[2][1] == 'O';
            boolean go = game[0][2] == 'O' && game[1][2] == 'O' && game[2][2] == 'O';
            boolean ho = game[0][0] == 'O' && game[1][1] == 'O' && game[2][2] == 'O';
            boolean jo = game[0][2] == 'O' && game[1][1] == 'O' && game[2][0] == 'O';
            if (winner(bo, co, od, eo, fo, go, ho, jo)) {
                System.out.println("Wygrał gracz:"+secondPlayer);
                System.exit(0);
            }
        }

    }

    private static boolean winner(boolean b, boolean c, boolean d, boolean e, boolean f, boolean g, boolean h, boolean j) {
        return b == true || c == true || d == true || e == true || f == true || g == true || h == true || j == true;
    }
}

 

1 odpowiedź

0 głosów
odpowiedź 8 marca 2020 przez Patryk L Bywalec (2,000 p.)
Po kliknięciu w jakieś pole, przed wstawieniem znaku po prostu sprawdź czy game[x][y] jest puste

Podobne pytania

0 głosów
2 odpowiedzi 409 wizyt
pytanie zadane 10 września 2016 w Java przez Jonki Dyskutant (8,180 p.)
0 głosów
3 odpowiedzi 1,627 wizyt

93,732 zapytań

142,669 odpowiedzi

323,287 komentarzy

63,293 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...