Advertisement
Guest User

Untitled

a guest
Nov 14th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.60 KB | None | 0 0
  1. package granalaby;
  2.  
  3. import java.io.*;
  4. //import java.lang.reflect.GenericArrayType;
  5.  
  6. class Stan {
  7. private int x; // pozycja biezaca
  8. private int y;
  9. private int popX; // pozycja poprzednia
  10. private int popY;
  11. public int sciemnienie;
  12.  
  13. void wPrawo() {
  14. popX = x;
  15. popY = y;
  16. x++;
  17. }
  18.  
  19. void wLewo() {
  20. popX = x;
  21. popY = y;
  22. x--;
  23. }
  24.  
  25. void wGore() {
  26. popY = y;
  27. popX = x;
  28. y++;
  29. }
  30.  
  31. void wDol() {
  32. popY = y;
  33. popX = x;
  34. y--;
  35. }
  36.  
  37. private int punkty; // punktacja
  38. boolean koniec = false; // koniec = true gdy osiagnieto
  39. // pole wyjsciowe i gracz chce skonczyc
  40.  
  41. public int getPunkty() {
  42. return punkty;
  43. }
  44.  
  45. public void setPunkty(int punkty) {
  46. this.punkty = punkty;
  47. }
  48.  
  49. int x() {
  50. return x;
  51. }
  52.  
  53. int y() {
  54. return y;
  55. }
  56.  
  57. void wroc() {
  58. x = popX;
  59. y = popY;
  60. } // powrot na poprzednia pozycje
  61.  
  62. void sciemnij() {
  63. sciemnienie += 5;
  64. }
  65.  
  66. String opis() {
  67. if (sciemnienie == 0) {
  68. sciemnienie--;
  69. return "sciemnienie";
  70. }
  71. else
  72. return "(" + x + "," + y + ") " + punkty + "punktow\n";
  73. }
  74.  
  75. // podaje: x,y, punkty
  76. // UZUPELNIC EWENTUALNIE O WIECEJ POTRZEBNYCH METOD
  77. Stan(int xPocz, int yPocz, int pPocz) {
  78. x = xPocz;
  79. y = yPocz;
  80. punkty = pPocz;
  81. }
  82. }
  83.  
  84. abstract class Pole {
  85. static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  86.  
  87. static char czytajZnak() {
  88. // czyta jeden znak z klawiatury, pomija znak konca linii
  89. int c = '\0';
  90. try {
  91. String linia = br.readLine(); // czytanie 1 linijki z klawiatury
  92. if (linia.length() > 0)
  93. c = linia.charAt(0); // pobranie jednego znaku
  94. } catch (IOException e) {
  95. }
  96. return (char) c;
  97. }
  98.  
  99. abstract String komentarz();
  100. // daje napis zawierajacy komentarz charakterystyczny dla danego pola
  101.  
  102. void ruch(Stan s) {
  103. // "ruch" modyfikuje stan s zgodnie z regulami danego pola
  104. System.out.print(komentarz());
  105. System.out.println(s.opis());
  106. System.out.print(" jaki ruch? [g,d,l,p]");
  107. switch (czytajZnak()) {
  108. case 'g':
  109. s.wGore();
  110. break;
  111. case 'd':
  112. s.wDol();
  113. break;
  114. case 'l':
  115. s.wLewo();
  116. break;
  117. case 'p':
  118. s.wPrawo();
  119. break;
  120. case 'y':
  121. s.koniec = true;
  122. break;
  123. case 'n':
  124. break;
  125. }
  126. }
  127. }
  128.  
  129. class Sciana extends Pole {
  130.  
  131. String komentarz() { // wypisuje komentarz i wraca na poprzednie miejsce, odejmuje jeden punkt
  132. return "sciana! ";
  133. }
  134.  
  135. void ruch(Stan s) {
  136. s.wroc();
  137. super.ruch(s);
  138. s.setPunkty(s.getPunkty() - 1); // zmniejsz punkty
  139. }
  140. }
  141.  
  142. class ZwyklePole extends Pole {
  143.  
  144. String komentarz() { // jak Pole, ponadto powinna odejmowac jeden punkt
  145. return "Zwykle pole";
  146. }
  147.  
  148. void ruch(Stan s) {
  149. super.ruch(s);
  150. s.setPunkty(s.getPunkty() - 1); // zmniejsz punkty
  151. }
  152. }
  153.  
  154. class Wyjscie extends Pole { // oferuje mozliwosc zakonczenia gry, a jezeli nie konczymy, to tak jak Pole
  155.  
  156. String komentarz() {
  157. return "Wyjscie. Zakonczyc? (y/n): \n";
  158. }
  159.  
  160. void ruch(Stan s) {
  161. super.ruch(s);
  162. }
  163.  
  164. }
  165.  
  166. class PolePremia extends Pole {
  167. String komentarz() {
  168. return "Pole premia! Dostajesz 3 pkt\n";
  169. }
  170.  
  171. void ruch(Stan s) {
  172. super.ruch(s);
  173. s.setPunkty(s.getPunkty() + 3);
  174. }
  175.  
  176. }
  177.  
  178. class Sciemnij extends Pole {
  179. String komentarz() {
  180. return "Pole sciemniajace";
  181. }
  182.  
  183. void ruch(Stan s) {
  184. s.sciemnij();
  185. super.ruch(s);
  186. s.setPunkty(s.getPunkty() - 1); // zmniejsz punkty
  187. }
  188. }
  189.  
  190. class Gra {
  191. public static void main(String[] a) {
  192. // inicjalizacja "jaskini"
  193. int i, j;
  194. int rozmiar = 10;
  195. Pole[][] jaskinia = new Pole[rozmiar][rozmiar];
  196. for (i = 0; i < rozmiar; i++)
  197. for (j = 0; j < rozmiar; j++) {
  198. if (i == 0 || i == rozmiar - 1 || j == 0 || j == rozmiar - 1)
  199. jaskinia[i][j] = new Sciana();
  200. else if (i == 5 && j == 5)
  201. jaskinia[i][j] = new Wyjscie();
  202. else if (i == 2 && j == 4)
  203. jaskinia[i][j] = new PolePremia();
  204. else if (i == 4 && j == 6)
  205. jaskinia[i][j] = new Sciemnij();
  206. else
  207. jaskinia[i][j] = new ZwyklePole();
  208. }
  209. // gra wlasciwa
  210. Stan s = new Stan(3, 3, 10);
  211.  
  212. while (!s.koniec) {
  213. (jaskinia[s.x()][s.y()]).ruch(s);
  214. // for (i = 0; i < rozmiar; i++) {
  215. // for (j = 0; j < rozmiar; j++) {
  216. // if (i == 0 || i == rozmiar - 1 || j == 0 || j == rozmiar - 1)
  217. // System.out.print('S');
  218. // else if (i == 5 && j == 5)
  219. // System.out.print('W');
  220. // else if (i == 2 && j == 4)
  221. // System.out.print('P');
  222. // else if (i == 4 && j == 6)
  223. // System.out.print('X');
  224. // else if (i == s.x() && j == s.y())
  225. // System.out.print('G');
  226. // else
  227. // System.out.print(' ');
  228. // }
  229. // System.out.println(' ');
  230. // }
  231. }
  232.  
  233. }
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement