java课程设计报告(学生用表)_第1页
java课程设计报告(学生用表)_第2页
java课程设计报告(学生用表)_第3页
java课程设计报告(学生用表)_第4页
java课程设计报告(学生用表)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选文档课程设计报告(本科)课程: 面对对象程序设计课程设计学号:1010411013 1010411033 1010411061姓名:周云扬 骆秀秀 汪隽班级: 2010级计算机科学与技术(应用班)老师:朱强时间:2012/12/17 2013/01/07计算机科学与技术系设计名称:简易的五子棋小玩耍设计内容、目的与要求:设计内容:简洁五子棋小玩耍功能要求:可两人对下(用鼠标操作),推断胜败。并且可实现悔棋,重置,实现显示下棋的总步数以及推断每步棋子的位置!界面要求:美观简洁,有简洁操作说明。方案与进度支配:12月17日12月21日: 完成设计思路并作出草稿,考虑这个程序所要用到的主 要方法

2、,并着手把程序的大致写出来。12月22日12月27日:接着,我们就要具体的写这个程序,完成对基本功能 的修改并运行无误。12月28日01月03日:为了使界面变得更加完善。我么要修改程序,添加一 些方法。而且要对这个程序有深透的了解。01月04日01月07日:预备好材料,并填写好试验报告书,预备答辩。具体分工任务:骆秀秀负责五子棋显示窗口的设计以及使用绘图类划分五子棋盘,使用的函数如下:public class WuZiQi extends JFrame implements MouseListener , public void paint(Graphics g),public void up

3、deta(Graphics g)。 汪隽负责五子棋落子之后,推断五子是否成型,推断黑白子输赢的问题!使用多种算法实现其功能!使用的函数如下:public void victory(intx,inty,Vectorcontain)JOptionPane.showMessageDialog等等。 周云杨负责设置鼠标把握下棋、悔棋、和推断棋子落下的位置是否符合实际要求等功能。使用的函数如下:public void mouseClicked(MouseEvent e),e.getButton().设计过程、步骤(可加页):1、 程序流程图:结束(1) 棋盘的绘制为主模块(2) 建立两个玩家(3) 每人

4、走一步(4) 假如有五个连续的棋子,就推断其成功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,5

5、00);/设置窗体大小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.set

6、Color(Color.BLACK); /设置网格颜色g.drawRect(px, py, width, height); /网格大小g.drawString("简易五子棋", 110, 70);for(int i=0;i<15;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 co

7、ntain) /推断成功的方法int cv=0; /计算垂直的变量int ch=0; /计算水平的变量int ci1=0; /计算斜面的变量1int ci2=0; /计算斜面的变量2for(int i=1;i<5;i+)if(contain.contains(x+i)+"-"+y)ch+;elsebreak;(3)建立mouseClicked建立对象getButton()用if-else循环推断是否有悔棋public void mouseClicked(MouseEvent e) if(e.getButton()=e.BUTTON1)int x=e.getX();in

8、t y=e.getY();x=(x-x%w)+(x%w>w/2?w:0);y=(y-y%w)+(y%w>w/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+"

9、-"+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.1 程序运行结果图2 玩耍刚开头开头时白棋先走,然后黑棋,这样交替的下棋。看谁能赢。图3 黑棋赢了黑棋,白棋交替下,最终黑棋赢了,然后弹出对

10、话框“恭喜你 黑棋赢了”玩耍做完之后不能直接退出。存在的问题:(1) 玩耍设置较简洁,想让那个棋赢就能赢。(2)不能直接重新开头。(3)程序无限时,不能规定时间。设计体会与建议: 设计体会:通过这次课程设计,我们收获的不仅仅是课程上的学问得到实际应用,还有编程时应留意的流程。这个系统主要是我们小组做的,但也得到了老师和同学的很大挂念。我正在做系统的过程中遇到了很多问题,有的是学问存储不足,有的是考虑不够周全,之所以能够顺当实现基本功功能,离不开老师和同学的挂念。事实证明,只靠自己是不能顺当完成一套功能完整的系统的,必需充分利用团队的力气。开发一个系统,最重要的是细心,并不是肯定要做到面面俱到,

11、但也要充分考虑到客户的需求和现实意义,不管什么系统,只用运用到实际应用中,才具有先现实意义。所以在预备工作中要正确分析社会需求了解现实应用,画出流程图,把大体框架做好,然后再逐一细化。总之通过本次试验,把握了使用Java语言进行面对对象设计的基本方法,提高运用面对对象学问解决实际问题的力量。提高面对对象程序设计的力量附录:源程序代码import java.awt.*;import java.awt.event.MouseListener;import java.awt.event.MouseEvent;import java.util.Vector;import javax.swing.*;p

12、ublic 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=ne

13、w 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.setSi

14、ze(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.getHei

15、ght(); /清除面板g.setColor(Color.BLACK); /设置网格颜色g.drawRect(px, py, width, height); /网格大小g.drawString("简易五子棋", 110, 70);for(int i=0;i<15;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;x<v.size();x+)String str=(String)v.get(x);String tmp=st

16、r.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.white);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) /推断成功的

17、方法int cv=0; /计算垂直的变量int ch=0; /计算水平的变量int ci1=0; /计算斜面的变量1int ci2=0; /计算斜面的变量2for(int i=1;i<5;i+)if(contain.contains(x+i)+"-"+y)/测试指定的对象是否为此向量中的组件。ch+;elsebreak;/System.out.println("前面执行了"+ch+"次");for(int i=1;i<5;i+)if(contain.contains(x-i)+"-"+y)ch+;els

18、ebreak;/System.out.println("后面执行了"+ch+"次");for(int i=1;i<5;i+)if(contain.contains(x+"-"+(y+i)cv+;elsebreak;for(int i=1;i<5;i+)if(contain.contains(x+"-"+(y-i)cv+;elsebreak;for(int i=1;i<5;i+)if(contain.contains(x+i)+"-"+(y+i)ci1+;elsebreak;fo

19、r(int i=1;i<5;i+)if(contain.contains(x-i)+"-"+(y-i)ci1+;elsebreak;for(int i=1;i<5;i+)if(contain.contains(x-i)+"-"+(y+i)ci2+;elsebreak;for(int i=1;i<5;i+)if(contain.contains(x+i)+"-"+(y-i)ci2+;elsebreak;if(ch>=4|cv>=4|ci1>=4|ci2>=4)System.out.println

20、(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+" "+c

21、i1+" "+ci2);/-public void mouseClicked(MouseEvent e) if(e.getButton()=e.BUTTON1)int x=e.getX();/返回大事相对于源组件的水平 x 坐标int y=e.getY();x=(x-x%w)+(x%w>w/2?w:0);y=(y-y%w)+(y%w>w/2?w:0);x=(x-px)/w;y=(y-py)/w;if(x>=0&&y>=0&&x<=16&&y<=16)if(v.contains(x+"

22、;-"+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()+&q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论