JAVA小游戏“华容道”软件设计报告_第1页
JAVA小游戏“华容道”软件设计报告_第2页
JAVA小游戏“华容道”软件设计报告_第3页
JAVA小游戏“华容道”软件设计报告_第4页
JAVA小游戏“华容道”软件设计报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、 命题方式: 单独命题 佛山科学技术学院20132014学年第 二 学期可视化编程技术课程期末考试试题A专业、班级: 12教技2班 姓名: 何颖康 学号: 2012914209 成绩: 根据可视化编程技术这门课程的内容,结合自己熟悉的课题及自己的实际情况来自选设计题目,也可以选择老师提供的参考题目设计。1参考设计题目1)电子钟;2)简单计算器;3)五子棋;4)微波炉倒计时部件2上交文本格式(参考设计报告模板)(1)标题;(2)班级、姓名、学号;(3)摘要(4)关键词;(5),正文; (6)参考文献;(7)设计总结(自己所做的主要工作与体会)3作品必须有一个自己独立完成的模块,按照功能多少及强度

2、评分。4上交作品两项(1) 课程设计报告电子完整版(含程序),统一放入班级光盘中;(2) 考试作品(从设计报告中整理5-6页+本封面)用A4白纸打印。进行接新佛山科学技术学院可视化编程技术课程设计报告JAVA小游戏“华容道”设计学生姓名: 何颖康学 号: 2012914209年级专业:12级教育技术学2班指导老师: 容汝佳学 院: 教育科学学院广东佛山提交日期:2014年6月1 摘要:本程序根据手机游戏“智力大爆炸”为原版,加入历史元素,将娱乐、学习和思考集于一体。程序执行后,点击相应的人物,然后按上下左右键可以移动。点击重新开始按钮,可以将各个人物的位置重置。如果目的地的面积能够容得下当前要

3、移动的人物,则认为可以移动。当曹操移动到“曹操到达该位置”的位置的时候,认为程序结束。关键字:java小游戏,华容道,益智,历史元素,曹操移动 前言随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的计算器,可以实现简单的运算功能,满足日常基本的工作学习和娱乐需要。Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此,Java已成为当今In

4、ternet上最流行、最受欢迎的一种程序开发语言。Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。还有Java 2企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。Java语言是由C+语言发展起而来的

5、,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。Java语言去掉了C+语言的一些容易引起错误的特性。Java语言的特点有:面向对象、跨平台、安全性、多线程和图形功能强。 详细设计(1)编程思路:因为首先要实现华容道游戏的整体功能,所以首先生成游戏中的主人公:要生成游戏中的十个人物,就要用到人物类People,首先通过语句People people=new People10定义一个可以存放十个变量的数组,再通过people0=new People(0,曹操,104,54,100,100,this)等九话生成十个人物,最后通过people9.req

6、uestFocus()设置焦点。然后,因为要设置华容道的界面信息,所以用到了Graphics类,首先通过语句g.setColor(Color.cyan)来设置要使用的颜色,然后通过g.fillRect()分别设置了左右上下四部分边界的填充颜色,最后通过g.drawString()函数写出提示曹操逃出位置和按键规则给用户参考。最后,因为要实现人机交互的效果,所以要响应键盘事件,这一操作是在函数public void keyPressed(KeyEvent e)中完成的:首先通过语句People man=(People)e.getSource()获取事件源,然后通过语句if(e.getKeyCod

7、e()=KeyEvent.VK_DOWN)响应用户按向下光标的操作,通过语句if(e.getKeyCode()=KeyEvent.VK_LEFT)响应用户按向左光标的操作,通过语句if(e.getKeyCode()=KeyEvent. VK_RIGHT)响应用户按向右光标的操作,通过语句if(e.getKeyCode()=KeyEvent. VK_UP)响应用户按向上光标的操作,最后通过函数public void actionPerformed(ActionEvent e)将界面所有控件复位,实现重新开始的功能。测试分析代码编写完毕,存盘为:C: j2sdk1.4.0javaprograms

8、HuaRongRoad.java。打开计算机的命令提示符窗口,然后在命令提示符窗口中,定位到javaprograms目录,输入javac HuaRongRoad.java 来编译程序,最后将程序加载到网页上。在javaprograms文件夹下新建一个记事本文件,内容为,然后保存为HuaRongRoad.html的网页文件。本例制作完毕,用浏览器打开HuaRongRoad.html文件便可以看到制作效果。程序清单:/HuaRongRoad.javaimport java.awt.*; import java.applet.*; import java.awt.event.*; class Peo

9、ple extends Button implements FocusListener /代表华容道人物的类 Rectangle rect=null; int left_x,left_y;/按扭的左上角坐标 int width,height; /按扭的宽和高 String name; int number; People(int number,String s,int x,int y,int w,int h,HuaRongRoad road) super(s); name=s;this.number=number; left_x=x;left_y=y; width=w;height=h;set

10、Background(Color.orange); road.add(this);addKeyListener(road); setBounds(x,y,w,h);addFocusListener(this); rect=new Rectangle(x,y,w,h); public void focusGained(FocusEvent e) setBackground(Color.red); public void focusLost(FocusEvent e) setBackground(Color.orange); public class HuaRongRoad extends App

11、let implements KeyListener,ActionListener People people=new People10; Rectangle left,right,above ,below;/华容道的边界 Button restart=new Button(重新开始); public void init() setLayout(null);restart.setBackground(Color.yellow); add(restart); restart.setBounds(5,5,80,25); restart.addActionListener(this); people

12、0=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); people3=new People(3,刘备,204,154,50,100,this); people4=new People(4,张辽,54, 54, 50,100,this); people5=new People(5,曹仁,204, 54, 50,100,this); people6=new People(6,兵 ,54,25

13、4,50,50,this); people7=new People(7,兵 ,204,254,50,50,this); people8=new People(8,兵 ,104,204,50,50,this); people9=new People(9,兵 ,154,204,50,50,this); people9.requestFocus(); left=new Rectangle(49,49,5,260); people0.setForeground(Color.white) ; right=new Rectangle(254,49,5,260); above=new Rectangle(4

14、9,49,210,5); below=new Rectangle(49,304,210,5); public void paint(Graphics g) /画出华容道的边界 g.setColor(Color.cyan); g.fillRect(49,49,5,260);/left g.fillRect(254,49,5,260);/right g.fillRect(49,49,210,5); /above g.fillRect(49,304,210,5);/below /提示曹操逃出位置和按键规则 g.setColor(Color.blue); g.drawString(点击相应的人物,然后

15、按键盘上的上下左右箭头移动,100,20); g.setColor(Color.red); g.drawString(曹操到达该位置,110,300); 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; /向下前进50个单位 man.setLocation

16、(man.left_x,man.left_y); man.rect.setLocation(man.left_x,man.left_y); /判断是否和其它人物或下边界出现重叠,如果出现重叠就退回50个单位距离 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); if(man.rec

17、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); if(e.getKeyCode()=KeyEvent.VK_UP) man.left_y=man.left_y-50; /向上前进50个单位 man.setLocation(man.left_x,man.left_y); man.rect.setLocation(man.left_x,man.left_y); /判断是否和其它人物或上边

18、界出现重叠,如果出现重叠就退回50个单位距离 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); if(ersects(above) man.left_y=man.left_y+50; man.setLocation(man.left_x,man.left_y

19、); man.rect.setLocation(man.left_x,man.left_y); if(e.getKeyCode()=KeyEvent.VK_LEFT) man.left_x=man.left_x-50; /向左前进50个单位 man.setLocation(man.left_x,man.left_y); man.rect.setLocation(man.left_x,man.left_y); /判断是否和其它人物或左边界出现重叠,如果出现重叠就退回50个单位距离 for(int i=0;i10;i+) if(ersects(peoplei.rect)&(

20、man.number!=i) man.left_x=man.left_x+50; man.setLocation(man.left_x,man.left_y); man.rect.setLocation(man.left_x,man.left_y); if(ersects(left) man.left_x=man.left_x+50; man.setLocation(man.left_x,man.left_y); man.rect.setLocation(man.left_x,man.left_y); if(e.getKeyCode()=KeyEvent.VK_RIGH

21、T) man.left_x=man.left_x+50; /向右前进50个单位 man.setLocation(man.left_x,man.left_y); man.rect.setLocation(man.left_x,man.left_y); /判断是否和其它人物或右边界出现重叠,如果出现重叠就退回50个单位距离 for(int i=0;i10;i+) if(ersects(peoplei.rect)&(man.number!=i) man.left_x=man.left_x-50; man.setLocation(man.left_x,man.left_y);

22、man.rect.setLocation(man.left_x,man.left_y); if(ersects(right) man.left_x=man.left_x-50; man.setLocation(man.left_x,man.left_y); man.rect.setLocation(man.left_x,man.left_y); public void keyTyped(KeyEvent e) public void keyReleased(KeyEvent e) public void actionPerformed(ActionEvent e) this.removeAll(); this.init(); 参考文献林良信 Java JDK 6 学习笔记 刘浦迎 谢春 java程序设计实用教程 科

温馨提示

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

评论

0/150

提交评论