Head First JAVA: 05. Chapter - Kamil-Jankowski/Learning-JAVA GitHub Wiki

Head First JAVA: 5. Chapter

Statki:

public class Gra {
    public static void main(String[] args) {
        int iloscRuchow = 0;

        PomocnikGry pomocnik = new PomocnikGry();

        ProstyPortal portal = new ProstyPortal();

        int liczbaLosowa = (int)(Math.random()*5);

        int[] polozenie = {liczbaLosowa, liczbaLosowa+1, liczbaLosowa+2};
        portal.setPolaPolozenia(polozenie);
        boolean czyIstnieje = true;

        while (czyIstnieje == true) {
            String pole = pomocnik.pobierzDaneWejsciowe("Podaj liczbę");
            String wynik = portal.sprawdz(pole);
            iloscRuchow++;

            if (wynik.equals("Trafiony zatopiony!")) {
                czyIstnieje = false;
                System.out.println(iloscRuchow + " ruchów");
            }
        }
    }
}
import java.io.*;

public class PomocnikGry {

    public String pobierzDaneWejsciowe(String komunikat) {
        String wierszWejsciowy = null;
        System.out.print(komunikat + " ");
        try {
            BufferedReader sw = new BufferedReader(new InputStreamReader(System.in));
            wierszWejsciowy = sw.readLine();
            if (wierszWejsciowy.length() == 0) return null;
        }
        catch(IOException e) {
            System.out.println("IOException: " + e);
        }
        return wierszWejsciowy;
    }
}
public class ProstyPortal {

    //ZADEKLARUJ tablicę typu int przechowującą położenia komórek. Nazwij ją polePolozenia.
    private int[] polaPolozenia;

    //ZADEKLARUJ zmienną typu int przechowującą ilość trafień. Nazwij ją iloscTrafien, PRZYPISZ jej wartość 0.
    private int iloscTrafien;

    //ZADEKLARUJ metodę ustawiającą setPolePolozenia() wymagająca podania tablicytypu int
    //(posiadającej trzy komórki zawierające liczby całkowite typu int, na przykład: 1, 2, 3).
    public void setPolaPolozenia (int[] ppol){
        polaPolozenia = ppol;
    }

    //ZADEKLARUJ metodę sprawdz() wymagającą podania łańcucha znaków (obiektu String)
    //określającego pole wiersza wskazane przez użytkownika (na przykład "1" lub "3" itd.).
    //Metoda sprawdza wskazane pole i zwraca wynik reprezentujący "trafienie", "pudło" lub "zatopienie".
    public String sprawdz(String stringPole){
        int strzal = Integer.parseInt(stringPole);
        String wynik = "Pudło!";
        for (int pole : polaPolozenia){
            //PORÓWNAJ pole wskazane przez gracza polami położenia
            if (strzal == pole){
                wynik = "Trafiony!";
                iloscTrafien++;
                // usunąć trafone pole z tablicy ppol
                break;
            }
        }
        if (iloscTrafien == polaPolozenia.length){
            wynik = "Trafiony zatopiony!";
        }
        System.out.println(wynik);
        return wynik;
    }
}
public class ProstyPortalTester {

    public static void main(String[] args) {
        ProstyPortal wit = new ProstyPortal();

        int[] polozenia = {2,3,4};

        wit.setPolaPolozenia(polozenia);

        String wybranePole = "2";

        String wynik = wit.sprawdz(wybranePole);

//        String wynikTestu = "Niepowodzenie";
//        if (wynik.equals("trafiony")){
//            wynikTestu = "Zakończony pomyślnie";
//        }
//        System.out.println(wynikTestu);
    }
}