




免费预览已结束,剩余13页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2010-2011学年第1学期JAVA面向对象语言课程大作业报告课题名称: 五子棋游戏小应用程序 小组成员人数(单选)1人 2人 3人4人小组成员名单(学号和姓名):(1)班级_文计101-1班_学号_201090514135_姓名_范然然_(2)班级_文计101-1班_学号_201090514136_姓名_巩燕燕_(3)班级_学号_姓名_(4 班级_学号_姓名_ 课题实现采用的工具(如为其他,请填写具体工具名称) NetBeans Eclipse JDK命令行 EditPlus 其他_ 课题完成时间:_2011年12月04日_ 对应提交的电子文档打包文件名称(准确填写):_=以下部分为教师填写区,请勿填写=成绩评定:软件运行_软件基本功能_软件提高功能_ 软件部分成绩_文档结构_文档理论_文档撰写_ 文档部分成绩_ 总成绩_备注一、 软件系统分析和设计方案(一) 软件系统分析1.中央处理器(CPU):Intel 酷睿3双核 P7350 2.00GHz2.内存:2.00GB3.硬盘:160GB4.操作系统:Windows Vista(32位)5.开发工具:Editplus 26.编程语言:java(二)设计方案五子棋的设计主要是利用编写的代码实现人人对战游戏,每单击一次鼠标代表落一个棋子,直到有一方的棋子可以在八个方位(这八个方向分别是以该棋子为中心的右横方向、左横方向、竖正上方、竖正下方、右上方、右下方、左上方和左下方。)中的任一方位排列为连续的五个便是胜利。且每种颜色的棋子都允许悔棋,每个颜色最多允许悔三步。二、 软件实现和代码编写(一)软件实现1.软件的运行环境:Editplus 2。2.软件安装首先,在所需应用的机器上安装Editplus 2(建议安装在C盘),等待一切都安装完毕后,打开Editplus 2,找到工具菜单,打开工具菜单下的“配置用户工具”,如图(3)所示,然后点击新窗口右侧的新工具,添加新工具:菜单文本(java)命令(C:Program Files (x86)Javajdk1.6.0_23binjavac.exe)参数(文件名)初始目录(文件目录),然后选择“捕获输出”;再次单击“新工具”,再次选择:菜单文本(javax)命令(C:Program Files (x86)Javajdk1.6.0_23binjava.exe)参数(无扩展名之文件名)初始目录(文件目录),然后选择“捕获输出”如图(2),最后单击“确定”。图(1)图(2)(二)代码编写首先,打开Editplus 2,然后选择“文件”菜单下的“新建”中的“java”选项,如图(3),文件新建完成,在新的文件框中键入需要键入的代码,如图(4).图(3)图(4)三、 必要的算法分析1、 鼠标事件的监听MouseEvent是公有类。这个类封装了与鼠标事件有关的信息,包括鼠标单击和处理鼠标事件。鼠标事件由鼠标事件源产生,并且实现了MouseListener接口的处理对象。发送MouseEvent类的实例给鼠标监视器事件以帮助处理鼠标事件首先判断是否该玩家落子和胜负已分及游戏是否开始,如确实轮到玩家落子,则首先得到鼠标单击坐标,然后转换得到距离最近的落子点,并在这个落子点上绘制相应颜色的棋子。代码片段如下: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();elsewhitecount+;if(whitecount3)JOptionPane.showMessageDialog(this, 白棋已经悔了三步);elsev.remove(v.lastElement();this.repaint();4、 绘制棋盘及棋子五子棋游戏如果没有棋盘和棋子是不能称之为五子棋的,所以必须要有棋盘和棋子。画棋盘和棋子的代码如下:public void paint(Graphics g)/重绘容器组件g.clearRect(0,0, this.getWidth(), this.getHeight(); /清除面板g.setColor(Color.BLUE); /设置网格颜色g.drawRect(px, py, width, height); /网格大小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 p=str.split(-);/将一个字符串分割为子字符串,然后将结果作为子字符串数组返回int a=Integer.parseInt(p0);/将字符串类型转换成int型int b=Integer.parseInt(p1);a=a*w+px;b=b*w+py;if(x%2=0)g.setColor(Color.WHITE); elseg.setColor(Color.BLACK); g.fillArc(a-w/2, b-w/2, w, w,0,360);/在棋子所在相应的位置画棋子5、 判断输赢判断胜负是这个游戏的核心,一个游戏最重要的部分,如果连判断胜负都不可以实现的话,那么这个游戏程序是没有用的。依据五子棋的基本规则,判断某一方向上是否有同一颜色的棋子连成五个或五个以上的,如果有,那么游戏就结束了,并判先连成五子的一方获得了胜利。电脑主要是从八个方向来判断哪一方先胜,这八个方向是以一个棋子为中心向四周辐射扩散出去进行搜索判断,这八个方向分别是以该棋子为中心的右横方向、左横方向、竖正上方、竖正下方、右上方、右下方、左上方和左下方。每个方向都设一个参数分别为cv、ch、ci1、ci2.代码实现如下: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;for(int i=1;i5;i+)if(contain.contains(x-i)+-+y)ch+;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+-+(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&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();else System.out.println(e.getX()+-+e.getY()+|+ x+-+y+t超出边界);四、 软件调试和测试(一) 软件调试1、 配置用户工具错误,java和javac命令和参数颠倒;2、 几处分号忘记添加;3、 字符大小写错误。(二) 软件测试为了检验软件是否存在错误,我们进行了测试。具体图片如下:(1)运行最初界面:(2)白棋赢的界面(3)黑棋赢
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《谏太宗十疏书》课件
- 语文教学研修汇报
- 亲戚关系单词课件
- 《诗经·何草不黄》课件
- 亲子健康调理课件
- 亮丽的城市风光课件
- 事故安全培训感受体会课件
- 事业单位财务
- 气体行业的年度工作总结
- 汽车外饰工程师年终总结
- 小学生词性课件
- 佳能闪光灯信号发射器ST-E2中文说明书
- 上海市周浦中学2025年化学高一下期末统考试题含解析
- 易地移民搬迁政策课件
- 无人机产业股权合作收益分配与技术研发协议
- 2025至2030中国环卫行业市场发展现状及竞争格局与投资机会报告
- 反邪教责任管理制度
- 林业产业链延伸与价值提升的实施途径
- 产品打样管理制度
- 儿童注意力课件
- 2025至2030LED显示屏行业发展趋势分析与未来投资战略咨询研究报告
评论
0/150
提交评论