今天为大家继续分享泡泡堂小游戏的开发与制作 420,目前系统已经完成了初步功能,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步!!
开发环境
开发语言为Java,开发环境Eclipse或者IDEA都可以。运行主程序,或者执行打开JAR文件即可以运行本程序
系统框架
利用JDK自带的SWING框架开发,不需要安装第三方JAR包。纯窗体模式,直接运行Main文件即可以。选中Main.java,点右键 run as application启动相关程序。也客户把程序打包成JAR包,双击JAR即可以启动相关的程序。
游戏主要功能
五子棋游戏简介
五子棋起源于中国,是全国智 竞技项目之一,是一种两人对弈的纯策略型棋类游戏。双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连珠者获胜。
游戏规则
(1)对局双方各执一色棋子。
(2)空棋盘开局。
(3)黑先、白后,交替下子,每次只能下一子。
(4)棋子下在棋盘的空白点上,棋子下定后不得移动或拿走。
(5)黑方的第一枚棋子必须下在天元点上,即中心交叉点
五子棋对局,执行黑方指定开局、三手可交换、五手两打的规定。整个对局过程中黑方有禁手,白方无禁手。黑方禁手有三三禁手、四四禁手和长连禁手三种。
人机对战功能
本程序的最大特色是有人对战功能,其中人为黑方,机器和白方。机器有较高的AI水平,能打败90%以上的用户。人下完一颗棋后,机器能在1秒时间完成下棋。游戏结束后,系统会给出相关的提示,并且恭喜获胜选手。
运行效果
1 开始界面
2 人机对战界面
3 游戏结束界面
关键代码
public void updatePaint(Graphics g) {
if (!this.over) { //如果是轮到电脑下
if (this.computer)
this.ComTurn(); //得到最佳下子点
//遍历当前棋盘上的五连子情况,判断输赢
for (i = 0; i <= 1; i++)
for (j = 0; j < 672; j++) {
if (this.win[i][j] == 5)
if (i == 0) { //人赢
this.pwin = true;
this.over = true; //游戏结束
break;
} else {
this.cwin = true; //电脑赢
this.over = true;
break;
}
if (this.over) //一遇到五连子退出棋盘遍历
break;
}
g.setFont(new Font("华文行楷", 0, 20));
g.setColor(Color.RED);
//画出当前棋盘所有棋子
for (i = 0; i <= 15; i++)
for (j = 0; j <= 15; j++) { //如果board元素值为0,则该坐标处为黑子
if (this.board[i][j] == 0) {
g.drawImage(black.getImage(), i * 30 + 31, j * 30 + 31, black.getImage().getWidth(black.getImageObserver()) - 3, black.getImage().getHeight(black.getImageObserver()) - 3, black.getImageObserver());
}
//如果board元素值为1,则该坐标处为白子
if (this.board[i][j] == 1) {
g.drawImage(white.getImage(), i * 30 + 31, j * 30 + 31, white.getImage().getWidth(white.getImageObserver()) - 3, white.getImage().getHeight(white.getImageObserver()) - 3, white.getImageObserver());
}
}
//画出白子(电脑)当前所下子,便于辨认
if (this.board[m][n] != 2)
g.drawImage(current.getImage(), m * 30 + 31, n * 30 + 31, current.getImage().getWidth(current.getImageObserver()) - 4, current.getImage().getHeight(current.getImageObserver()) - 4, current.getImageObserver());
//判断输赢情况
//人赢
if (this.pwin)
g.drawString("您太厉害了!再来一次请重新开始游戏..", 20, 200);
//电脑赢
if (this.cwin)
g.drawString("很遗憾,你输了!再来一次请重新开始游戏..", 84, 190);
//平局
if (this.tie)
g.drawString("不分胜负!再来一次请重新开始游戏..", 80, 200);
g.dispose();
}
}