Postanowiłem sobie, że w ramach nauki i ćwiczeń programowania napiszę prostą grę w statki. W tym celu wstępnie stworzyłem 3 metody: metodę przygotowującą grę (setGame()), metodę pobierającą wybór pola przez gracza (gamerChoice()) i metodę sprawdzającą czy trafił czy nie (checkChoice()). Na początku przed przystąpieniem do dalszego pisania chciałem sprawdzić czy wszystko działa jak należy i czy to co stworzyłem ma jakiś sens. Okazało się jednak, że ostatnia metoda nie działa i nie ważne jakie współrzędne się wpiszę zawsze wyświetla, że gracz trafił!. W związku z tym prosiłbym kogoś mądrzejszego i dobrego o pomoc w rozwiązaniu tego problemu, sprawdzeniu czy to co napisałem w ogóle do czegoś się nadaje. Dodam jeszcze, że dopiero co zaczynam naukę programowania więc proszę o wyrozumiałość ;) Z góry dziękuje za poświęcony czas, pomoc i odpowiedź :).
Poniżej kod klasy z metodami:
import java.util.Random;
import java.util.Scanner;
public class BattleShip {
Random random = new Random();
public int i,j;
int[][] matrix = new int[10][10];
int ship1[] = new int[3];
// metoda ustawiajaca na planszy jeden statek zajmujacy 3 pola
public void setGame() {
i = random.nextInt(10);
j = random.nextInt(10);
if(i == 8 | i == 9 & j != 8 | j != 9) {
matrix[i][j] = ship1[0];
System.out.println("tabela["+i+"]["+j+"]");
j++;
matrix[i][j] = ship1[1];
System.out.println("tabela["+i+"]["+j+"]");
j++;
matrix[i][j] = ship1[2];
System.out.println("tabela["+i+"]["+j+"]");
} else if(j == 8 | j == 9 & i != 8 | i != 9) {
matrix[i][j] = ship1[0];
System.out.println("tabela["+i+"]["+j+"]");
i++;
matrix[i][j] = ship1[1];
System.out.println("tabela["+i+"]["+j+"]");
i++;
matrix[i][j] = ship1[2];
System.out.println("tabela["+i+"]["+j+"]");
} else if(i == 8 | i == 9 & j == 8 | j == 9) {
int x = random.nextInt(1);
if(x == 0) {
matrix[i][j] = ship1[0];
System.out.println("tabela["+i+"]["+j+"]");
i--;
matrix[i][j] = ship1[1];
System.out.println("tabela["+i+"]["+j+"]");
i--;
matrix[i][j] = ship1[2];
System.out.println("tabela["+i+"]["+j+"]");
} else {
matrix[i][j] = ship1[0];
System.out.println("tabela["+i+"]["+j+"]");
j--;
matrix[i][j] = ship1[1];
System.out.println("tabela["+i+"]["+j+"]");
j--;
matrix[i][j] = ship1[2];
System.out.println("tabela["+i+"]["+j+"]");
}
} else {
matrix[i][j] = ship1[0];
System.out.println("tabela["+i+"]["+j+"]");
i++;
matrix[i][j] = ship1[1];
System.out.println("tabela["+i+"]["+j+"]");
i++;
matrix[i][j] = ship1[2];
}
gamerChoice(); // wywoluje metode proszaca gracza o wybranie pol
}
public int tab1Choice, tab2Choice;
void gamerChoice() {
Scanner read1 = new Scanner(System.in);
System.out.print("Wspolrzedna tablicy pionowej: ");
tab1Choice = read1.nextInt();
Scanner read2 = new Scanner(System.in);
System.out.print("\t, a teraz poziomej: ");
tab2Choice = read2.nextInt();
checkChoice(tab1Choice, tab2Choice);
}
// metoda sprawdzająca wybór gracza
int choice1, choice2;
public void checkChoice(int a, int b) {
a = choice1;
b = choice2;
if(matrix[choice1][choice2] == ship1[0] |
matrix[choice1][choice2] == ship1[1] |
matrix[choice1][choice2] == ship1[2]) {
int hitNumber1 = 0;
System.out.println("Trafiony!");
hitNumber1++;
if(hitNumber1 == 3) System.out.println("Zatopiony!");
} else {
System.out.print("Pudło!");
}
}
}
A oto kod klasy testującej:
public class BattleShipDemo {
public static void main(String[] args) {
BattleShip gamer = new BattleShip();
gamer.setGame();
}
}