JAVA课设华容道总的.doc_第1页
JAVA课设华容道总的.doc_第2页
JAVA课设华容道总的.doc_第3页
JAVA课设华容道总的.doc_第4页
JAVA课设华容道总的.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

华东交通大学课程设计报告一、课程设计任务及要求 1本程序主要练习使用布局管理器设计一个华容道游戏界面,并练习使用事件监听器(鼠标事件、键盘事件和焦点事件)实现按钮的移动。 2编写一个按钮的子类,使用该子类创建的对象代表华容道中的人物。通过焦点事件控制人物颜色,当人物获得焦点时颜色为红色,当失去焦点时颜色为黄色。 3通过键盘事件和鼠标事件来实现曹操、关羽等人物的移动。当人物上发生鼠标事件或键盘事件时,如果鼠标指针的位置是在人物的下方(也就是组件的下半部分)或按下键盘的“键,该人物向下移动。向左、向右和向上的移动原理类似。 4点击“重新开始”可以使各个按钮复位,重新开始游戏。二、需求分析 要满足的容道游戏的基本操作:1 各人物按钮按相应的顺序和大小排列,按钮上标注人物名字,界面美观。2 通过焦点事件控制人物按钮的颜色,得到焦点呈红色,失去焦点为淡黄色。3 可以通过键盘控制各个按钮的移动:按“”键,人物按钮向下移动其它方向类似。4 可以通过鼠标点击来控制各个人物按钮的移动:如果点击的位置在按钮的上半部分则向上移动,如果点击按钮的下半部分则向下,左右原理类似。5 有“重新开始按钮” 点击重新开始按钮各个人物按钮复位,能重新开始游戏。6 小程序能够自由的缩小,放大,关闭。三、设计思路 1.首先是界面设计,该界面主要包括十个人物按钮(马、曹操、关羽等)以及旁边的四个边框按钮和重新开始按钮。对于人物按钮,创建Button按钮的子类,在该类中定义按钮的一些新的属性和焦点事件监听器,如:按钮的标签名、按钮的颜色、按钮的排号(如这里有十个人物按钮,从1排到十,在程序中可以依靠这个属性区分人物按钮)、按钮颜色、按钮获得或失去焦点事件。同时在设计该界面时要考虑到各个按钮的位置、大小等情况。 2.对界面上的各人物按钮添加相应的相应事件焦点事件:通过焦点事件各个按钮的是焦点。鼠标事件、键盘事件:通过这两种事件去完成界面上各人物按钮的移动。对重新开始按钮定义动作事件(ActionEvent)完成界面初始化功能也 就是各人物按钮重新归位。四、详细设计 详细设计主要是关于代码,编程思想和程序实现的具体描述。其中包含具体的运行界面,操作界面,运行结果图,和运行前图形界面。此外,还有一定的流程展示,各个运行模块的结构关系展示,对华容道小游戏的具体实现的具体展示,以及部分主要的代码的展示和分析说明,编程思想的体现。1.结构建立: 在road的project下建立road包中建立Road类,如下图 图4-1 在road的project下建立road包中建立Road类2.上机模块建立1、 界面设计 界面设计主要是根据功能要求构建界面,界面中的每个元素均应有其作用,以支持功能的实现,界面设计还要考虑到界面风格的一致、符合一般Applet的图像协调。设计应简洁实用,大方美观,界面协调,便于使用者进行操作,按钮布局合理,大小适中,还应具有使用方法的温馨提示,告诉使用者如何运用程序。 图4-2 华容道小游戏运行界面程序构造: 利用以下代码对按钮构造name=s;this.number=number;left_x=x;left_y=y;width=w;height=h; setBackground(Color.gray);当人物没有获取焦点的时候为灰色。road.add(this); addKeyListener(road); setBounds(x,y,w,h);addFocusListener(this); rect=new Rectangle(x,y,w,h);载入事件并响应。优化程序: 根据程序员自己的要求设计更为美观的图形界面,创造更加丰富的按钮颜色,和其它颜色,达到优化图形界面的目的。具体实现方法如下:public void focusGained(FocusEvent e) Color myColor=new Color(20,100,180); this.setBackground(myColor);程序员可以更改括号中的数值来改变按钮获取焦点后的颜色,达到美观的目的。此处我选择了(20,100,180)获取颜色为浅蓝色。 程序初始化: 对华容道小游戏程序中的人物、边框、按钮、计步器进行初始化。People people=new People10; Rectangle left,right,above ,below;/华容道的边界 . Button restart=new Button(重新开始); int count=0; TextField t=new TextField(20);/此为计步器的初始化。界面布局: 对程序中应有的按钮、边框、计步器显示进行合理的安排,将其放在图形界面中的适当位置。t.setBounds(180, 330, 20, 20); t.setEnabled(false);restart.setBounds(105,15,100,25); restart.addActionListener(this);/以上为对重新开始按钮进行的坐标设置。people0=new People(0,曹操,104,54,100,100,this); people1=new People(1,关羽,104,154,100,50,this);people2=new People(2,张飞,54, 154,50,100,this);以及people8=new People(8,兵 ,104,204,50,50,this) people9=new People(9,兵 ,154,204,50,50,this);等是为人物进行的位置设置。还有left=new Rectangle(49,49,5,260); above=new Rectangle(49,49,210,5);都是对坐标位置进行设置。键盘控制操作获得焦点的人物活动: 图4-3 控制兵向下 图4-4 控制兵向右图4-5 控制兵向左 图4-6 控制兵向上键盘事件: public void keyPressed(KeyEvent e) People man=(People)e.getSource();/鼠标获取事件源man.rect.setLocation(man.getBounds().x, man.getBounds().y); if(e.getKeyCode()=KeyEvent.VK_DOWN)键盘控制向下代码为man.left_y=man.left_y+50;man.setLocation(man.left_x,man.left_y); man.rect.setLocation(man.left_x,man.left_y); count+; t.setText(+count+);/此为计步器的代码for(int i=0;i10;i+)if(ersects(peoplei.rect)&(man.number!=i)man.left_y=man.left_y-50;man.setLocation(man.left_x,man.left_y);man.rect.setLocation(man.left_x,man.left_y);count-; t.setText(+count+);if(ersects(below) man.left_y=man.left_y-50;man.setLocation(man.left_x,man.left_y); man.rect.setLocation(man.left_x,man.left_y); count-; t.setText(+count+);/以上为判断是否和其它人物或下边界出现重叠,若出现重叠就退回50个单位距离。键盘控制向上、向左、向右代码和控制向下的代码类似。使用方法提示:g.drawString( 使用方法:,10,10); g.drawString(点击相应的人物,10,20); g.drawString(按键盘上的上下,10,30); g.drawString(左右键进行移动,10,40);在图形界面的左上角进行使用方法提示,方便使用者了解华容道小游戏的操作步骤。能够利用鼠标和键盘进行游戏控制。程序提高部分:添加计步器 图4-7 计步器初始时刻为空 图4-8 当兵向下行走一步时计步器显示为1 图4-9 当使用者点击了重新开始的按钮后步数自动归0计步器的实现;int count=0;TextField t=new TextField(20);创建一个大小为20的文本框,令count为0.t.setBounds(180, 330, 20, 20);将文本框的位置进行设置public void keyPressed(KeyEvent e)if(e.getKeyCode()=KeyEvent.VK_DOWNcount+;t.setText(+count+);当键盘点击向下操作时,计步器的步数加一。for(int i=0;i10;i+)if(ersects(peoplei.rect)&(man.number!=i)man.left_y=man.left_y-50;man.setLocation(man.left_x,man.left_y);man.rect.setLocation(man.left_x,man.left_y);count-;t.setText(+count+);当和其它人物或下边界出现重叠时,退回50个单位距离后,count就减一当向左,向右,向上操作时计步器的基本操作和向下一样。this.count=0; t.setText(+count+);当点击重新开始的按钮时计步器的步数变为0。重新开始的实现: 图4-10当游戏进行到难以进行的时候,进行重新开始图4-11 游戏恢复到初始状态Button restart=new Button(重新开始); setLayout(null); add(restart);add(t);restart.setBounds(105,15,100,25);restart.addActionListener(this);对重新开始设置this.count=0; t.setText(+count+);/当点击重新开始的按钮时步数清零五、运行调试与分析讨论图5-1 运行的图形界面 经过不断的改进,实现了鼠标获取事件,键盘控制移动事件,对按钮的背景颜色进行修改,使得图形界面更加的美观合理。对使用者进行操作方法的提示,使得使用者方便操作。对使用者使用的步数进行记录,对使用者进行提示。运用了多个类,和继承方法,图形界面设置等多个内容,对华容道小游戏进行编辑,最终完成了这个程序的编辑。六、设计体会与小结 经过数天时间的不断努力,我终于编成了华容道这个传统的中国小游戏,在编写的过程中,我经常从网上学习一些编程过程中遇到的困难,在编写计步器的时候,出现了按重新开始的按钮计步器无法归零的问题,在同学的帮助下得到了解决。我还从

温馨提示

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

评论

0/150

提交评论