Advertisement
Guest User

Untitled

a guest
Dec 17th, 2017
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.48 KB | None | 0 0
  1. package shell;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4.  
  5. import shell.Shell;
  6. //https://it.inf.unideb.hu/honlap/prog2/minesweeper
  7. public class MineSweeperShell extends Shell {
  8. private boolean start=false;
  9. char[][] tabla = new char[10][10];
  10. private static int akna=0;
  11. private static int zaszlo=0;
  12. private boolean vege=false;
  13. private List<String> oszlopok =new ArrayList<>();
  14. @Override
  15. protected void init() {
  16. for (int i=0; i<10; i++) {
  17. for (int j=0; j<10; j++) {
  18. tabla[i][j]='_';
  19. }
  20. }
  21. oszlopok.add("A");
  22. oszlopok.add("B");
  23. oszlopok.add("C");
  24. oszlopok.add("D");
  25. oszlopok.add("E");
  26. oszlopok.add("F");
  27. oszlopok.add("G");
  28. oszlopok.add("H");
  29. oszlopok.add("I");
  30. oszlopok.add("J");
  31. }
  32. public MineSweeperShell() {
  33. addCommand(new Command("print") {
  34. @Override
  35. public boolean execute(String... arg) {
  36. if (arg.length>0) {
  37. System.out.println("Nem kell parametert megadnod!");
  38. return false;
  39. }
  40. System.out.println(" A B C D E F G H I J");
  41. for (int i=0; i<10; i++) {
  42. if (i+1!=10) {
  43. System.out.print(" " + (i+1) + ":");
  44. } else {
  45. System.out.print((i+1) + ":");
  46. }
  47.  
  48. for (int j=0; j<10; j++) {
  49. format("%c ", tabla[i][j]);
  50. }
  51. System.out.println(":" + (i+1));
  52. }
  53. System.out.println(" A B C D E F G H I J");
  54. format("Aknak szama: %d Zaszlok szama: %d\n", akna, zaszlo);
  55. if (vege==true) {
  56. format("Veget ert a jatek!\n");
  57. }
  58. else {
  59. format("Meg nem ert veget a jatek!\n");
  60. }
  61. return true;
  62. }
  63. });
  64. addCommand(new Command("new"){
  65. @Override
  66. public boolean execute(String... arg) {
  67. if (arg.length==0) {
  68. start=true;
  69. return true;
  70. }
  71. else if(arg.length>1) {
  72. System.out.println("Tul sok parametert adtal meg!");
  73. return false;
  74. }
  75. else if (Character.isAlphabetic(arg[0].charAt(0))) {
  76. System.out.println("Szamot kell megadnod!");
  77. return false;
  78. }
  79. for (int i=0; i<10; i++) {
  80. for (int j=0; j<10; j++) {
  81. tabla[i][j]='_';
  82. }
  83. }
  84. start=true;
  85. vege=false;
  86. akna=Integer.parseInt(arg[0]);
  87. zaszlo=Integer.parseInt(arg[0]);
  88. return true;
  89. }
  90. });
  91. addCommand(new Command("flag") {
  92. @Override
  93. public boolean execute(String... arg) {
  94. if(start!=true) {
  95. System.out.println("Meg nem kezdodott el a jatek!");
  96. return false;
  97. }
  98. else if (vege==true) {
  99. System.out.println("A jatek mar veget ert!");
  100. return false;
  101. }
  102. else if (arg.length!=2) {
  103. System.out.println("Csak ketto es pontosan ketto parametert adhatsz meg!");
  104. return false;
  105. }
  106. String temp1 = arg[0];
  107. if (temp1.length()!=1) {
  108. System.out.println("Az elso parameter csak egy nagy betubol allhat!");
  109. return false;
  110. }
  111. else if (!(oszlopok.contains(temp1))) {
  112. System.out.println("Helyetelen oszlop, helyes oszlopok: A, B, C, D, E, F, G, H , I, J");
  113. return false;
  114. }
  115. char oszlop = arg[0].charAt(0);
  116. String temp2 = arg[1];
  117. int sor=0;
  118. try {
  119. sor=Integer.parseInt(temp2);
  120. } catch(NumberFormatException e) {
  121. System.out.println("A masodik parameternek szamnak kell lennie!");
  122. return false;
  123. }
  124. if (sor<0 || sor>10) {
  125. System.out.println("A masodik parameternek 1 es 10 koze kell esnie!");
  126. return false;
  127. }
  128. String ki;
  129. ki=Flag(tabla, oszlop, sor, 0);
  130. if (ki=="semmi") {
  131. return true;
  132. }
  133. else {
  134. System.out.println(ki);
  135. return false;
  136. }
  137. }
  138. });
  139. addCommand(new Command("unflag") {
  140. @Override
  141. public boolean execute(String... arg) {
  142. if(start!=true) {
  143. System.out.println("Meg nem kezdodott el a jatek!");
  144. return false;
  145. }
  146. else if (vege==true) {
  147. System.out.println("A jatek mar veget ert!");
  148. return false;
  149. }
  150. else if (arg.length!=2) {
  151. System.out.println("Csak ketto es pontosan ketto parametert adhatsz meg!");
  152. return false;
  153. }
  154. String temp1 = arg[0];
  155. if (temp1.length()!=1) {
  156. System.out.println("Az elso parameter csak egy nagy betubol allhat!");
  157. return false;
  158. }
  159. else if (!(oszlopok.contains(temp1))) {
  160. System.out.println("Helyetelen oszlop, helyes oszlopok: A, B, C, D, E, F, G, H , I, J");
  161. return false;
  162. }
  163. char oszlop = arg[0].charAt(0);
  164. String temp2 = arg[1];
  165. int sor=0;
  166. try {
  167. sor=Integer.parseInt(temp2);
  168. } catch(NumberFormatException e) {
  169. System.out.println("A masodik parameternek szamnak kell lennie!");
  170. return false;
  171. }
  172. if (sor<0 || sor>10) {
  173. System.out.println("A masodik parameternek 1 es 10 koze kell esnie!");
  174. return false;
  175. }
  176. String ki;
  177. ki=Flag(tabla, oszlop, sor, 1);
  178. if (ki=="semmi") {
  179. return true;
  180. }
  181. else {
  182. System.out.println(ki);
  183. return false;
  184. }
  185. }
  186. });
  187. addCommand(new Command("fire") {
  188. @Override
  189. public boolean execute(String... arg) {
  190. if(start!=true) {
  191. System.out.println("Meg nem kezdodott el a jatek!");
  192. return false;
  193. }
  194. else if (vege==true) {
  195. System.out.println("A jatek mar veget ert!");
  196. return false;
  197. }
  198. else if (arg.length!=2) {
  199. System.out.println("Csak ketto es pontosan ketto parametert adhatsz meg!");
  200. return false;
  201. }
  202. String temp1 = arg[0];
  203. char oszlop = arg[0].charAt(0);
  204. if (temp1.length()!=1) {
  205. System.out.println("Az elso parameter csak egy nagy betubol allhat!");
  206. return false;
  207. }
  208. else if (!(Character.isAlphabetic(oszlop))) {
  209. System.out.println("Az elso parameternek betunek kell lennie!");
  210. return false;
  211. }
  212. else if (!(oszlopok.contains(temp1))) {
  213. System.out.println("Helyetelen oszlop, helyes oszlopok: A, B, C, D, E, F, G, H , I, J");
  214. return false;
  215. }
  216.  
  217. String temp2 = arg[1];
  218. int sor=0;
  219. try {
  220. sor=Integer.parseInt(temp2);
  221. } catch(NumberFormatException e) {
  222. System.out.println("A masodik parameternek szamnak kell lennie!");
  223. return false;
  224. }
  225. if (sor<0 || sor>11) {
  226. System.out.println("A masodik parameternek 1 es 10 koze kell esnie!");
  227. return false;
  228. }
  229. List<Result> lovesek = new ArrayList<>();
  230. int o=Oszlopozas(arg[0].charAt(0))+1;
  231. if (tabla[sor-1][o-1]=='_') {
  232. lovesek = resultOfShot(sor, o);
  233. }
  234. else {
  235. System.out.println("Oda nem lohetsz!");
  236. return false;
  237. }
  238. if (lovesek==null) {
  239. System.out.println("Aknara lottel!");
  240. System.out.println("Vege a jateknak!");
  241. vege=true;
  242. start=false;
  243. return true;
  244. }
  245. for (Result item : lovesek) {
  246. sor=item.getRow();
  247. o=item.getColumn();
  248. int ertek = item.getValue();
  249. tabla[sor][o]=Integer.toString(ertek).charAt(0);
  250. }
  251. if(Victory(tabla)) {
  252. System.out.println("Nyertel!");
  253. System.out.println("Vege a jateknak!");
  254. vege=true;
  255. start=false;
  256. return true;
  257. }
  258. System.out.println(" A B C D E F G H I J");
  259. for (int i=0; i<10; i++) {
  260. if (i+1!=10) {
  261. System.out.print(" " + (i+1) + ":");
  262. } else {
  263. System.out.print((i+1) + ":");
  264. }
  265.  
  266. for (int j=0; j<10; j++) {
  267. format("%c ", tabla[i][j]);
  268. }
  269. System.out.println(":" + (i+1));
  270. }
  271. System.out.println(" A B C D E F G H I J");
  272. format("Aknak szama: %d Zaszlok szama: %d\n", akna, zaszlo);
  273. if (vege==true) {
  274. format("Veget ert a jatek!\n");
  275. }
  276. else {
  277. format("Meg nem ert veget a jatek!\n");
  278. }
  279. return true;
  280. }
  281. });
  282. addCommand(new Command("solution") {
  283. @Override
  284. public boolean execute(String... arg) {
  285. if (arg.length!=0) {
  286. System.out.println("Nem adhatsz meg parametert ehhez a parancshoz!");
  287. return false;
  288. }
  289. else if (start!=true && vege!=true) {
  290. System.out.println("A jatek meg nem kezdodott el, vagy meg nem fejezodott be!");
  291. return false;
  292. }
  293. System.out.println(solution());
  294. return true;
  295. }
  296. });
  297. }
  298. public static String Flag(char[][] tabla, char oszlop, int sor, int op) {
  299. int o=0;
  300. if (zaszlo==0 && op==0) {//ZASZLO LETETEL
  301. return "Nincs mar zaszlod!";
  302. }
  303. else if (zaszlo==akna && op==1) {//ZASZLO FELVETEL
  304. return "Nincs tobb zaszlo leteve!";
  305. }
  306. switch(oszlop) {
  307. case 'A': o=0;
  308. break;
  309. case 'B': o=1;
  310. break;
  311. case 'C': o=2;
  312. break;
  313. case 'D': o=3;
  314. break;
  315. case 'E': o=4;
  316. break;
  317. case 'F': o=5;
  318. break;
  319. case 'G': o=6;
  320. break;
  321. case 'H': o=7;
  322. break;
  323. case 'I': o=8;
  324. break;
  325. case 'J': o=9;
  326. break;
  327. default: System.out.println("fasz");
  328. break;
  329. }
  330. if (op==1 && tabla[sor-1][o]=='F') {
  331. tabla[sor-1][o]='_';
  332. zaszlo++;
  333. }
  334. else if(op==1 && tabla[sor-1][o]=='_') {
  335. return "Ott nincs zaszlo amit felvehetnel!";
  336. }
  337. else if(op==0 && tabla[sor-1][o]=='_') {
  338. tabla[sor-1][o]='F';
  339. zaszlo--;
  340. //System.out.println(zaszlo);
  341. }
  342. else if(op==0 && tabla[sor-1][o]=='F') {
  343. return "Oda mar tettel zaszlot!";
  344. }
  345. return "semmi";
  346. }
  347. public static int Oszlopozas(char valami) {
  348. int o=0;
  349. switch(valami) {
  350. case 'A': o=0;
  351. break;
  352. case 'B': o=1;
  353. break;
  354. case 'C': o=2;
  355. break;
  356. case 'D': o=3;
  357. break;
  358. case 'E': o=4;
  359. break;
  360. case 'F': o=5;
  361. break;
  362. case 'G': o=6;
  363. break;
  364. case 'H': o=7;
  365. break;
  366. case 'I': o=8;
  367. break;
  368. case 'J': o=9;
  369. break;
  370. default: System.out.println("fasz");
  371. break;
  372. }
  373. return o;
  374. }
  375. public boolean Victory(char[][] tabla) {
  376. int szam=0;
  377. for (int i=0; i<10; i++) {
  378. for (int j=0; j<10; j++) {
  379. if (tabla[i][j]=='_') {
  380. szam++;
  381. }
  382. }
  383. }
  384. if (szam==akna) {
  385. return true;
  386. }
  387. return false;
  388. }
  389. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement