• 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

Object Storage Arubacloud
0 głosów
837 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 286 wizyt
pytanie zadane 10 września 2016 w Java przez Jonki Dyskutant (8,180 p.)
0 głosów
3 odpowiedzi 1,345 wizyt

92,584 zapytań

141,434 odpowiedzi

319,670 komentarzy

61,967 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...