[Java] 棋盘界面 →→→→→进入此内容的聊天室

来自 , 2019-10-20, 写在 Java, 查看 105 次.
URL http://www.code666.cn/view/1c54985e
  1. package day04;
  2. import java.awt.*;
  3. import javax.swing.*;
  4. import java.awt.event.*;
  5. import java.awt.image.*;
  6. import javax.imageio.*;
  7. import java.io.*;
  8. public class Gobang
  9. {
  10.         BufferedImage table;
  11.         BufferedImage black;
  12.         BufferedImage white;
  13.         BufferedImage selected;
  14.         private static int BOARD_SIZE = 15;
  15.         private final int TABLE_WIDTH = 535;
  16.         private final int TABLE_HETGHT = 536;
  17.         private final int RATE = TABLE_WIDTH / BOARD_SIZE;
  18.         private final int X_OFFSET = 5;
  19.         private final int Y_OFFSET = 6;
  20.         private String[][] board = new String[BOARD_SIZE][BOARD_SIZE];
  21.         JFrame f = new JFrame("五子棋游戏");
  22.         ChessBoard chessBoard = new ChessBoard();
  23.         private int selectedX = -1;
  24.         private int selectedY = -1;
  25.         public void init()throws Exception
  26.         {
  27.                 table = ImageIO.read(new File("image/board.jpg"));
  28.                 black = ImageIO.read(new File("image/black.gif"));
  29.                 white = ImageIO.read(new File("image/white.gif"));
  30.                 selected = ImageIO.read(new File("image/selected.gif"));
  31.                 for (int i = 0 ; i < BOARD_SIZE ; i++)
  32.                 {
  33.                         for ( int j = 0 ; j < BOARD_SIZE ; j++)
  34.                         {
  35.                                 board[i][j] = "╋";
  36.                         }
  37.                 }
  38.                 chessBoard.setPreferredSize(new Dimension(
  39.                         TABLE_WIDTH , TABLE_HETGHT));
  40.                 chessBoard.addMouseListener(new MouseAdapter()
  41.                 {
  42.                         public void mouseClicked(MouseEvent e)
  43.                         {
  44.                                 int xPos = (int)((e.getX() - X_OFFSET) / RATE);
  45.                                 int yPos = (int)((e.getY() - Y_OFFSET ) / RATE);
  46.                                 board[xPos][yPos] = "●";
  47.                                 chessBoard.repaint();
  48.                         }
  49.                         public void mouseExited(MouseEvent e)
  50.                         {
  51.                                 selectedX = -1;
  52.                                 selectedY = -1;
  53.                                 chessBoard.repaint();
  54.                         }
  55.                 });
  56.                 chessBoard.addMouseMotionListener(new MouseMotionAdapter()
  57.                 {
  58.                         public void mouseMoved(MouseEvent e)
  59.                         {
  60.                                 selectedX = (e.getX() - X_OFFSET) / RATE;
  61.                                 selectedY = (e.getY() - Y_OFFSET) / RATE;
  62.                                 chessBoard.repaint();
  63.                         }
  64.                 });
  65.                 f.add(chessBoard);
  66.                 f.pack();
  67.                 f.setVisible(true);
  68.         }
  69.         public static void main(String[] args)throws Exception
  70.         {
  71.                 Gobang gb = new Gobang();
  72.                 gb.init();
  73.         }
  74.         class ChessBoard extends JPanel
  75.         {
  76.                 public void paint(Graphics g)
  77.                 {
  78.                         g.drawImage(table , 0 , 0 , null);
  79.                         if (selectedX >= 0 && selectedY >= 0)
  80.                                 g.drawImage(selected , selectedX * RATE + X_OFFSET ,
  81.                         selectedY * RATE + Y_OFFSET, null);
  82.                         for (int i = 0 ; i < BOARD_SIZE ; i++)
  83.                         {
  84.                                 for ( int j = 0 ; j < BOARD_SIZE ; j++)
  85.                                 {
  86.                                         if (board[i][j].equals("●"))
  87.                                         {
  88.                                                 g.drawImage(black , i * RATE + X_OFFSET
  89.                                                         , j * RATE + Y_OFFSET, null);
  90.                                         }
  91.                                         if (board[i][j].equals("○"))
  92.                                         {
  93.                                                 g.drawImage(white, i * RATE  + X_OFFSET
  94.                                                         , j * RATE  + Y_OFFSET, null);
  95.                                         }
  96.                                 }
  97.                         }
  98.                 }
  99.         }
  100. }

回复 "棋盘界面"

这儿你可以回复上面这条便签

captcha