Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package shell;
- import java.util.ArrayList;
- import java.util.List;
- import shell.Shell;
- //https://it.inf.unideb.hu/honlap/prog2/minesweeper
- public class MineSweeperShell extends Shell {
- private boolean start=false;
- char[][] tabla = new char[10][10];
- private static int akna=0;
- private static int zaszlo=0;
- private boolean vege=false;
- private List<String> oszlopok =new ArrayList<>();
- @Override
- protected void init() {
- for (int i=0; i<10; i++) {
- for (int j=0; j<10; j++) {
- tabla[i][j]='_';
- }
- }
- oszlopok.add("A");
- oszlopok.add("B");
- oszlopok.add("C");
- oszlopok.add("D");
- oszlopok.add("E");
- oszlopok.add("F");
- oszlopok.add("G");
- oszlopok.add("H");
- oszlopok.add("I");
- oszlopok.add("J");
- }
- public MineSweeperShell() {
- addCommand(new Command("print") {
- @Override
- public boolean execute(String... arg) {
- if (arg.length>0) {
- System.out.println("Nem kell parametert megadnod!");
- return false;
- }
- System.out.println(" A B C D E F G H I J");
- for (int i=0; i<10; i++) {
- if (i+1!=10) {
- System.out.print(" " + (i+1) + ":");
- } else {
- System.out.print((i+1) + ":");
- }
- for (int j=0; j<10; j++) {
- format("%c ", tabla[i][j]);
- }
- System.out.println(":" + (i+1));
- }
- System.out.println(" A B C D E F G H I J");
- format("Aknak szama: %d Zaszlok szama: %d\n", akna, zaszlo);
- if (vege==true) {
- format("Veget ert a jatek!\n");
- }
- else {
- format("Meg nem ert veget a jatek!\n");
- }
- return true;
- }
- });
- addCommand(new Command("new"){
- @Override
- public boolean execute(String... arg) {
- if (arg.length==0) {
- start=true;
- return true;
- }
- else if(arg.length>1) {
- System.out.println("Tul sok parametert adtal meg!");
- return false;
- }
- else if (Character.isAlphabetic(arg[0].charAt(0))) {
- System.out.println("Szamot kell megadnod!");
- return false;
- }
- for (int i=0; i<10; i++) {
- for (int j=0; j<10; j++) {
- tabla[i][j]='_';
- }
- }
- start=true;
- vege=false;
- akna=Integer.parseInt(arg[0]);
- zaszlo=Integer.parseInt(arg[0]);
- return true;
- }
- });
- addCommand(new Command("flag") {
- @Override
- public boolean execute(String... arg) {
- if(start!=true) {
- System.out.println("Meg nem kezdodott el a jatek!");
- return false;
- }
- else if (vege==true) {
- System.out.println("A jatek mar veget ert!");
- return false;
- }
- else if (arg.length!=2) {
- System.out.println("Csak ketto es pontosan ketto parametert adhatsz meg!");
- return false;
- }
- String temp1 = arg[0];
- if (temp1.length()!=1) {
- System.out.println("Az elso parameter csak egy nagy betubol allhat!");
- return false;
- }
- else if (!(oszlopok.contains(temp1))) {
- System.out.println("Helyetelen oszlop, helyes oszlopok: A, B, C, D, E, F, G, H , I, J");
- return false;
- }
- char oszlop = arg[0].charAt(0);
- String temp2 = arg[1];
- int sor=0;
- try {
- sor=Integer.parseInt(temp2);
- } catch(NumberFormatException e) {
- System.out.println("A masodik parameternek szamnak kell lennie!");
- return false;
- }
- if (sor<0 || sor>10) {
- System.out.println("A masodik parameternek 1 es 10 koze kell esnie!");
- return false;
- }
- String ki;
- ki=Flag(tabla, oszlop, sor, 0);
- if (ki=="semmi") {
- return true;
- }
- else {
- System.out.println(ki);
- return false;
- }
- }
- });
- addCommand(new Command("unflag") {
- @Override
- public boolean execute(String... arg) {
- if(start!=true) {
- System.out.println("Meg nem kezdodott el a jatek!");
- return false;
- }
- else if (vege==true) {
- System.out.println("A jatek mar veget ert!");
- return false;
- }
- else if (arg.length!=2) {
- System.out.println("Csak ketto es pontosan ketto parametert adhatsz meg!");
- return false;
- }
- String temp1 = arg[0];
- if (temp1.length()!=1) {
- System.out.println("Az elso parameter csak egy nagy betubol allhat!");
- return false;
- }
- else if (!(oszlopok.contains(temp1))) {
- System.out.println("Helyetelen oszlop, helyes oszlopok: A, B, C, D, E, F, G, H , I, J");
- return false;
- }
- char oszlop = arg[0].charAt(0);
- String temp2 = arg[1];
- int sor=0;
- try {
- sor=Integer.parseInt(temp2);
- } catch(NumberFormatException e) {
- System.out.println("A masodik parameternek szamnak kell lennie!");
- return false;
- }
- if (sor<0 || sor>10) {
- System.out.println("A masodik parameternek 1 es 10 koze kell esnie!");
- return false;
- }
- String ki;
- ki=Flag(tabla, oszlop, sor, 1);
- if (ki=="semmi") {
- return true;
- }
- else {
- System.out.println(ki);
- return false;
- }
- }
- });
- addCommand(new Command("fire") {
- @Override
- public boolean execute(String... arg) {
- if(start!=true) {
- System.out.println("Meg nem kezdodott el a jatek!");
- return false;
- }
- else if (vege==true) {
- System.out.println("A jatek mar veget ert!");
- return false;
- }
- else if (arg.length!=2) {
- System.out.println("Csak ketto es pontosan ketto parametert adhatsz meg!");
- return false;
- }
- String temp1 = arg[0];
- char oszlop = arg[0].charAt(0);
- if (temp1.length()!=1) {
- System.out.println("Az elso parameter csak egy nagy betubol allhat!");
- return false;
- }
- else if (!(Character.isAlphabetic(oszlop))) {
- System.out.println("Az elso parameternek betunek kell lennie!");
- return false;
- }
- else if (!(oszlopok.contains(temp1))) {
- System.out.println("Helyetelen oszlop, helyes oszlopok: A, B, C, D, E, F, G, H , I, J");
- return false;
- }
- String temp2 = arg[1];
- int sor=0;
- try {
- sor=Integer.parseInt(temp2);
- } catch(NumberFormatException e) {
- System.out.println("A masodik parameternek szamnak kell lennie!");
- return false;
- }
- if (sor<0 || sor>11) {
- System.out.println("A masodik parameternek 1 es 10 koze kell esnie!");
- return false;
- }
- List<Result> lovesek = new ArrayList<>();
- int o=Oszlopozas(arg[0].charAt(0))+1;
- if (tabla[sor-1][o-1]=='_') {
- lovesek = resultOfShot(sor, o);
- }
- else {
- System.out.println("Oda nem lohetsz!");
- return false;
- }
- if (lovesek==null) {
- System.out.println("Aknara lottel!");
- System.out.println("Vege a jateknak!");
- vege=true;
- start=false;
- return true;
- }
- for (Result item : lovesek) {
- sor=item.getRow();
- o=item.getColumn();
- int ertek = item.getValue();
- tabla[sor][o]=Integer.toString(ertek).charAt(0);
- }
- if(Victory(tabla)) {
- System.out.println("Nyertel!");
- System.out.println("Vege a jateknak!");
- vege=true;
- start=false;
- return true;
- }
- System.out.println(" A B C D E F G H I J");
- for (int i=0; i<10; i++) {
- if (i+1!=10) {
- System.out.print(" " + (i+1) + ":");
- } else {
- System.out.print((i+1) + ":");
- }
- for (int j=0; j<10; j++) {
- format("%c ", tabla[i][j]);
- }
- System.out.println(":" + (i+1));
- }
- System.out.println(" A B C D E F G H I J");
- format("Aknak szama: %d Zaszlok szama: %d\n", akna, zaszlo);
- if (vege==true) {
- format("Veget ert a jatek!\n");
- }
- else {
- format("Meg nem ert veget a jatek!\n");
- }
- return true;
- }
- });
- addCommand(new Command("solution") {
- @Override
- public boolean execute(String... arg) {
- if (arg.length!=0) {
- System.out.println("Nem adhatsz meg parametert ehhez a parancshoz!");
- return false;
- }
- else if (start!=true && vege!=true) {
- System.out.println("A jatek meg nem kezdodott el, vagy meg nem fejezodott be!");
- return false;
- }
- System.out.println(solution());
- return true;
- }
- });
- }
- public static String Flag(char[][] tabla, char oszlop, int sor, int op) {
- int o=0;
- if (zaszlo==0 && op==0) {//ZASZLO LETETEL
- return "Nincs mar zaszlod!";
- }
- else if (zaszlo==akna && op==1) {//ZASZLO FELVETEL
- return "Nincs tobb zaszlo leteve!";
- }
- switch(oszlop) {
- case 'A': o=0;
- break;
- case 'B': o=1;
- break;
- case 'C': o=2;
- break;
- case 'D': o=3;
- break;
- case 'E': o=4;
- break;
- case 'F': o=5;
- break;
- case 'G': o=6;
- break;
- case 'H': o=7;
- break;
- case 'I': o=8;
- break;
- case 'J': o=9;
- break;
- default: System.out.println("fasz");
- break;
- }
- if (op==1 && tabla[sor-1][o]=='F') {
- tabla[sor-1][o]='_';
- zaszlo++;
- }
- else if(op==1 && tabla[sor-1][o]=='_') {
- return "Ott nincs zaszlo amit felvehetnel!";
- }
- else if(op==0 && tabla[sor-1][o]=='_') {
- tabla[sor-1][o]='F';
- zaszlo--;
- //System.out.println(zaszlo);
- }
- else if(op==0 && tabla[sor-1][o]=='F') {
- return "Oda mar tettel zaszlot!";
- }
- return "semmi";
- }
- public static int Oszlopozas(char valami) {
- int o=0;
- switch(valami) {
- case 'A': o=0;
- break;
- case 'B': o=1;
- break;
- case 'C': o=2;
- break;
- case 'D': o=3;
- break;
- case 'E': o=4;
- break;
- case 'F': o=5;
- break;
- case 'G': o=6;
- break;
- case 'H': o=7;
- break;
- case 'I': o=8;
- break;
- case 'J': o=9;
- break;
- default: System.out.println("fasz");
- break;
- }
- return o;
- }
- public boolean Victory(char[][] tabla) {
- int szam=0;
- for (int i=0; i<10; i++) {
- for (int j=0; j<10; j++) {
- if (tabla[i][j]=='_') {
- szam++;
- }
- }
- }
- if (szam==akna) {
- return true;
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement