Cześć,
chcę stworzyć prostą grę w statki. Plansza to kwadrat o bokach A-G na 0-6, gra ma na celu zatopienie trzech statków, z którego każdy zajmuje trzy komórki (np. C3,C4,C5). Użytkownik podaje swoje strzały w wierszu poleceń, następnie jego strzał porównywany jest z komórkami, na których usytuowane są statki. Przebieg gry kończy się podaniem komunikatu o wygranej oraz ilości wykonanych ruchów. Do pobrania danych wejściowych użytkownika używam klasy Scanner. Stworzyłam dwie klasy - 1) Gra, w której toczy się cały przebieg gry oraz 2)Statek, której głównym zadaniem jest ustawienie położenia poszczególnych statków na planszy oraz sprawdzenie czy statek został "trafiony".
Pojawiają się następujące błędy:
$javac Gra.java
Gra.java:14: error: illegal start of expression
public String getUserInput(){
^
Gra.java:14: error: ';' expected
public String getUserInput(){
^
Powyższe komunikaty raczej nie pomogą w rozwiązaniu problemu, bo w wierszu 14 nie może chodzić o zamknięcie wiersza. Nie wiem czy źle używam klasy Scanner, czy nie rozumiem do końca działania moich klas, jest to mój pierwszy program w javie, proszę pomóżcie.
Poniżej wklejam kod źródłowy:
import java.util.*;
import java.io.*;
public class Gra{
int liczbaRuchow = 0;
boolean statkiZatopione = false;
Statek statek1 = new Statek();
Statek statek2 = new Statek();
Statek statek3 = new Statek();
public void przebiegGry(){
//pobieram dane od gracza, wpisane w konsolę
Scanner pomocnik = new Scanner(System.in);
public String getUserInput(){
return pomocnik.hasNextLine();
}
System.out.println("Zasady gry: Zatopić wszystkie 3 statki, każdy z nich składa się z 3 pól. Plansza A-G x 0-6. Podaj pierwsze pole: ");
String poleOdUzytkownika = getUserInput();
//koniec pobierania danych
while(statkiZatopione == false){
liczbaRuchow++;
String wynik1 = statek1.sprawdz(poleOdUzytkownika);
String wynik2 = statek2.sprawdz(poleOdUzytkownika);
String wynik3 = statek3.sprawdz(poleOdUzytkownika);
if(wynik1 == "zatopiony"){
System.out.println("Statek pierwszy został zatopiony");
}
if(wynik2 == "zatopiony"){
System.out.println("Statek pierwszy został zatopiony");
}
if(wynik3 == "zatopiony"){
System.out.println("Statek pierwszy został zatopiony");
}
if(wynik1 == "zatopiony"&& wynik2 == "zatopiony" && wynik3 == "zatopiony"){
statkiZatopione = true;
break;
}
System.out.println("Podaj kolejne pole");
String poleOdUzytkownika = getUserInput();
}
System.out.printl("Koniec gry, udało Ci się zatopić wszystkie statki. Liczba ruchów = " + liczbaRuchow);
}
public static void main(String[] args){
Gra gra = new Gra();
gra.przebiegGry();
}
}
class Statek{
String wynik = "pudło";
public String sprawdz(String pole){
ArrayList<String> polozenieStatku = new ArrayList<String>();
Random r = new Random();
char randChar = (char) (r.nextInt(7) + 'a'); //randomowa litera z przedziału a-g
int randDigit = Math.rand()*5; //randomowa liczba z zakresu 0-4
for(int i=0; i<3; i++){
polozenieStatku.add(randChar + String.parseString(randDigit));
polozenieStatku.add(randChar + String.parseString(randDigit+1));
polozenieStatku.add(randChar + String.parseString(randDigit+2));
}
while(polozenieStatku.size() != 0){
for(int j=0; j<3; j++){
if(polozenieStatku(i) == pole){
polozenieStatku.remove(i);
System.out.println("trafiony ");
}
}
}
return wynik = "zatopiony";
}
}