五子棋V1
利用void java.awt.Graphics.drawLine(int x1, int y1, int x2, int y2)函数画棋盘
Draws a line, using the current color, between the points (x1, y1) and (x2, y2) in this graphics context's coordinate system.
利用void java.awt.Graphics.fillOval(int x, int y, int width, int height)函数画棋子
Fills an oval bounded by the specified rectangle with the current color.
其中(x,y)是圆的正接矩形左上点。
缺陷:画棋子时会造成闪屏等现象。
五子棋V2
利用图片作为棋子和棋盘。
BufferedImage image = null;
try {
image = ImageIO.read(new File("E:/ve_eclipse/workspace/fivechess/src/image/chesstable1.jpg"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
g.drawImage(image, 0, 50, this);
界面最小化后再开启会变成新界面:重绘
利用chesses[][]存储的落子情况重绘
悔棋功能:
新建类Node 存储每个落子点的坐标和棋子颜色
List<Node> nodeList = new ArrayList<Node>(); 存储落子顺序
悔棋时Node java.util.List.remove(int index)函数
Removes the element at the specified position in this list (optional operation). Shifts any subsequent elements to the left (subtracts one from their indices). Returns the element that was removed from the list
复盘功能:按照落子顺序重新下一遍。
关键是重绘和暂停。
重绘按钮的事件监听器:
jBut4.addActionListener(new ActionListener(){
/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
clearchesses();
blnstate = false;
javax.swing.SwingUtilities.updateComponentTreeUI(fcUI);
}
});
重绘和暂停:
if(!blnstate){
noderepaint(g);//根据nodelist重绘
}
myrepaint(g);//根据chesses[][]重绘
//根据落子顺序nodelist重绘
private void noderepaint(Graphics g){
for(int i = 0; i< nodeList.size(); i++){
Node node = nodeList.get(i);
chesses[node.getX()][node.getY()] = node.getColor();
myrepaint(g);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
重新开始功能:清空chesses[][] 和nodelist
界面刷新:void javax.swing.SwingUtilities.updateComponentTreeUI(Component c)
A simple minded look and feel change: ask each node in the tree to updateUI() -- that is, to initialize its UI property with the current look and feel.
五子棋V3
五子棋智能算法:
思路一:搜索对手落子点周围3*8个点中空格的情况。(经观察各个威胁到己方的棋局,在落子点三个棋子之内的概率最大)计算每个空格周围3*8个方向上各个方向上的棋子情况。选择分值最高的落子。。。。。属于防守型。。。。。不能判断己方形势。
思路二:每个棋子的落下,都会对整个局势产生影响,这种影响在该子周围4*8个之内,并且距离落子点越近,影响越大。连子具有指数型叠加效应,其中,+*+*+具有连子的相同叠加效应。都失败了得说。。。。。
希望能够提示对手最新落子点。。。。还没去写
另外按钮的显示总是迟延。。。。
分享到:
相关推荐
五子棋社团工作计划总结总结.doc
【毕业设计】MATLAB实战应用案例小游戏(附MATLAB代码):围五子棋.zip
1引言1 1.1系统开发背景2 1.1系统开发的目的和意义3 1.2完成的主要工作4 2需求分析和总体设计4 2.1需求分析与设计思路5 2.1.1关键技术说明5 2.1.2...模块实现9 4系统运行结果10 5课程设计总结12 五子棋游戏的设计与实现...
网络五子棋设计报告 大家下载着看看吧 网络五子棋设计报告 网络五子棋设计报告
本文档是关于大学本科课程实训的一个项目,是用c语言写的一个关于五子棋的实训报告,并且可视化
北京邮电大学世纪学院实习报告,主要针对五子棋的设计过程做出分析,附有代码说明
五子棋程序源码 加 报告 五子棋程序源码 加 报告 五子棋程序源码 加 报告
python课程设计完整 五子棋
五子棋课程设计报告 五子棋课程设计报告 五子棋课程设计报告
Java五子棋设计报告.pdf
使用C语言基于EGE图形库实现的五子棋小游戏,实验报告,C语言程序设计的结课作业,实现了人机对弈与人人对战功能。有相应的音乐
NULL 博文链接:https://javaprince.iteye.com/blog/798714
使用python写的基于两层博弈树的五子棋AI。加入了阿尔法贝塔剪枝。 python版本:3+,应该可以在命令行里直接跑。 电脑执黑,玩家执白。无禁手。 因为只有两层博弈树,请大家不要嫌他菜哈哈哈,仅供大家学习参考。 ...
五子棋游戏是一个深受人们喜爱的游戏,通常是人机对弈,本程序设计为人与人对弈,一方执黑棋,一方执白棋,轮流走棋,每方都试图在游戏结束前让自己的棋子五子相连。按键盘上的方向键可以移动光标,回车键可以摆放...
Python编程与数据分析-结课报告-五子棋对弈的算法设计包含以下两部分文件: 1.【报告】分为五章进行展示,包括程序思路介绍、设计方案、源程序代码、程序运行,以及结语。 2.【代码】包括4个python代码文件,用于...
五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰...
Java实现五子棋源码+实验报告
基于Python实现五子棋(三人对战) 大学生课程设计 基于python的课程设计 自己大二写的课程设计
五子棋游戏开发总结c语言版