• 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,096 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 329 wizyt
pytanie zadane 10 września 2016 w Java przez Jonki Dyskutant (8,180 p.)
0 głosów
3 odpowiedzi 1,461 wizyt

93,426 zapytań

142,421 odpowiedzi

322,647 komentarzy

62,787 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...