Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package granalaby;
- import java.io.*;
- //import java.lang.reflect.GenericArrayType;
- class Stan {
- private int x; // pozycja biezaca
- private int y;
- private int popX; // pozycja poprzednia
- private int popY;
- public int sciemnienie;
- void wPrawo() {
- popX = x;
- popY = y;
- x++;
- }
- void wLewo() {
- popX = x;
- popY = y;
- x--;
- }
- void wGore() {
- popY = y;
- popX = x;
- y++;
- }
- void wDol() {
- popY = y;
- popX = x;
- y--;
- }
- private int punkty; // punktacja
- boolean koniec = false; // koniec = true gdy osiagnieto
- // pole wyjsciowe i gracz chce skonczyc
- public int getPunkty() {
- return punkty;
- }
- public void setPunkty(int punkty) {
- this.punkty = punkty;
- }
- int x() {
- return x;
- }
- int y() {
- return y;
- }
- void wroc() {
- x = popX;
- y = popY;
- } // powrot na poprzednia pozycje
- void sciemnij() {
- sciemnienie += 5;
- }
- String opis() {
- if (sciemnienie == 0) {
- sciemnienie--;
- return "sciemnienie";
- }
- else
- return "(" + x + "," + y + ") " + punkty + "punktow\n";
- }
- // podaje: x,y, punkty
- // UZUPELNIC EWENTUALNIE O WIECEJ POTRZEBNYCH METOD
- Stan(int xPocz, int yPocz, int pPocz) {
- x = xPocz;
- y = yPocz;
- punkty = pPocz;
- }
- }
- abstract class Pole {
- static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- static char czytajZnak() {
- // czyta jeden znak z klawiatury, pomija znak konca linii
- int c = '\0';
- try {
- String linia = br.readLine(); // czytanie 1 linijki z klawiatury
- if (linia.length() > 0)
- c = linia.charAt(0); // pobranie jednego znaku
- } catch (IOException e) {
- }
- return (char) c;
- }
- abstract String komentarz();
- // daje napis zawierajacy komentarz charakterystyczny dla danego pola
- void ruch(Stan s) {
- // "ruch" modyfikuje stan s zgodnie z regulami danego pola
- System.out.print(komentarz());
- System.out.println(s.opis());
- System.out.print(" jaki ruch? [g,d,l,p]");
- switch (czytajZnak()) {
- case 'g':
- s.wGore();
- break;
- case 'd':
- s.wDol();
- break;
- case 'l':
- s.wLewo();
- break;
- case 'p':
- s.wPrawo();
- break;
- case 'y':
- s.koniec = true;
- break;
- case 'n':
- break;
- }
- }
- }
- class Sciana extends Pole {
- String komentarz() { // wypisuje komentarz i wraca na poprzednie miejsce, odejmuje jeden punkt
- return "sciana! ";
- }
- void ruch(Stan s) {
- s.wroc();
- super.ruch(s);
- s.setPunkty(s.getPunkty() - 1); // zmniejsz punkty
- }
- }
- class ZwyklePole extends Pole {
- String komentarz() { // jak Pole, ponadto powinna odejmowac jeden punkt
- return "Zwykle pole";
- }
- void ruch(Stan s) {
- super.ruch(s);
- s.setPunkty(s.getPunkty() - 1); // zmniejsz punkty
- }
- }
- class Wyjscie extends Pole { // oferuje mozliwosc zakonczenia gry, a jezeli nie konczymy, to tak jak Pole
- String komentarz() {
- return "Wyjscie. Zakonczyc? (y/n): \n";
- }
- void ruch(Stan s) {
- super.ruch(s);
- }
- }
- class PolePremia extends Pole {
- String komentarz() {
- return "Pole premia! Dostajesz 3 pkt\n";
- }
- void ruch(Stan s) {
- super.ruch(s);
- s.setPunkty(s.getPunkty() + 3);
- }
- }
- class Sciemnij extends Pole {
- String komentarz() {
- return "Pole sciemniajace";
- }
- void ruch(Stan s) {
- s.sciemnij();
- super.ruch(s);
- s.setPunkty(s.getPunkty() - 1); // zmniejsz punkty
- }
- }
- class Gra {
- public static void main(String[] a) {
- // inicjalizacja "jaskini"
- int i, j;
- int rozmiar = 10;
- Pole[][] jaskinia = new Pole[rozmiar][rozmiar];
- for (i = 0; i < rozmiar; i++)
- for (j = 0; j < rozmiar; j++) {
- if (i == 0 || i == rozmiar - 1 || j == 0 || j == rozmiar - 1)
- jaskinia[i][j] = new Sciana();
- else if (i == 5 && j == 5)
- jaskinia[i][j] = new Wyjscie();
- else if (i == 2 && j == 4)
- jaskinia[i][j] = new PolePremia();
- else if (i == 4 && j == 6)
- jaskinia[i][j] = new Sciemnij();
- else
- jaskinia[i][j] = new ZwyklePole();
- }
- // gra wlasciwa
- Stan s = new Stan(3, 3, 10);
- while (!s.koniec) {
- (jaskinia[s.x()][s.y()]).ruch(s);
- // for (i = 0; i < rozmiar; i++) {
- // for (j = 0; j < rozmiar; j++) {
- // if (i == 0 || i == rozmiar - 1 || j == 0 || j == rozmiar - 1)
- // System.out.print('S');
- // else if (i == 5 && j == 5)
- // System.out.print('W');
- // else if (i == 2 && j == 4)
- // System.out.print('P');
- // else if (i == 4 && j == 6)
- // System.out.print('X');
- // else if (i == s.x() && j == s.y())
- // System.out.print('G');
- // else
- // System.out.print(' ');
- // }
- // System.out.println(' ');
- // }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement