资源简介
界面借鉴了网上的开源资源,进行了部分改进。alphabeta算法参考了网上的例子,加了一点改进,局面评估采用了网上开源资源的一部分,也加了一部分改进。该程序具备初步的智能,还有很大的改进空间

代码片段和文件信息
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RadialGradientPaint;
import java.awt.RenderingHints;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Ellipse2D;
import javax.swing.*;
import alphabeta.Constant;
import alphabeta.EvalPosition;
import alphabeta.GobangBoard;
import alphabeta.Position;
/**
* 五子棋--棋盘类
*/
public class ChessBoard extends JPanel implements MouseListener {
public static final int MARGIN = 30;// 边距
public static final int GRID_SPAN = 35;// 网格间距
public static final int ROWS = 15;// 棋盘行数
public static final int COLS = 15;// 棋盘列数
Point[] chessList = new Point[(ROWS + 1) * (COLS + 1)];// 初始每个数组元素为null
boolean isBlack = true;// 默认开始是黑棋先
boolean gameOver = false;// 游戏是否结束
int chessCount;// 当前棋盘棋子的个数
int xIndex yIndex;// 当前刚下棋子的索引
Image img;
Image shadows;
Color colortemp;
private GobangBoard gobangBoard = new GobangBoard(15 15);
public ChessBoard() {
// setBackground(Color.GRAY);//设置背景色为橘黄色
img = Toolkit.getDefaultToolkit().getImage(“board.jpg“);
shadows = Toolkit.getDefaultToolkit().getImage(“shadows.jpg“);
addMouseListener(this);
addMouseMotionListener(new MouseMotionListener() {
public void mouseDragged(MouseEvent e) {
}
public void mouseMoved(MouseEvent e) {
// 将鼠标点击的坐标位置转成网格索引
int y1 = (e.getX() - MARGIN + GRID_SPAN / 2) / GRID_SPAN;
int x1 = (e.getY() - MARGIN + GRID_SPAN / 2) / GRID_SPAN;
// 游戏已经结束不能下
// 落在棋盘外不能下
// x,y位置已经有棋子存在,不能下
if (x1 < 0 || x1 > ROWS || y1 < 0 || y1 > COLS || gameOver || findChess(x1 y1))
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
// 设置成默认状态
else
setCursor(new Cursor(Cursor.HAND_CURSOR));
}
});
}
// 绘制
public void paintComponent(Graphics g) {
super.paintComponent(g);// 画棋盘
int imgWidth = img.getWidth(this);
int imgHeight = img.getHeight(this);// 获得图片的宽度与高度
int FWidth = getWidth();
int FHeight = getHeight();// 获得窗口的宽度与高度
int x = (FWidth - imgWidth) / 2;
int y = (FHeight - imgHeight) / 2;
g.drawImage(img x y null);
for (int i = 0; i < ROWS; i++) {// 画横线
g.drawString(Integer.toString(i) MARGIN-20 MARGIN + i * GRID_SPAN);
g.drawLine(MARGIN MARGIN + i * GRID_SPAN MARGIN + (COLS-1) * GRID_SPAN MARGIN + i * GRID_SPAN);
}
for (int i = 0; i < COLS; i++) {// 画竖线
g.drawString(Integer.toString(i) MARGIN + i * GRID_SPAN MARGIN );
g.drawLine(MARGIN + i * GRID_SPAN MARGIN MARGIN + i * GRID_SPAN MARGIN + (ROWS-1) * GRID_SPAN);
}
// 画棋子
for (int i = 0; i < chessCount; i++) {
// 网格交叉点x,y坐标
int xPos = chessList[i].getX() * GRID_SPAN + MARGIN;
int yPos = chessList[i].getY() * GRID_SPAN + MARGI
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-01-16 20:11 fir2\
文件 303 2019-01-16 20:29 fir2\.classpath
文件 380 2017-07-13 15:05 fir2\.project
目录 0 2017-07-13 15:07 fir2\.settings\
文件 57 2017-07-13 15:07 fir2\.settings\org.eclipse.core.resources.prefs
文件 598 2017-07-13 15:05 fir2\.settings\org.eclipse.jdt.core.prefs
目录 0 2019-01-16 20:29 fir2\bin\
目录 0 2019-01-16 20:29 fir2\bin\alphabeta\
文件 1141 2019-01-16 20:29 fir2\bin\alphabeta\Constant.class
文件 923 2019-01-16 20:29 fir2\bin\alphabeta\EvalPosition.class
文件 20468 2019-01-16 20:29 fir2\bin\alphabeta\GobangBoard.class
文件 893 2019-01-16 20:29 fir2\bin\alphabeta\Move.class
文件 703 2019-01-16 20:29 fir2\bin\alphabeta\Position.class
文件 991 2019-01-16 20:29 fir2\bin\alphabeta\StateCount.class
文件 1083 2019-01-16 20:29 fir2\bin\ChessBoard$1.class
文件 9095 2019-01-16 20:29 fir2\bin\ChessBoard.class
文件 701 2019-01-16 20:29 fir2\bin\Point.class
文件 1581 2019-01-16 20:29 fir2\bin\StartChessJfr
文件 3118 2019-01-16 20:29 fir2\bin\StartChessJfr
目录 0 2018-12-26 10:10 fir2\lib\
文件 45 2017-07-13 15:39 fir2\r.bat
目录 0 2019-01-16 20:12 fir2\src\
目录 0 2019-01-15 09:54 fir2\src\alphabeta\
文件 996 2019-01-15 09:53 fir2\src\alphabeta\Constant.java
文件 617 2019-01-11 11:28 fir2\src\alphabeta\EvalPosition.java
文件 33739 2019-01-16 20:10 fir2\src\alphabeta\GobangBoard.java
文件 581 2019-01-11 09:54 fir2\src\alphabeta\Move.java
文件 425 2019-01-11 10:45 fir2\src\alphabeta\Position.java
文件 1004 2019-01-15 10:24 fir2\src\alphabeta\StateCount.java
文件 12161 2019-01-16 20:22 fir2\src\ChessBoard.java
文件 521 2017-07-13 15:07 fir2\src\Point.java
............此处省略1个文件信息
相关资源
- 五子棋C 源代码
- 五子棋游戏实现悔棋功能
- labview设计的五子棋游戏(源码+文档)
- 超强五子棋软件 奕心2015
- AI五子棋训练棋谱
- 最强五子棋
- 基于S3C2410的触摸屏五子棋游戏毕业设
- 五子棋可单机双人,单机与电脑和局
- stm32实现的五子棋AI人机对战+人人对战
- 微信小程序--五子棋单机版
- VC五子棋毕业论文
- unity3D网络五子棋
- 弈心五子棋人工智能引擎
- 基于STM32的五子棋对战平台
- unity网络五子棋源代码
- 智能AI,QT五子棋
- 可判定禁手保存棋局的五子棋源码
- 用汇编编写的五子棋代码
- 五子棋实习报告五子棋实习报告
- 五子棋
- 五子棋(GoBang) 安卓APP 源码
- STM32五子棋游戏
- 蓝牙五子棋 安卓
- VC五子棋源代码 想要的速度下哦 多线
- 五子棋局域网对战 项目源码
- alphaZero五子棋
- 中国象棋和五子棋的算法讲解和vc源代
- 人机博弈 游戏源码解析以及基本搜索
- 6款H5小游戏源码包含有五子棋 3d魔方
- LabVIEW五子棋制作教程
评论
共有 条评论