随笔 - 1  文章 - 0  评论 - 0  阅读 - 40

五子棋java

JAVA课程设计
利用所学习的JAVA知识设计一个五子棋小游戏

1.团队名称、团队成员介绍
王世俊 计科22-1
2.git地址
https://github.com/joeeojjoe/chess

  1. 项目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.无法实现电脑下黑棋,玩家下白棋。

posted on   joe0010  阅读(40)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示