




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计说明书 NO.13五子棋小游戏1.课程设计目的随着科技的进步, 我们更应该掌握好Java这门语言。利用所学的知识做个五子棋的小游戏,让学生对所学基础知识进行梳理、巩固和提高。通过课程设计使学生熟悉系统开发的基本流程,掌握系统开发的各个环节的要点,培养系统分析和设计的能力。2.设计方案论证2.1概要设计该程序为一简易五子棋,棋盘为15*15,白子先落。可以悔棋,点击鼠标右键悔棋,最多悔3步。在每次下子前,先判断该处有无棋子,有则不能落子,超出边界不能落子。下子时白子先落,判断胜利为偶数是黑棋胜利,奇数白棋胜利。任何一方有达到横、竖、撇、捺连到5子则胜利。2.1.1 系统功能描述(1)显示黑棋玩家(2)显示白棋玩家;(3)显示棋数(4)实现电脑可以自动下棋(5)扫描整个棋盘记录连在一起的黑白棋子数;(6)实现人与电脑有次序的下棋(7)判断人与电脑的胜负(8)电脑估计2.1.2 系统开发环境硬件环境:Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。软件环境:Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。2.2详细设计2.2.1 程序流程图图1 系统流程图(1) 棋盘的绘制为主模块(2) 建立两个玩家(3) 每人走一步(4) 如果有五个连续的棋子,就判断其胜利2.2.2程序中主要方法说明(1)建立一个主方法wuziqi并采用构造方法用super去调用父类wuziqipublic wuziqi()super(五子棋);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/关闭按钮Container con=this.getContentPane();this.addMouseListener(this);/添加监听tool.add(btnstart);/添加按钮tool.add(btnstop);this.setSize(550,500);/设置窗体大小this.setVisible(true); int w=20; /间距大小 是双数 int px=100,py=100; /棋盘的坐标 int pxw=(px+w), pyw=(py+w); int width=w*16,height=w*16; int vline=(width+px); /垂直线的长度 int hline=(height+py); /水平线的长度 /* * 画棋盘 */public void paint(Graphics g)g.clearRect(0, 0, this.getWidth(), this.getHeight(); /清除面板g.setColor(Color.BLACK); /设置网格颜色g.drawRect(px, py, width, height); /网格大小g.drawString(简易五子棋, 110, 70);for(int i=0;i15;i+)g.drawLine(pxw+i*w,py,pxw+i*w,hline);/每条横线和竖线g.drawLine(px,pyw+i*w,vline,pyw+i*w);(2)建立判断胜利的方法victory()并采用有参函数传递采用if-else的方法实现输赢public void victory(int x,int y,Vector contain) /判断胜利的方法int cv=0; /计算垂直的变量int ch=0; /计算水平的变量int ci1=0; /计算斜面的变量1int ci2=0; /计算斜面的变量2for(int i=1;iw/2?w:0);y=(y-y%w)+(y%ww/2?w:0);x=(x-px)/w;y=(y-py)/w;if(x=0&y=0&x=16&y=16)if(v.contains(x+-+y)System.out.println(已有棋了);elsev.add(x+-+y);this.repaint();if(v.size()%2=0)black.add(x+-+y);this.victory(x, y,black);System.out.println(黑棋);elsewhite.add(x+-+y);this.victory(x, y,white);System.out.println(白棋);System.out.println(e.getX()+-+e.getY();3. 设计结果与分析3.1 程序运行结果图2 游戏刚开始开始时白棋先走,然后黑棋,这样交替的下棋。看谁能赢。图3 黑棋赢了黑棋,白棋交替下,最后黑棋赢了,然后弹出对话框“恭喜你 黑棋赢了”游戏做完之后不能直接退出。3.2尚需解决的问题(1) 游戏设置较简单,想让那个棋赢就能赢。(2)不能直接重新开始。(3)程序无限时,不能规定时间。4. 设计体会通过这次课程设计,我收获的不仅仅是课程上的知识得到实际应用,还有编程时应注意的流程。这个系统主要是我自己开发的,但也得到了老师和同学的很大帮助。我正在做系统的过程中遇到了很多问题,有的是知识存储不足,有的是考虑不够周全,之所以能够顺利实现基本功功能,离不开老师和同学的大力相助。事实证明,只靠自己是不能顺利完成一套功能完整的系统的,必须充分利用团队的力量。开发一套系统,最重要的是细心,并不是一定要做到面面俱到,但也要充分考虑到客户的需求和现实意义,不管什么系统,只用运用到实际应用中,才具有先现实意义。所以在准备工作中要正确分析社会需求了解现实应用,画出流程图,把大体框架做好,然后再逐一细化。总之通过本次实验,掌握了使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识解决实际问题的能力。提高面向对象程序设计的能力。5. 参考文献1Merlin Hughes Michael Shoffner,Java网络编程实例M.清华大学出版社,2006.62耿祥义,JAVA 2 实用教程M.清华大学出版社,2008.43张辉,JAVA 程序设计M.清华大学出版社,2006.2 4丁振凡 ,java语言实用教程M.北京邮电大学出版社, 2007.45耿祥义 , Java基础教程M. 清华大学出版社, 2009.86张仿彦,JAVA项目开发全程实录M.北京大学出版社,2009.46. 附录import java.awt.*;import java.awt.event.MouseListener;import java.awt.event.MouseEvent;import java.util.Vector;import javax.swing.*;public class wuziqi extends JFrame implements MouseListenerpublic static void main(String args)wuziqi d=new wuziqi();Vector v=new Vector();Vector white=new Vector();Vector black=new Vector();JButton btnstart =new JButton(开始);JButton btnstop =new JButton(停止);JToolBar tool=new JToolBar();boolean b; /用来判断 白棋还是黑棋 int blackcount,whitecount; /计算悔棋 /* * 构造方法 */public wuziqi()super(五子棋);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);/关闭按钮Container con=this.getContentPane();this.addMouseListener(this);/添加监听tool.add(btnstart);/添加按钮tool.add(btnstop);this.setSize(550,500);/设置窗体大小this.setVisible(true); int w=20; /间距大小 是双数 int px=100,py=100; /棋盘的坐标 int pxw=(px+w), pyw=(py+w); int width=w*16,height=w*16; int vline=(width+px); /垂直线的长度 int hline=(height+py); /水平线的长度 /* * 画棋盘 */public void paint(Graphics g)g.clearRect(0, 0, this.getWidth(), this.getHeight(); /清除面板g.setColor(Color.BLACK); /设置网格颜色g.drawRect(px, py, width, height); /网格大小g.drawString(简易五子棋, 110, 70);for(int i=0;i15;i+)g.drawLine(pxw+i*w,py,pxw+i*w,hline);/每条横线和竖线g.drawLine(px,pyw+i*w,vline,pyw+i*w);for(int x=0;xv.size();x+)String str=(String)v.get(x);String tmp=str.split(-);int a=Integer.parseInt(tmp0);int b=Integer.parseInt(tmp1);a=a*w+px;b=b*w+py;if(x%2=0)g.setColor(Color.CYAN);elseg.setColor(Color.BLACK);g.fillArc(a-w/2, b-w/2, w, w,0,360);public void updeta(Graphics g)this.paint(g);public void victory(int x,int y,Vector contain) /判断胜利的方法int cv=0; /计算垂直的变量int ch=0; /计算水平的变量int ci1=0; /计算斜面的变量1int ci2=0; /计算斜面的变量2for(int i=1;i5;i+)if(contain.contains(x+i)+-+y)ch+;elsebreak;System.out.println(前面执行了+ch+次);for(int i=1;i5;i+)if(contain.contains(x-i)+-+y)ch+;elsebreak;System.out.println(后面执行了+ch+次);for(int i=1;i5;i+)if(contain.contains(x+-+(y+i)cv+;elsebreak;for(int i=1;i5;i+)if(contain.contains(x+-+(y-i)cv+;elsebreak;for(int i=1;i5;i+)if(contain.contains(x+i)+-+(y+i)ci1+;elsebreak;for(int i=1;i5;i+)if(contain.contains(x-i)+-+(y-i)ci1+;elsebreak;for(int i=1;i5;i+)if(contain.contains(x-i)+-+(y+i)ci2+;elsebreak;for(int i=1;i=4|cv=4|ci1=4|ci2=4)System.out.println(v.size()+步棋);if(v.size()%2=0) /判断偶数是黑棋胜利,奇数白棋胜利JOptionPane.showMessageDialog(null,恭喜你 黑棋赢了);elseJOptionPane.showMessageDialog(null,恭喜你 白棋赢了);this.v.clear();this.black.clear();this.white.clear();this.repaint();System.out.println(ch+ +cv+ +ci1+ +ci2);public void mouseClicked(MouseEvent e) if(e.getButton()=e.BUTTON1)int x=e.getX();int y=e.getY();x=(x-x%w)+(x%ww/2?w:0);y=(y-y%w)+(y%ww/2?w:0);x=(x-px)/w;y=(y-py)/w;if(x=0&y=0&x=16&y3)JOptionPane.showMessageDialog(this, 黑棋已经悔了三步);elsev.remove(v.lastElement();this.repaint(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 窗口礼仪培训课程
- 吉林省通化市外国语学校2026届九年级化学第一学期期中综合测试模拟试题含解析
- 2026届贵州省兴仁县黔龙学校化学九年级第一学期期中质量跟踪监视模拟试题含解析
- 2026届上海市玉华中学化学九上期中质量检测模拟试题含解析
- 黑龙江省哈尔滨市第九中学2025-2026学年高二上学期9月月考语文试题(含答案)
- 水力学专题试题及答案
- 2025年导游资格证考试题库及答案
- 2026届北京市人民大附属中学化学九上期中考试模拟试题含解析
- 2025年Python物联网解决方案:全国计算机等级考试二级专项训练试题
- 2026届贵州省六盘水市名校化学九上期末经典模拟试题含解析
- 服装陈列课件
- 产品认证控制程序
- 新教材-人教A版高中数学选择性必修第一册-第一章-空间向量与立体几何-知识点及解题方法提炼汇总
- 2016风力发电场无功配置及电压控制技术规定
- 国家临床版20肿瘤形态学编码(M码)
- 安全员之江苏省C1证(机械安全员)复习考试资料汇编
- 甲午中日战争情景剧
- 国开电大组织行为学任务四调查报告
- 施工现场安全监理危险源清单一览表
- GB/T 233-2000金属材料顶锻试验方法
- 颈椎DR摄影技术-
评论
0/150
提交评论