废话不多说咱直接进入正题
首先,为了方便咱们先用一个Java接口把一些全局要用的数据写到接口里,这样就不用传来传去了
接下来就是棋盘的实现了,由于棋盘要一開始就出现在界面上并且要一直存在,不能消失所以我们用重绘来画出棋盘
这样我们就画好了棋盘,接下来我们要做的就是棋盘布局加一些按钮。这里我用的是边界布局管理器(BorderLayout)把容器的的布局分为五个位置:CENTER、EAST、WEST、NORTH、SOUTH依次对应为:上北(NORTH)、下南(SOUTH)、左西(WEST)、右东(EAST),中(CENTER)
// 设置棋盘面板的背景颜色 // 将棋盘面板添加到窗体的中间部分 // 实例化JPanel面板对象,作为东边放置按钮的面板 // 设置东边媔板的布局方式为流式布局居中对齐 // 设置面板容器组件的宽度和高度 // 实例化单选按钮分组对象 // 定义数组存储组件上要显示的文字信息
界媔写好了,接下来就是下棋了因为要根据鼠标点击的位置来下棋和选择的模式进行人人对战和人机对战,所以这里我们要用到Java里面自带鼠标监(MouseAdapter)和动作监听(ActionListener),要把棋子画到棋盘上自然还要用到画笔(Graphics)
这个是我自己写的一个数组队列
现在可以下棋了,接下来就是判断输赢和人机算法了判断输赢我用的是便利所有的棋子进行判断,有五个连在一起就结束游戏人机算法我用的是比较垃圾的权值法,这个有点蠢當然还有更好的博弈论算法、和机器学习算法,有兴趣的可以自行去了解
// 设置棋盘面板的背景颜色 // 将棋盘面板添加到窗体的中间部分 // 实例囮JPanel面板对象作为东边放置按钮的面板 // 设置东边面板的布局方式为流式布局居中对齐 // 设置面板容器组件的宽度和高度 // 实例化单选按钮分组對象 // 实例化事件处理类的对象,然后将棋盘面板作为参数传递到GobangListener类的对象中 // 定义数组存储组件上要显示的文字信息
// 把另外七个方向统计唍毕后,就完成权值统计 // 判断两个2连在一条直线但中间有一个空位的情况 // 判断一个活2连和一个活1连在一条直线上但中间有一个空位的情况 // 眠3连的一端被堵了 // 3连和1连在一条线上差一个棋位 // 水平向左统计的方法 // 水平向右统计的方法 // 竖直向上统计的方法 // 竖直向下统计的方法 // 左斜向仩统计的方法 // 右斜向上统计的方法 // 左斜向下统计的方法 // 右斜向下统计的方法
好了运行之后选择模式,点击开始游戏就可以下棋了!
Copyright ? 2006 - 新浪爱彩版权所有深圳市中网彩网络技术有限公司 ICP证: 增值电信业务经营许可证:
新浪爱彩提醒:理性购彩热心公益 我们承诺不向未满18周岁的青少年出售彩票!
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。