Gra kolko i krzyzyk

0

Witam serdecznie. Mam pewien problem uczę się javy i ubzdurałem sobie, że napiszę grę kółko i krzyżyk bez interfejsu graficznego. Tak wygląda to co do tej pory nawydziwiałem:

import java.util.Scanner;

public class KolkoKrzyzyk {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String[ ][ ] tabela = {
	            {"1", "2", "3"},
	            {"4", "5", "6"},
	            {"7", "8", "9"}
	    };
		String krzyzyk = "X";
		String kolko = "O";
		int wybor, kolumna = 0, rzad = 0,i,j;
		boolean koniecGry = true;
		System.out.println("#################################\n"
				+ "# WITAJ W GRZE KÓŁKO I KRZYŻYK! #\n"
				+ "#################################\n");
        for(i=0; i < tabela.length; i++){
            for(j=0; j < tabela.length; j++){	
				System.out.print(" ("+tabela[i][j] + ") " );
			}
			System.out.println( "" );
		}
        System.out.println();
        while(koniecGry){
			System.out.println("KRZYŻYK (X):");
			System.out.print("Wybierz liczbę (1-9): \n");
			wybor = in.nextInt();
				if(wybor == 1){kolumna = 0; rzad = 0;}
				if(wybor == 2){kolumna = 1; rzad = 0;}
				if(wybor == 3){kolumna = 2; rzad = 0;}
				if(wybor == 4){kolumna = 0; rzad = 1;}
				if(wybor == 5){kolumna = 1; rzad = 1;}
				if(wybor == 6){kolumna = 2; rzad = 1;}
				if(wybor == 7){kolumna = 0; rzad = 2;}
				if(wybor == 8){kolumna = 1; rzad = 2;}
				if(wybor == 9){kolumna = 2; rzad = 2;}
			for(i=0; i < tabela.length; i++){
				for(j=0; j < tabela.length; j++){
					tabela[rzad][kolumna] = krzyzyk;
					System.out.print(" ("+tabela[i][j] + ") " );
				}
				System.out.println( "" );
			}


	        System.out.println();
				System.out.println("KÓŁKO (O):");
				System.out.print("Wybierz liczbę (1-9): \n");
				wybor = in.nextInt();
					if(wybor == 1){kolumna = 0; rzad = 0;}
					if(wybor == 2){kolumna = 1; rzad = 0;}
					if(wybor == 3){kolumna = 2; rzad = 0;}
					if(wybor == 4){kolumna = 0; rzad = 1;}
					if(wybor == 5){kolumna = 1; rzad = 1;}
					if(wybor == 6){kolumna = 2; rzad = 1;}
					if(wybor == 7){kolumna = 0; rzad = 2;}
					if(wybor == 8){kolumna = 1; rzad = 2;}
					if(wybor == 9){kolumna = 2; rzad = 2;}

				for(i=0; i < tabela.length; i++){
					for(j=0; j < tabela.length; j++){
						tabela[rzad][kolumna] = kolko;
						System.out.print(" ("+tabela[i][j] + ") " );
					}
					System.out.println( "" );
				}
				System.out.println("");
		}
	}
} 

Wiem, że straszna amatorszczyzna :P. Chodzi mi jednak o poradę, mianowicie chciałbym w jakiś inny sposób zapisać tę część:

 				if(wybor == 1){kolumna = 0; rzad = 0;}
					if(wybor == 2){kolumna = 1; rzad = 0;}
					if(wybor == 3){kolumna = 2; rzad = 0;}
					if(wybor == 4){kolumna = 0; rzad = 1;}
					if(wybor == 5){kolumna = 1; rzad = 1;}
					if(wybor == 6){kolumna = 2; rzad = 1;}
					if(wybor == 7){kolumna = 0; rzad = 2;}
					if(wybor == 8){kolumna = 1; rzad = 2;}
					if(wybor == 9){kolumna = 2; rzad = 2;}

Prawdopodobnie da się to zapisać w pętli ale nie mam zielonego pojęcia jak....

Z góry dziękuję za odpowiedź.

0
kolumna = (wybor-1)%3;
rzad = (wybor-1)/3;

Bez żadnego ifa.
Ale radze to całe przepisać, żeby chociaż używało metod.

2

Przepisz ten kod na wersję taką:

  • plansza ma wymiary NxM
  • wygrywa K jednakowych symboli w rzędzie/kolumnie/po skosie
  • grać może P graczy
    Może wtedy zaczniesz myśleć ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.