java图形界面五子棋源代码共享

这是一个没有AI的人机对战五子棋游戏,目标是让玩家在最短时间内使白棋获胜。代码整合自个人实践与书籍,可供学习与纪念。
摘要由CSDN通过智能技术生成


有自己的加入也有书本的代码,整合,需要的素材网上找的。

是人机对战,但是没有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);
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值