ArthurDn

Untitled

Oct 18th, 2012
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.88 KB | None | 0 0
  1. import java.awt.Graphics;
  2. import java.awt.Image;
  3. import java.awt.event.*;
  4.  
  5. import javax.swing.*;
  6.  
  7. public class Board extends JPanel implements ActionListener {
  8.     static final long serialVersionUID = 1;
  9.  
  10.     boolean isFirst = true;
  11.     int finI;
  12.     int finJ;
  13.     int finPos;
  14.     int startPos;
  15.     int startI;
  16.     int startJ;
  17.     WhiteChecker w;
  18.     BlackChecker b;
  19.     WhiteCheckerWW ww;
  20.     BlackCheckerBB bb;
  21.     public Image img;
  22.     Timer time;
  23.     static boolean nextTurn = false;
  24.  
  25.     public Board() {
  26.  
  27.         w = new WhiteChecker();
  28.         b = new BlackChecker();
  29.         ww = new WhiteCheckerWW();
  30.         bb = new BlackCheckerBB();
  31.  
  32.         addMouseListener(new MouseAdapter() {
  33.             public void mousePressed(MouseEvent e) {
  34.                 if (isFirst == true
  35.                         && (Checker.hist[e.getX() / 44][e.getY() / 44] == 2 || Checker.hist[e
  36.                                 .getX() / 44][e.getY() / 44] == 3)) {
  37.                     pressed(e.getX(), e.getY());
  38.                     isFirst = false;
  39.                     nextTurn = true;
  40.                 }
  41.                 if (nextTurn == false
  42.                         && (Checker.hist[e.getX() / 44][e.getY() / 44] == 2 || Checker.hist[e
  43.                                 .getX() / 44][e.getY() / 44] == 3)) {
  44.                     pressed(e.getX(), e.getY());
  45.                     nextTurn = true;
  46.                 }
  47.                 if (isFirst == false
  48.                         && nextTurn == true
  49.                         && (Checker.hist[e.getX() / 44][e.getY() / 44] == 1 || Checker.hist[e
  50.                                 .getX() / 44][e.getY() / 44] == 5)) {
  51.                     pressed(e.getX(), e.getY());
  52.                     nextTurn = false;
  53.                 }
  54.  
  55.             }
  56.  
  57.             public void mouseReleased(MouseEvent e) {
  58.  
  59.                 finI = e.getX() / 44;
  60.                 finJ = e.getY() / 44;
  61.                 startPos = Checker.hist[startI][startJ];
  62.                 finPos = Checker.hist[finI][finJ];
  63.  
  64.                 if (((quarter(finI, finJ) == 1 || quarter(finI, finJ) == 2) && startPos == 2)
  65.                         || ((quarter(finI, finJ) == 4 || quarter(finI, finJ) == 3) && startPos == 1)) {
  66.                     if (Math.abs(startI - finI) == 1
  67.                             && Math.abs(startJ - finJ) == 1) {
  68.                         move(finI, finJ);
  69.  
  70.                     }
  71.                 }
  72.                 if ((startPos == 3 || startPos == 5)
  73.                         && Math.abs(startI - finI) == Math.abs(startJ - finJ)) {
  74.                     move(finI, finJ);
  75.                 }
  76.                 remove(finI, finJ);
  77.  
  78.             }
  79.         });
  80.         setFocusable(true);
  81.         ImageIcon i = new ImageIcon("src/1.gif");
  82.         img = i.getImage();
  83.         time = new Timer(5, this);
  84.         time.start();
  85.     }
  86.  
  87.     public void actionPerformed(ActionEvent e) {
  88.         repaint();
  89.     }
  90.  
  91.     public void pressed(int x, int y) {
  92.         for (int j = 0; j < 8; j++) {
  93.             for (int i = 0; i < 8; i++) {
  94.                 if (i == x / 44 && j == y / 44) {
  95.                     startI = i;
  96.                     startJ = j;
  97.                 }
  98.             }
  99.         }
  100.     }
  101.  
  102.     public void move(int finI, int finJ) {
  103.         if (Checker.hist[finI][finJ] == 4) {
  104.             int temp;
  105.             temp = Checker.hist[finI][finJ];
  106.             Checker.hist[finI][finJ] = Checker.hist[startI][startJ];
  107.             Checker.hist[startI][startJ] = temp;
  108.             if (finJ == 7 && startPos == 1)
  109.                 Checker.hist[finI][finJ] = 5;
  110.             if (finJ == 0 && startPos == 2)
  111.                 Checker.hist[finI][finJ] = 3;
  112.         }
  113.     }
  114.  
  115.     public int quarter(int finI, int finJ) {
  116.         int rez = 0;
  117.         if (finI < startI && finJ < startJ) {
  118.             rez = 1;
  119.         }
  120.         if (finI > startI && finJ < startJ) {
  121.             rez = 2;
  122.         }
  123.         if (finI > startI && finJ > startJ) {
  124.             rez = 3;
  125.         }
  126.         if (finI < startI && finJ > startJ) {
  127.             rez = 4;
  128.         }
  129.         return rez;
  130.     }
  131.  
  132.     public void remove(int finI, int finJ) {
  133.         if (Math.abs(startI - finI) == 2 && Math.abs(startJ - finJ) == 2) {
  134.             if (quarter(finI, finJ) == 1
  135.                     && startPos != Checker.hist[finI + 1][finJ + 1]) {
  136.                 Checker.hist[finI + 1][finJ + 1] = 4;
  137.                 move(finI, finJ);
  138.             }
  139.             if (quarter(finI, finJ) == 2
  140.                     && startPos != Checker.hist[finI - 1][finJ + 1]) {
  141.                 move(finI, finJ);
  142.                 Checker.hist[finI - 1][finJ + 1] = 4;
  143.             }
  144.             if (quarter(finI, finJ) == 3
  145.                     && startPos != Checker.hist[finI - 1][finJ - 1]) {
  146.                 move(finI, finJ);
  147.                 Checker.hist[finI - 1][finJ - 1] = 4;
  148.             }
  149.             if (quarter(finI, finJ) == 4
  150.                     && startPos != Checker.hist[finI + 1][finJ - 1]) {
  151.                 move(finI, finJ);
  152.                 Checker.hist[finI + 1][finJ - 1] = 4;
  153.             }
  154.         }
  155.  
  156.         if (startPos == 3 && quarter(finI + 1, finJ) == 1) {
  157.             int dead = 0;
  158.             int tempI = 0;
  159.             int tempJ = 0;
  160.             for (int i = finI + 1; i < startI; i++) {
  161.                 for (int j = finJ + 1; i < startJ; j++) {
  162.  
  163.                     if (Checker.hist[i][j] == 1 || Checker.hist[i][j] == 5) {
  164.                         if (i == j) {
  165.                             dead++;
  166.                             tempI = i;
  167.                             tempJ = j;
  168.                         }
  169.                     }
  170.  
  171.                 }
  172.  
  173.             }
  174.             if (dead == 1) {
  175.                 Checker.hist[tempI][tempJ] = 4;
  176.                 move(finI, finJ);
  177.             }
  178.  
  179.         }
  180.     }
  181.  
  182.     public void paint(Graphics g) {
  183.         Graphics g2d = g;
  184.         g2d.drawImage(img, 0, 0, null);
  185.         for (int j = 0; j < 8; j++) {
  186.             for (int i = 0; i < 8; i++) {
  187.                 if (Checker.hist[i][j] == 1) {
  188.                     g2d.drawImage(b.getImage(), i * 44, j * 44, null);
  189.                 }
  190.                 if (Checker.hist[i][j] == 2) {
  191.                     g2d.drawImage(w.getImage(), i * 44, j * 44, null);
  192.                 }
  193.                 if (Checker.hist[i][j] == 3) {
  194.                     g2d.drawImage(ww.getImage(), i * 44, j * 44, null);
  195.                 }
  196.                 if (Checker.hist[i][j] == 5) {
  197.                     g2d.drawImage(bb.getImage(), i * 44, j * 44, null);
  198.                 }
  199.             }
  200.         }
  201.     }
  202. }
Advertisement
Add Comment
Please, Sign In to add comment