import java.io.*; import java.awt.*; import java.awt.event.*; import java.applet.Applet; import java.util.*; import java.net.*; public class Kabe extends Applet implements MouseListener { int laud[][] = new int[8][8]; int kumb; int kohtAllaVana; //valitud nupu koordinaatide jaox int kohtParemaleVana; int kohtAllaUus; //koha, kuhu tahataxe käia koordinaatide jaox int kohtParemaleUus; int vastasenupp; //kas 1 või 2 Label kesKaibLabel = new Label("Käib punane"); Label infoLabel = new Label(""); Button nupp = new Button("Ühenda"); TextField IP = new TextField(); public Kabe() { addMouseListener(this); //paigutame nupud lauale: 0 - vaba koht, -1 - koht, kuhu käia ei saa, 1 - mängija 1, 2 - mängija 2 laud[0][0] = -1;laud[0][1] = 1; laud[0][2] = -1;laud[0][3] = 1; laud[0][4] = -1;laud[0][5] = 1; laud[0][6] = -1;laud[0][7] = 1; laud[1][0] = 1; laud[1][1] = -1;laud[1][2] = 1; laud[1][3] = -1;laud[1][4] = 1; laud[1][5] = -1;laud[1][6] = 1; laud[1][7] = -1; laud[2][0] = -1;laud[2][1] = 0; laud[2][2] = -1;laud[2][3] = 0; laud[2][4] = -1;laud[2][5] = 0; laud[2][6] = -1;laud[2][7] = 0; laud[3][0] = 0; laud[3][1] = -1;laud[3][2] = 0; laud[3][3] = -1;laud[3][4] = 0; laud[3][5] = -1;laud[3][6] = 0; laud[3][7] = -1; laud[4][0] = -1;laud[4][1] = 0; laud[4][2] = -1;laud[4][3] = 0; laud[4][4] = -1;laud[4][5] = 0; laud[4][6] = -1;laud[4][7] = 0; laud[5][0] = 0; laud[5][1] = -1;laud[5][2] = 0; laud[5][3] = -1;laud[5][4] = 0; laud[5][5] = -1;laud[5][6] = 0; laud[5][7] = -1; laud[6][0] = -1;laud[6][1] = 2; laud[6][2] = -1;laud[6][3] = 2; laud[6][4] = -1;laud[6][5] = 2; laud[6][6] = -1;laud[6][7] = 2; laud[7][0] = 2; laud[7][1] = -1;laud[7][2] = 2; laud[7][3] = -1;laud[7][4] = 2; laud[7][5] = -1;laud[7][6] = 2; laud[7][7] = -1; Panel alaOsa = new Panel(new GridLayout(2, 2)); alaOsa.add(kesKaibLabel); alaOsa.add(infoLabel); alaOsa.add(IP); alaOsa.add(nupp); setLayout(new BorderLayout()); add(alaOsa, BorderLayout.SOUTH); } public void paint(Graphics g) { int hele = 1; //alustame valge ruudu joonistamisega for (int alla=0;alla<8;alla++ ) { for (int paremale=0;paremale<8;paremale++ ) { if(hele == 0) { g.setColor(Color.blue); //joonistame sinise ruudu hele = 1; }else{ g.setColor(Color.white); //joonistame valge ruudu hele = 0;} g.fillRect(paremale*50, alla*50,50,50); //teeme ruudu if (laud[alla][paremale]==1) { g.setColor(Color.yellow); g.fillOval(paremale*50+10, alla*50+10, 25, 25); } if (laud[alla][paremale]==2) { g.setColor(Color.red); g.fillOval(paremale*50+10, alla*50+10, 25, 25); } } if (hele==1){hele = 0;}else{hele = 1;} //kui lõpetasime heleda ruuduga, siis alustame järgmist rida tumedaga } g.setColor(Color.black); //tõmbame jooned ümber kabe laua g.drawLine(0,400,400,400); g.drawLine(400,0,400,400); } public int KasSaabVeelVotta(int endanupp, int kohtAllaUus, int kohtParemaleUus) { if (endanupp == 1) //et teax, milline on vastase nupp, kui enda nupp teada { vastasenupp = 2; }else { vastasenupp = 1;} //kontrollime, kas juba peale võtmis on võimalik veel mingis suunas võtta if (kohtParemaleUus>1 && kohtAllaUus>1 && (laud[kohtAllaUus-1][kohtParemaleUus-1]==vastasenupp) && (laud[kohtAllaUus-2][kohtParemaleUus-2]==0)) { //vasakult ülevalt infoLabel.setText("Saab veel võtta!"); return 1; } else if (kohtParemaleUus<6 && kohtAllaUus>1 && (laud[kohtAllaUus-1][kohtParemaleUus+1]==vastasenupp) && (laud[kohtAllaUus-2][kohtParemaleUus+2]==0)) { //paremalt ülevalt infoLabel.setText("Saab veel võtta!"); return 1; } else if (kohtParemaleUus>1 && kohtAllaUus<6 && (laud[kohtAllaUus+1][kohtParemaleUus-1]==vastasenupp) && (laud[kohtAllaUus+2][kohtParemaleUus-2]==0)) { //vasakult alt infoLabel.setText("Saab veel võtta!"); return 1; } else if (kohtParemaleUus<6 && kohtAllaUus<6 && (laud[kohtAllaUus+1][kohtParemaleUus+1]==vastasenupp) && (laud[kohtAllaUus+2][kohtParemaleUus+2]==0)) { //paremalt alt infoLabel.setText("Saab veel võtta!"); return 1; } // kui ei saa võtta rohkem, vahetame kasutajat if (endanupp==2)//punane {kesKaibLabel.setText("Käib kollane"); KasSaabVotta(1); } if (endanupp==1) {kesKaibLabel.setText("Käib punane"); KasSaabVotta(2); } return 0; //ei saa rohkem võtta }; public int KasSaabVotta(int endanupp) { if (endanupp==1) //et teax, milline on vastase nupp, kui enda nupp teada {vastasenupp = 2;} else{vastasenupp=1;} //Kontrollime enne käimist, kas on võimalik kuskilt midagi võtta, sest võtama peab kabes! //Sellex käime kogu massiii läbi ja uurime, kas sellel mängijal on võimalik mõne nupuga võtta, kelle kord käia on for (int alla=0;alla<8;alla++ ) { for (int paremale=0;paremale<8;paremale++ ) { if(laud[alla][paremale] == endanupp) { if (alla>1 && paremale>1 && (laud[alla-1][paremale-1]==vastasenupp) && (laud[alla-2][paremale-2]==0)) { //vasakult ülevalt infoLabel.setText("Võtma peab!"); return 1; } else if (alla>1 && paremale<7 && (laud[alla-1][paremale+1]==vastasenupp) && (laud[alla-2][paremale+2]==0)) { //paremalt ülevalt infoLabel.setText("Võtma peab!"); return 1; } else if (alla<7 && paremale>1 &&(laud[alla+1][paremale-1]==vastasenupp) && (laud[alla+2][paremale-2]==0)) { //vasakult alt infoLabel.setText("Võtma peab!"); return 1; } else if (alla<7 && paremale <7 && (laud[alla+1][paremale+1]==vastasenupp) && (laud[alla+2][paremale+2]==0)) { //paremalt alt infoLabel.setText("Võtma peab!"); return 1; } } } } infoLabel.setText(""); return 0; //ei saa võtta } public void mousePressed(MouseEvent e){} public void mouseReleased(MouseEvent e){} public void mouseClicked(MouseEvent e) //kui hiirt klikitaxe kuskil { if (kumb==2)//eelnevalt oldi valitud 2 (alumised nupud/punased) { kohtAllaUus = (int)e.getY()/50; //saame teada ruudu, kus klikiti kohtParemaleUus = (int)e.getX()/50; System.out.println("AllaUUS: "+kohtAllaUus+" ParemaleUUS: "+kohtParemaleUus); //Käime ainult if (laud[kohtAllaUus][kohtParemaleUus] == 0 && laud[kohtAllaUus][kohtParemaleUus] != -1) //uus koht on tühi ja hall { if((kohtAllaUus == kohtAllaVana-1 && kohtParemaleUus == kohtParemaleVana-1) || (kohtAllaUus == kohtAllaVana-1 && kohtParemaleUus == kohtParemaleVana+1)) // lihtsalt käime nupuga edasi { laud[kohtAllaUus][kohtParemaleUus] = 2; laud[kohtAllaVana][kohtParemaleVana] = 0; KasSaabVotta(1); //kas vastane saab võtta kesKaibLabel.setText("Käib kollane"); kumb = 0; repaint(); } //Võtame vastaselt nupu ära else if(kohtAllaUus == kohtAllaVana-2 && kohtParemaleUus == kohtParemaleVana-2 && laud[kohtAllaVana-1][kohtParemaleVana-1]==1) //võtame vastase nupu ära { //vasakult eest laud[kohtAllaUus][kohtParemaleUus] = 2; laud[kohtAllaVana][kohtParemaleVana] = 0; laud[kohtAllaVana-1][kohtParemaleVana-1] = 0; //kustutataxe vastase nupp KasSaabVeelVotta(2,kohtAllaUus,kohtParemaleUus); kumb = 0; repaint(); } else if(kohtAllaUus == kohtAllaVana-2 && kohtParemaleUus == kohtParemaleVana+2 && laud[kohtAllaVana-1][kohtParemaleVana+1]==1) { //paremalt eest laud[kohtAllaUus][kohtParemaleUus] = 2; laud[kohtAllaVana][kohtParemaleVana] = 0; laud[kohtAllaVana-1][kohtParemaleVana+1] = 0; //kustutataxe vastase nupp KasSaabVeelVotta(2,kohtAllaUus,kohtParemaleUus); kumb = 0; repaint(); } else if(kohtAllaUus == kohtAllaVana+2 && kohtParemaleUus == kohtParemaleVana-2 && laud[kohtAllaVana+1][kohtParemaleVana-1]==1) //võtame vastase nupu ära { //vasakult tagant laud[kohtAllaUus][kohtParemaleUus] = 2; laud[kohtAllaVana][kohtParemaleVana] = 0; laud[kohtAllaVana+1][kohtParemaleVana-1] = 0; //kustutataxe vastase nupp KasSaabVeelVotta(2,kohtAllaUus,kohtParemaleUus); kumb = 0; repaint(); } else if(kohtAllaUus == kohtAllaVana+2 && kohtParemaleUus == kohtParemaleVana+2 && laud[kohtAllaVana+1][kohtParemaleVana+1]==1) { //paremalt tagant laud[kohtAllaUus][kohtParemaleUus] = 2; laud[kohtAllaVana][kohtParemaleVana] = 0; laud[kohtAllaVana+1][kohtParemaleVana+1] = 0; //kustutataxe vastase nupp KasSaabVeelVotta(2,kohtAllaUus,kohtParemaleUus); kumb = 0; repaint(); } } else kumb=0; //nuppu pole jälle valitud } else if (kumb==1)//eelnevalt oldi valitud 1 (ülevalt) { kohtAllaUus = (int)e.getY()/50; kohtParemaleUus = (int)e.getX()/50; System.out.println("AllaUUS: "+kohtAllaUus+" ParemaleUUS: "+kohtParemaleUus); if (laud[kohtAllaUus][kohtParemaleUus] == 0 && laud[kohtAllaUus][kohtParemaleUus] != -1) //uus koht on tühi ja hall { if((kohtAllaUus == kohtAllaVana+1 && kohtParemaleUus == kohtParemaleVana-1) || (kohtAllaUus == kohtAllaVana+1 && kohtParemaleUus == kohtParemaleVana+1)) { laud[kohtAllaUus][kohtParemaleUus] = 1; laud[kohtAllaVana][kohtParemaleVana] = 0; KasSaabVotta(2); //kas vastane saab võtta kesKaibLabel.setText("Käib punane"); kumb = 0; repaint(); } else if(kohtAllaUus == kohtAllaVana+2 && kohtParemaleUus == kohtParemaleVana-2 && laud[kohtAllaVana+1][kohtParemaleVana-1]==2) { //vasakult eest laud[kohtAllaUus][kohtParemaleUus] = 1; laud[kohtAllaVana][kohtParemaleVana] = 0; laud[kohtAllaVana+1][kohtParemaleVana-1] = 0; //kustutataxe vastase nupp KasSaabVeelVotta(1,kohtAllaUus,kohtParemaleUus); kumb = 0; repaint(); } else if(kohtAllaUus == kohtAllaVana+2 && kohtParemaleUus == kohtParemaleVana+2 && laud[kohtAllaVana+1][kohtParemaleVana+1]==2) { //paremalt eest laud[kohtAllaUus][kohtParemaleUus] = 1; laud[kohtAllaVana][kohtParemaleVana] = 0; laud[kohtAllaVana+1][kohtParemaleVana+1] = 0; //kustutataxe vastase nupp KasSaabVeelVotta(1,kohtAllaUus,kohtParemaleUus); kumb = 0; repaint(); } else if(kohtAllaUus == kohtAllaVana-2 && kohtParemaleUus == kohtParemaleVana-2 && laud[kohtAllaVana-1][kohtParemaleVana-1]==2) { //vasakult tagant laud[kohtAllaUus][kohtParemaleUus] = 1; laud[kohtAllaVana][kohtParemaleVana] = 0; laud[kohtAllaVana-1][kohtParemaleVana-1] = 0; //kustutataxe vastase nupp KasSaabVeelVotta(1,kohtAllaUus,kohtParemaleUus); kumb = 0; repaint(); } else if(kohtAllaUus == kohtAllaVana-2 && kohtParemaleUus == kohtParemaleVana+2 && laud[kohtAllaVana-1][kohtParemaleVana+1]==2) { //paremalt tagant laud[kohtAllaUus][kohtParemaleUus] = 1; laud[kohtAllaVana][kohtParemaleVana] = 0; laud[kohtAllaVana-1][kohtParemaleVana+1] = 0; //kustutataxe vastase nupp KasSaabVeelVotta(1,kohtAllaUus,kohtParemaleUus); kumb = 0; repaint(); } } else kumb=0; } else if (kumb==0)//pole enne kuskil klikanud { kohtAllaVana = (int)e.getY()/50; //saame teada ruudu, millel olev nupp valiti kohtParemaleVana = (int)e.getX()/50; if(laud[kohtAllaVana][kohtParemaleVana] == 1) //valitaxe üx nupp {kumb = 1;} if(laud[kohtAllaVana][kohtParemaleVana] == 2) {kumb = 2;} System.out.println("AllaVANA: "+kohtAllaVana+" ParemaleVANA: "+kohtParemaleVana); } } public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void run() { try { ServerSocket ss = new ServerSocket(3001); Socket sc = ss.accept(); BufferedReader sisse = new BufferedReader(new InputStreamReader(sc.getInputStream())); PrintWriter valja = new PrintWriter(sc.getOutputStream(), true); while(true) { String sisend = sisse.readLine(); } } catch (Exception e) { System.out.println("Probleem: "+e); } //sc.close(); } public static void main(String argumendid[]) { Frame f = new Frame("Kabe"); f.setSize(410,480); f.add(new Kabe()); f.setVisible(true); } };