Stworzyłem grę kółko i krzyżyk ale mam problem i główkuje nad nim i nie mam pojęcia jak to poprawić otóż:
- Gra pyta tylko o położenie 1 znaku na planszy i dalej się zacina.
- Nie pokazuje planszy z dotychczasowymi wstawionymi znakami.
Proszę o pomoc mój kod:
////////// Ruch
public class Ruch {
private char znak;
private Punkt punkt;
public Ruch (char znak, Punkt punkt){
this.znak=znak;
this.punkt=punkt;
}
char getZnak(){
return this.znak;
}
public String toString() {
return ("Znak: " +znak+" Punkt: "+punkt);
}
Punkt getPunkt(){
return this.punkt;
}
}
/////////////// punkt
public class Punkt {
private int x;
private int y;
public Punkt(int x, int y) {
this.x = x;
this.y = y;
}
// toString, getX, getY
public int getX() {
return this.x;
}
public int getY() {
return this.y;
}
public String toString(){
return("Wspolrzedne punktu to:"+this.x+"oraz"+this.y);
}
// wyzeruj, przesuń
void wyzeruj(){
this.x=0;
this.y=0;
}
void przesun(int m){
this.x=this.x+m;
this.y=this.y+m;
}
//wyzszy, na prawo
boolean czyWyzszy(Punkt punkt){
if (this.x>punkt.x){
return false; } else {
return true;
}
}
boolean naPrawo(Punkt punkt){
if (this.y>punkt.y){
return false; } else {
return true;
}
}
}
klasa plansza ////////////////
public class Plansza {
int[][] pola = { { '-', 'O', 'X' }, { 'O', 'X', '-' }, { 'X', '-', 'O' } };
int liczbaWolnychPol;
public Plansza(int[][] pola) {
this.pola = new int[3][3];
for (int i = 0; i < pola.length; i++) {
for (int j = 0; j < pola.length; j++) {
this.pola[i][j] = '-';
}
}
}
public String toString() {
return ("Aktualny stan gry:" +pola);
}
boolean koniec() {
if (pola[0][0] == 'O' && pola[0][1] == 'O' && pola[0][2] == 'O'
|| pola[0][0] == 'X' && pola[0][1] == 'X' && pola[0][2] == 'X'
|| pola[1][0] == 'O' && pola[1][1] == 'O' && pola[1][2] == 'O'
|| pola[1][0] == 'X' && pola[1][1] == 'X' && pola[1][2] == 'X'
|| pola[2][0] == 'O' && pola[2][1] == 'O' && pola[2][2] == 'O'
|| pola[2][0] == 'X' && pola[2][1] == 'X' && pola[2][2] == 'X'
|| pola[0][0] == 'O' && pola[1][0] == 'O' && pola[2][0] == 'O'
|| pola[0][0] == 'X' && pola[1][0] == 'X' && pola[2][0] == 'X'
|| pola[0][1] == 'O' && pola[1][1] == 'O' && pola[2][1] == 'O'
|| pola[0][1] == 'X' && pola[1][1] == 'X' && pola[2][1] == 'X'
|| pola[0][2] == 'O' && pola[1][2] == 'O' && pola[2][2] == 'O'
|| pola[0][2] == 'X' && pola[1][2] == 'X' && pola[2][2] == 'X'
|| pola[2][0] == 'O' && pola[1][1] == 'O' && pola[0][2] == 'O'
|| pola[2][0] == 'X' && pola[1][1] == 'X' && pola[0][2] == 'X'
|| pola[0][0] == 'O' && pola[1][1] == 'O' && pola[2][2] == 'O'
|| pola[0][0] == 'X' && pola[1][1] == 'X' && pola[2][2] == 'X') {
return true;
}
return false;
}
boolean remis() {
if (koniec()==false && this.pola[3][3]!='-'){
return true;
} else {
return false;
}}
boolean remis2(){
if(koniec()==false && this.pola[3][3]>8)
return true;
else return false;
}
boolean mozliwyRuch(Ruch ruch) {
if (ruch.getPunkt()!=null){ //&& wygrana()==false){
return true;
} else {
return false;
}
}
char wykonaj(Ruch ruch){
ruch.getPunkt();
return ruch.getZnak();
}
}
///////////////// klasa gra
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;
public class Gra {
Plansza plansza;
char ostatniZnak;
public Gra (Plansza plansza){
this.plansza=plansza;
int[][] pl=new int[3][3];
plansza=new Plansza(pl);
int i=0;
}
public String toString() {
return ("Aktualny stan gry:" +plansza);
}
static char losujZnak(int i){
if (i==1){
return 'X';
} else if (i==2){
return 'O';
} else {
return 'E';
}
}
public static void main(String[] args){
//Punkt pkt = new Punkt(1,1);
Punkt pkt=new Punkt (1, 1);
Ruch r = new Ruch('A', pkt);
int[][] pl=new int[3][3];
Plansza plansza=new Plansza(pl);
Gra g = new Gra(plansza);
g.losujZnak(2);
int i=0;
try
{
char c;
BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
int m=0;
do
{
m++;
System.out.println("Zaczyna znak -- " +g.losujZnak(2));
//plansza.wygrana();
plansza.mozliwyRuch(r);
g.toString();
plansza.remis();
plansza.koniec();
g.ktoryZnak();
System.out.println("Podaj x.");
c = (char) br1.read();
int p1 = Integer.parseInt(String.valueOf(c));
System.out.println("Podaj y.");
c = (char) br2.read();
int p2 = Integer.parseInt(String.valueOf(c));
g.toString();
System.out.println("Punkt : (" + p1+","+p2+")");
g.toString();
} while(plansza.koniec()==true || plansza.remis()==true );
}catch(Exception e)
{}
}
void ktoryZnak() {
int i=0;
while (i<10){
if(i % 2 == 0){
System.out.println ("Teraz:" );
Gra.losujZnak(2);
} else {
System.out.println ("Teraz:" );
Gra.losujZnak(1);
}
i++;}
}
}