五子棋java
JAVA课程设计
利用所学习的JAVA知识设计一个五子棋小游戏
1.团队名称、团队成员介绍
王世俊 计科22-1
2.git地址
https://github.com/joeeojjoe/chess
- 项目git提交记录截图
4.项目架构
类ChessFrame主要功能是创建五子棋游戏主窗体和菜单
类ChessModel实现了整个五子棋程序算法的核心
类MainPanel主要完成如下功能:
1、构建一个面板,在该面板上画上棋盘;
2、处理在该棋盘上的鼠标事件
5.项目运行截图
界面以及运行效果
结束
菜单以及功能展示
走棋的记录
6.项目关键代码
//计算机走棋
/*
用穷举法判断每一个坐标点的四个方向的的最大棋子数,
最后得出棋子数最大值的坐标,下子
*/
public void computerDo(int width,int height){
int max_black,max_white,max_temp,max=0;
setisOdd(true);
System.out.println("计算机走棋 ...");
for(int i = 0; i <= width; i++){
for(int j = 0; j <= height; j++){
if(!chessExist(i,j)){//算法判断是否下子
max_white=checkMax(i,j,2);//判断白子的最大值
max_black=checkMax(i,j,1);//判断黑子的最大值
max_temp=Math.max(max_white,max_black);
if(max_temp>max){
max=max_temp;
this.x=i;
this.y=j;
}
}
}
}
setX(this.x);
setY(this.y);
this.arrMapShow[this.x][this.y]=2;
}
//响应鼠标的点击事件,根据鼠标的点击来下棋,
@Override
public void mousePressed(MouseEvent evt){
int x = (evt.getX()-10) / 20;
int y = (evt.getY()-10) / 20;
System.out.println(x+" "+y);
if (evt.getModifiers()==MouseEvent.BUTTON1_MASK){
cm.play(x,y);
System.out.println(cm.getIsOdd()+" "+cm.getarrMapShow()[x][y]);
repaint();
if(cm.judgeSuccess(x,y,cm.getIsOdd())){
cm.showSuccess(this);
evt.consume();
ChessFrame.iscomputer=false;
}
//判断是否为人机对弈
if(ChessFrame.iscomputer&&!cm.getisExist()){
cm.computerDo(cm.getWidth(),cm.getHeight());
repaint();
if(cm.judgeSuccess(cm.getX(),cm.getY(),cm.getIsOdd())){
cm.showDefeat(this);
evt.consume();
}
}
}
}
//构造五子棋游戏的主窗体
public ChessFrame() {
this.setTitle("五子棋游戏");
cm=new ChessModel(1);
mp=new MainPanel(cm);
Container con=this.getContentPane();
con.add(mp,"Center");
this.setResizable(false);
this.addWindowListener(new ChessWindowEvent());
MapSize(20,15);
JMenuBar mbar = new JMenuBar();
this.setJMenuBar(mbar);
JMenu gameMenu = new JMenu("游戏");
mbar.add(makeMenu(gameMenu, new Object[] {
"开局", "棋盘","模式", null, "退出"
}, this));
JMenu lookMenu =new JMenu("视图");
mbar.add(makeMenu(lookMenu,new Object[] {
"Metal","Motif","Windows"
},this));
JMenu helpMenu = new JMenu("帮助");
mbar.add(makeMenu(helpMenu, new Object[] {
"关于"
}, this));
}
7.尚待改进或者新的想法
1.计算机算法效率较低,遇到复杂的局面计算机计算时间很长
2.无法实现电脑下黑棋,玩家下白棋。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了