




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
五子棋一、程序功能介绍 设计一个20*20的五子棋盘,由两个玩家交替下子,并且可以实现以下功能:1.鼠标点击横竖线交汇处落子2.通过落子使得五个黑子或者五个白子在一条横线、竖线或斜线上2.重新开始按钮刷新重新开始3. 检查是否实现了五子连珠4. 有一方五子连珠时提示结果5.结束按钮结束程序二、 课程设计过程 1.如图一:程序流程图2.程序功能设计(1)先写draw类,在类中先画出一个Jframe窗口体,在这个窗口体上增加重新开始,退出,和主棋盘按钮。并且设置监听按钮的监听。并在draw类中设置主函数启动程序。(2)fivechess类实现程序的功能,定义wh_array二维数组表示棋盘。定义wh_arr一维数组,将wh_array值通过从上往下转换成一维,可用于判断输赢。定义paintComponent(Graphics g)绘图函数,将整个棋盘给画出。3. 程序中用的变量、方法、类等class fivechess extends JPanel /定义变量,落子监听,判断输赢int wh_array = new int2020; / 定义二维数组,表示棋子在棋盘的位置int wh_arr = new int430; / 定义一维数组,转换二维数组,判断是否连线public void mouseClicked(MouseEvent e) / 单击鼠标落子并且判断输赢public fivechess() / 鼠标操作protected void paintComponent(Graphics g) / 绘图函数public Dimension getPerferredSize()/返回期盼大小public class draw extends JFrame /添加按钮,设置监听,启动程序public draw()/绘制窗口,增加重新开始和退出按钮b.addActionListener()/重新开始按钮设置监听exit. addActionListener()/退出按钮设置监听public static void main(String args)/主函数启动程序三、程序设计的完整代码及注解/双人对战五子棋import java.awt.*;import java.awt.event.*;import javax.swing.*;class fivechess extends JPanel / 函数int wh_color, x1, y1, wh_x, wh_y, wh_i, wh_j, wh_arri, wh_stop = 3;/ 定义各种整型变量/x1,y1表示坐标 wh_x,wh_y圆大小坐标 wh_i,wh_j二维数组boolean wh_rf; / 定义布尔型变量,判断玩家String s;int wh_array = new int2020; / 定义二维数组int wh_arr = new int430; / 定义一维数组public fivechess() / 鼠标操作for (int i = 0; i 20; i+) / 给二维数组赋值为0for (int j = 0; j 20; j+) wh_arrayij = 0; / 赋值为0for (int i = 0; i 54 & x1 34 & y1 674) / 在棋盘范围内单击鼠标才运行程序if (wh_arraywh_iwh_j = 0) / 当二维数组取值为0时运行程序wh_rf = !wh_rf; / Boolean值单击后循环变化if (wh_rf = true) / Boolean值为TRUE时wh_color = 1; / 令wh_color=1s = 黑棋;wh_arraywh_iwh_j = 1; / 对应的二维数组值赋为1wh_arrwh_arri = 1; / 对应的一维数组赋值为1if (wh_rf = false) / Boolean值为FALSE时wh_color = 2; / wh_color为2s = 白棋;wh_arraywh_iwh_j = 2; / 对应的二维数组值赋为2wh_arrwh_arri = 2; / 对应的一维数组值赋为2for (int i = 0; i 20; i+) / 确定鼠标位置的范围for (int j = 0; j = 54 + i * 32& x1 = 34 + j * 32& y1 34 + (j + 1) * 32)/ 鼠标在此范围内时wh_x = 54 + (i) * 32 + 1; / 取这个小方格的左上角x坐标值+1wh_y = 34 + (j) * 32 + 1; / 取这个小方格的左上角y坐标值+1if (wh_color = 1) / 当棋子为黑色时g.setColor(Color.BLACK); / 设置颜色if (wh_color = 2) / 如果棋子为白色g.setColor(Color.WHITE); / 设置颜色g.fillOval(wh_x, wh_y, 30, 30); / 在这个小方格范围内画圆形for (int i = 0; i 395; i+) / 判断黑白双方谁胜利g.setColor(Color.RED);if (wh_arri = 1 & wh_arri + 1 = 1& wh_arri + 2 = 1 & wh_arri + 3 = 1& wh_arri + 4 = 1 & (i + 4) / 20 = i / 20)| / 判断横行黑子连续为5个(wh_arri = 1 & wh_arri + 20 = 1& wh_arri + 40 = 1& wh_arri + 60 = 1& wh_arri + 80 = 1 & (i + 4) / 20 = i / 20)| / 判断竖行黑子连续为5个(wh_arri = 1 & wh_arri + 19 = 1& wh_arri + 2 * 19 = 1& wh_arri + 3 * 19 = 1& wh_arri + 4 * 19 = 1 & (i - 4) / 20 = i / 20)| / 判断斜左黑子连续为5个(wh_arri = 1 & wh_arri + 21 = 1& wh_arri + 2 * 21 = 1& wh_arri + 3 * 21 = 1 & wh_arri + 4 * 21 = 1) / 判断斜右黑子连续为5个g.drawString(黑棋胜利, 300, 300); / 显示黑棋胜利wh_stop = 0; / 当胜利时赋值为0,再次运行时将停止if (wh_arri = 2 & wh_arri + 1 = 2& / 判断白棋子wh_arri + 2 = 2 & wh_arri + 3 = 2& wh_arri + 4 = 2 & (i + 4) / 20 = i / 20)| / 判断横行白子连续为5个(wh_arri = 2 & wh_arri + 20 = 2& wh_arri + 40 = 2& wh_arri + 60 = 2& wh_arri + 80 = 2 & (i + 4) / 20 = i / 20)| / 判断竖行白子连续为5个(wh_arri = 2 & wh_arri + 19 = 2& wh_arri + 2 * 19 = 2& wh_arri + 3 * 19 = 2& wh_arri + 4 * 19 = 2 & (i - 4) / 20 = i / 20)| / 判断斜左白子连续为5个(wh_arri = 2 & wh_arri + 21 = 2& wh_arri + 2 * 21 = 2& wh_arri + 3 * 21 = 2 & wh_arri + 4 * 21 = 2) / 判断斜行连续5子g.drawString(白棋胜利, 300, 300);wh_stop = 0; / 单击事件结束public void mouseEntered(MouseEvent e) / 鼠标进入组件的事件public void mouseExited(MouseEvent e) / 鼠标离开组件的事件public void mousePressed(MouseEvent e) / 鼠标按下时的事件public void mouseReleased(MouseEvent e) / 鼠标放开时的事件); / 监听器结束addMouseMotionListener(new MouseMotionListener() / 鼠标motion监听public void mouseMoved(MouseEvent e) / 处理鼠标移动事件public void mouseDragged(MouseEvent e) / 处理鼠标拖动事件);protected void paintComponent(Graphics g) / 绘图函数g.setColor(Color.gray);g.fill3DRect(0, 0, 748, 728, true);g.setColor(Color.BLACK); / 设置颜色for (int i = 0; i 20; i+) / 循环画棋盘g.drawLine(70, 50 + i * 32, 678, 50 + i * 32); / 画棋盘的横线g.drawLine(70 + i * 32, 50, 70 + i * 32, 658); / 画棋盘的纵线g.drawString(五子棋, 300, 30); / 在面板上输出五子棋wh_stop = 3; / 刷新后wh_stop由0变为3可以响应buttonfor (int i = 0; i 20; i+) / 给二维数组赋值为0for (int j = 0; j 20; j+) wh_arrayij = 0; / 赋值为0for (int i = 0; i 400; i+) / 给一维数组赋初始值0wh_arri = 0;public Dimension getPerferredSize() return new Dimension(748, 728);public class draw extends JFrame / 函数JTextField t;public draw() /super(五子棋); / 窗口名Container c = getContentPane(); / 返回当前内容窗值c.setLayout(null);fivechess wh = new fivechess();wh.setBounds(0, 0, 748, 728); / 设置panel大小JButton b = new JButton(重新开始); / 定义按钮JButton exit = new JButton(退出); / 定义按钮c.add(exit);c.add(b); / 添加按钮c.add(wh); / 添加panelb.setBounds(70, 20, 100, 20); / 设置按钮大小exit.setBounds(580, 20, 80, 20);b.addActionListener(new ActionListener() / 设置监听public void actionPerformed(ActionEvent e) repaint(); / 重画);exit.addActionListener(new ActionListener() / 设置监听public void actionPerformed(ActionEvent e) System.exit(0););public static void main(String args) / 主函数draw app = new draw(); /app.setLocation(300, 0); / 设置窗口位置app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); / 关闭框架行为属性app.setSize(748, 728); / 设置面板框架frame大小app.setVisible(true); / 设置可见app.setResizable(false); 四、程序运行的结果分析 1.如图二:进入游戏界面 图二 进入游戏界面2.如图三:落子 图三 落子3.如图四:结束游戏图四 游戏结束五、课程设计总结 通过短短的一个学期java的学习,我们从一个对
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2023年度计算机操作员题库及参考答案详解【研优卷】
- 2024主管护师(中级)模拟试题及完整答案详解【夺冠】
- 自考专业(金融)题库检测试题打印附参考答案详解(典型题)
- 高校教师资格证之《高等教育法规》综合检测题型汇编含答案详解(新)
- 中班数学教案《10以内数的守恒》反思
- 2025年天然气水合物(可燃冰)开采技术深海地质风险防控与安全风险评价体系研究报告
- 2025年城市轨交站点交通组织优化与风险预防与控制报告
- 养老院工作计划
- 黑吉辽蒙2026届高三上学期9月开学联考政治试卷(含答案)
- 车辆租赁协议模板
- 2025年人社局编外考试题库及答案
- 木制品厂安全生产培训课件
- 乡镇人大主席“干在实处、走在前列”学习讨论发言材料
- 电工四级考试理论题库及答案
- 世纪英才教程课件
- 婴幼儿发展引导员技能竞赛考试题库(含答案)
- 小学生航空航天知识题库及答案
- 无人机飞行操作规范手册
- 统编版八年级上册道德与法治第三课 共建网络美好家园 课件
- 【里斯】年轻一代新能源汽车消费洞察与预测 -新物种 新理念 新趋势(2024-2025)
- 企业数据安全管理制度与操作规程
评论
0/150
提交评论