Advertisement
ridjis

KonjicevSkok

Jan 24th, 2015
437
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.19 KB | None | 0 0
  1. import java.awt.BorderLayout;
  2. import java.awt.Color;
  3. import java.awt.Container;
  4. import java.awt.GridLayout;
  5. import java.awt.event.MouseAdapter;
  6. import java.awt.event.MouseEvent;
  7.  
  8. import javax.swing.Icon;
  9. import javax.swing.ImageIcon;
  10. import javax.swing.JFrame;
  11. import javax.swing.JLabel;
  12. import javax.swing.JPanel;
  13.  
  14. public class KonjicevSkok extends JFrame {
  15.    
  16.     private ChessField[][] board = new ChessField[8][8];
  17.     private Icon knightIcon = new ImageIcon("konjic.png");
  18.     private ChessField knight;
  19.    
  20.     private class ChessField extends JPanel {
  21.         private JLabel label;
  22.         private int x, y;
  23.        
  24.         public ChessField(Color color, int x, int y) {
  25.             this.x = x;
  26.             this.y = y;
  27.             setBackground(color);
  28.             label = new JLabel();
  29.             setLayout(new BorderLayout());
  30.             add(label);
  31.            
  32.             addMouseListener(
  33.                 new MouseAdapter() {
  34.                     @Override
  35.                     public void mouseClicked(MouseEvent arg0) {
  36.                         move();
  37.                     }
  38.                 }
  39.             );
  40.         }
  41.        
  42.         private void move() {
  43.             int xDiff = Math.abs(x - knight.x);
  44.             int yDiff = Math.abs(y - knight.y);
  45.            
  46.             if ((xDiff == 1 && yDiff == 2) || (xDiff == 2 && yDiff == 1)) {
  47.                 knight.reset();
  48.                 knight.setVisited();
  49.                 knight = this;
  50.                 setKnight();
  51.             }
  52.         }
  53.        
  54.         public void setKnight() {
  55.             label.setIcon(knightIcon);
  56.         }
  57.        
  58.         public void reset() {
  59.             label.setIcon(null);
  60.         }
  61.        
  62.         public void setVisited() {
  63.             setBackground(Color.GREEN);
  64.         }
  65.     }
  66.    
  67.     public KonjicevSkok() {
  68.         JPanel chessBoard = new JPanel();
  69.         chessBoard.setLayout(new GridLayout(8, 8));
  70.  
  71.         for (int i = 0; i < 8; i++) {
  72.             for (int j = 0; j < 8; j++) {
  73.                 boolean gray = (i + j) % 2 == 1;
  74.                 ChessField f = null;
  75.                 if (gray) {
  76.                     f = new ChessField(Color.GRAY, i, j);
  77.                 } else {
  78.                     f = new ChessField(Color.WHITE, i, j);
  79.                 }
  80.                 board[i][j] = f;
  81.                
  82.                 if (i == 0 && j == 0) {
  83.                     f.setKnight();
  84.                     knight = f;
  85.                 }
  86.                
  87.                 chessBoard.add(f);
  88.             }
  89.         }
  90.        
  91.         Container c = getContentPane();
  92.         c.add(chessBoard);
  93.     }
  94.  
  95.     public static void main(String[] args) {
  96.         KonjicevSkok g = new KonjicevSkok();
  97.         g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  98.         g.setSize(400, 400);
  99.         g.setTitle("Konjicev skok");
  100.         g.setVisible(true);
  101.     }
  102. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement