有自己的加入也有书本的代码,整合,需要的素材网上找的。
是人机对战,但是没有AI,所以这个五子棋游戏的玩法就有改变了,最短
时间内让电脑也就是白棋获胜就赢了。(供学习 纪念之用)
import javax.swing.*;import javax.imageio.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.*;
import java.io.*;
import java.util.concurrent.ThreadLocalRandom;
public class Gobang2
{
//下面三个位图分别代表棋盘,黑棋,白棋
BufferedImage table;
BufferedImage black;
BufferedImage white;
//当鼠标移动时的选择框
BufferedImage selected;
//定义棋盘的大小
private static int BOARD_SIZE=15;
//定义棋盘宽,高多少个像素
private final int TABLE_WIDTH=500;
private final int TABLE_HEIGHT=501;
//定义棋盘坐标的像素值和棋盘数组之间的比率
private final int RATE=TABLE_WIDTH/BOARD_SIZE;
//定义棋盘坐标的像素值和棋盘数组之间的偏移距离
private final int X_OFFSET=12;
private final int Y_OFFSET=9;
//定义一个二维数组来当棋盘
private int[][] board=new int[BOARD_SIZE][BOARD_SIZE];
//五子棋游戏窗口
JFrame f=new JFrame("星星*五子棋游戏 玩法:在最短时间内让白棋赢");
//五子棋游戏棋盘对应的Canvas组件
ChessBoard chessBoard=new ChessBoard();
//当前选中点的坐标
private int selectedX=-1;
private int selectedY=-1;
private Font fontGameOver = new Font("宋体", Font.BOLD, 50);
public void init()throws Exception
{
ThreadLocalRandom rand= ThreadLocalRandom.current();
table=ImageIO.read(new File("board.jpg"));
black=ImageIO.read(new File("black.gif"));
white=ImageIO.read(new File("white.gif"));
selected=ImageIO.read(new File("select.gif"));
//把每个元素赋值为0代表没有棋子
for(int i=0;i<BOARD_SIZE;i++)
{
for(int j=0;j<BOARD_SIZE;j++)
{
board[i][j]=0;
}
}
chessBoard.setPreferredSize(new Dimension(TABLE_WIDTH,TABLE_HEIGHT));//设置组件的首选大小
chessBoard.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e)
{
//将用户鼠标事件的坐标转换成棋子数组的坐标
int xPos=(int)((e.getX()-X_OFFSET)/RATE);
int yPos=(int)((e.getY()-Y_OFFSET)/RATE);
board[xPos][yPos]=1;//黑棋
judge(1,xPos,yPos);
int dxpos=rand.nextInt(0,14);
int dypos=rand.nextInt(0,14);