资源简介
五子棋的人机对弈的实现,其编程语言是 java,带gui界面,这适合AI的初学者下载学习
代码片段和文件信息
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RadialGradientPaint;
import java.awt.RenderingHints;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Ellipse2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.Jframe;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class fivechess extends Jframe{
public fivechess(){
GameBoard gb=new GameBoard();
Container contentPane=getContentPane();
contentPane.add(gb);
gb.setOpaque(true);
add(gb);
setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
setSize(526549);
setLocation(400100);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
fivechess f=new fivechess();
f.settitle(“五子棋单机版-人机对战“);
f.setVisible(true);
}
public class GameBoard extends JPanel implements MouseListener{
BufferedImage bgImage=null;//背景图片
int row=14;//棋盘行数
int col=14;//棋盘列数
int span=30;//每个单元格的宽度
int dis=30;//边距
int[][] ChessBoard=new int[row+1][col+1];//棋子代表的二维数组,其中0代表没有落子1代表黑子2代表白子
//保存每一步的操作,便于悔棋
int[] allx=new int[(row+1)*(col+1)];
int[] ally=new int[(row+1)*(col+1)];
int chessNum=0;//已经下了的棋子数目
boolean IsBlack=true;//判断哪方下子(黑子先行)
int lastx=-1lasty=-1; //最后下子的位置
boolean Win=false;//是否胜利的标志
int[][][] Player=new int[row+1][col+1][4];
int[][][] Computer=new int[row+1][col+1][4];
//设置棋子半径
static final int radius=15;
//棋盘的位置的分值(固定为15x15的棋盘)
//构造函数
public GameBoard() {
try {
bgImage=ImageIO.read(new File(“src/wuziqi.jpg“));
} catch (IOException e) {
e.printStackTrace();
}
this.addMouseListener(this);
//初始化棋盘
for(int i=0;i
for(int j=0;j ChessBoard[i][j]=0;
}
}
}
//绘制棋盘
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(bgImage 0 0 row*span+2*dis col*span+2*dis null);
//绘制线条
for(int i=0;i<=row;i++){//横线
g.drawLine(dis dis+i*span col*span+dis dis+i*span);
}
for(int j=0;j<=col;j++){//竖线
g.drawLine(dis+j*span dis dis+j*span row*span+dis);
}
//绘制棋子
for(int i=0;i
for(int j=0;j if(ChessBoard[i][j]!=0){//存在落子
//获取网格交叉点的坐标(在屏幕上的)
int x=i*span+dis;
int y=j*span+dis;
if(ChessBoard[i][j]==1){//如果落黑子
g.setColor(Color.BLACK);
RadialGradientPaint paint=new RadialGradientPaint(x-radius+25y-radius+1020new float[]{0f1f}new Color[]{Color.WHITEColor.BLACK});
((Graphics2D) g).setPaint(paint);
((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING RenderingHints.VALUE_ANTIALIAS_ON);
((Graphics2D) g).setRenderingHint(RenderingHints.KEY_
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-11-14 19:34 FiveChessGame\
文件 301 2017-11-14 18:34 FiveChessGame\.classpath
文件 389 2017-11-14 18:34 FiveChessGame\.project
目录 0 2017-11-14 18:34 FiveChessGame\.settings\
文件 598 2017-11-14 18:34 FiveChessGame\.settings\org.eclipse.jdt.core.prefs
目录 0 2017-11-16 23:29 FiveChessGame\bin\
文件 6082 2017-11-17 14:47 FiveChessGame\bin\fivechess$GameBoard.class
文件 1066 2017-11-17 14:47 FiveChessGame\bin\fivechess.class
文件 14069 2017-11-14 21:07 FiveChessGame\bin\wuziqi.jpg
目录 0 2017-11-14 21:07 FiveChessGame\src\
文件 7662 2017-11-17 14:47 FiveChessGame\src\fivechess.java
文件 14069 2017-11-14 21:07 FiveChessGame\src\wuziqi.jpg
文件 10425 2017-11-14 18:36 FiveChessGame\wuziqi.jpg
- 上一篇:获取有赞token
- 下一篇:五子棋 人机对弈 JAVA实现
相关资源
- 五子棋 人机对弈 JAVA实现
- 微信java支付和登录api demo
- Java经典编程题汇总
- java在线预览需要的jar包
- 未来教育二级java激活码
- Java课程设计文档说明书商城项目
- 双人对战java贪吃蛇
- Java爬虫项目
- 坦克大战Java源码适合新手
- JavaDES通过秘钥加密解密Demo
- 基于java socket使用tcp udp进行简易控制
- JAVA网络程序设计动态温度曲线绘制
- Java动态编译Java代码,运行在内存中,
- javaweb登录页面
- Java深入微服务原理改造房产销售平台
- 基于Java的Oracle学生成绩管理系统
- 用java做一个计算器和科学计算器
- Jpcap.dll_64x_32x,及。jar包
- java录屏详细代码
- Java学习路径.pdf
- ftp安装 Java实现客户端
- 射击小球键控java小游戏
- Java+SQLServer学生成绩管理系统
- jtds 1.2.7.jar
- javax.servlet.jar包
- java开发详细设计文档模板
- java的学生管理系统+数据库
- webupload Java版轻松上传4个G文件
- Javaweb图书借阅管理系统
- 144达内1805java培优班课程.txt
评论
共有 条评论