1、JAVA小游戏华容道软件设计报告 命题方式: 单独命题 佛山科学技术学院20132014学年第 二 学期可视化编程技术课程期末考试试题A专业、班级: 12教技2班 姓名: 何颖康 学号: * 成绩: 根据可视化编程技术这门课程的内容,结合自己熟悉的课题及自己的实际情况来自选设计题目,也可以选择老师提供的参考题目设计。1参考设计题目1)电子钟;2)简单计算器;3)五子棋;4)微波炉倒计时部件2上交文本格式(参考设计报告模板)(1)标题;(2)班级、姓名、学号;(3)摘要(4)关键词;(5),正文; (6)参考文献;(7)设计总结(自己所做的主要工作与体会)3作品必须有一个自己独立完成的模块,按照
2、功能多少及强度评分。4上交作品两项(1) 课程设计报告电子完整版(含程序),统一放入班级光盘中;(2) 考试作品(从设计报告中整理5-6页+本封面)用A4白纸打印。进行接新佛山科学技术学院可视化编程技术课程设计报告JAVA小游戏“华容道”设计* *学 号: *年级专业:12级教育技术学2班* *学 院: 教育科学学院广东佛山提交日期:2014年6月 摘要:本程序根据手机游戏“智力大爆炸”为原版,加入历史元素,将娱乐、学习和思考集于一体。程序执行后,点击相应的人物,然后按上下左右键可以移动。点击重新开始按钮,可以将各个人物的位置重置。如果目的地的面积能够容得下当前要移动的人物,则认为可以移动。当
3、曹操移动到“曹操到达该位置”的位置的时候,认为程序结束。关键字:java小游戏,华容道,益智,历史元素,曹操移动 前言随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的计算器,可以实现简单的运算功能,满足日常基本的工作学习和娱乐需要。Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此,Java已成为当今Internet上最流行、最受欢迎
4、的一种程序开发语言。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.requestFocus()设置焦点
6、。然后,因为要设置华容道的界面信息,所以用到了Graphics类,首先通过语句g.setColor(Color.cyan)来设置要使用的颜色,然后通过g.fillRect()分别设置了左右上下四部分边界的填充颜色,最后通过g.drawString()函数写出提示曹操逃出位置和按键规则给用户参考。最后,因为要实现人机交互的效果,所以要响应键盘事件,这一操作是在函数public void keyPressed(KeyEvent e)中完成的:首先通过语句People man=(People)e.getSource()获取事件源,然后通过语句if(e.getKeyCode()=KeyEvent.VK
7、_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 HuaRongRoad.jav
8、a。打开计算机的命令提示符窗口,然后在命令提示符窗口中,定位到javaprograms目录,输入javac HuaRongRoad.java 来编译程序,最后将程序加载到网页上。在javaprograms文件夹下新建一个记事本文件,内容为,然后保存为HuaRongRoad.html的网页文件。本例制作完毕,用浏览器打开HuaRongRoad.html文件便可以看到制作效果。程序清单:/HuaRongRoad.javaimport java.awt.*; import java.applet.*; import java.awt.event.*; class People extends But
9、ton 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; setBackground(Co
10、lor.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 Applet impleme
11、nts 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); people0=new Peop
12、le(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,254,50,50,th
13、is); 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(49,49,210,5
14、); 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(man.left_
16、x,man.left_y); man.rect.setLocation(man.left_x,man.left_y); /判断是否和其它人物或下边界出现重叠,如果出现重叠就退回50个单位距离 for(int i=0;i10;i+) if(man.rect.intersects(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.rect.intersec
17、ts(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(man.rect.intersects(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.rect.intersects(above) man.left_y=man.left_y+50; man.setLocation(man.left_x,man.left_y); man.rec
19、t.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(man.rect.intersects(peoplei.rect)&(man.number
20、!=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(man.rect.intersects(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_RIGHT) man.lef
21、t_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(man.rect.intersects(peoplei.rect)&(man.number!=i) man.left_x=man.left_x-50; man.setLocation(man.left_x,man.left_y); man.rect.s
22、etLocation(man.left_x,man.left_y); if(man.rect.intersects(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.removeA
23、ll(); this.init(); 参考文献林良信 Java JDK 6 学习笔记 刘浦迎 谢春 java程序设计实用教程 科学出版社 张白一 崔尚林 面向对象程序设计java 西安电子科技大学出版社潘浩 李芙玲 Java程序设计 清华大学出版社设计总结(自己所做的主要工作与体会)经过一个学期的JAVA学习,对JAVA编程有了一定的认识,JAVA是一门很有趣的课程,虽然在编辑程序的时候比较有难度,但是当把程序写出来的时候,心理的满足感是无法形容的。但是我的语言基本功比较差,所以做起来比较吃力,通过请教老师和同学,终于把我想要的程序写出来,这段时间可以说是最充实又吃力的一段时间。 通过这次实训
24、我的体会归纳为以下4点:1. 态度第一,摆正自己的心态,不要以为什么东西上网搜搜就可以了,一定要有自己的东西。只有自己付出过,当程序运行成功时的那种喜悦才会令自己有一种莫名的自豪感。态度决定一切!2. 兴趣是关键,因为有兴趣,所以才会很想充分理解一切细节。又因为理解,所以许多原本片片断断的知识都可以渐渐互相融会贯通,累积技术能量,理论和实务之间的藩篱被打破了,学习效率倍增。学习并快乐着!3. 敢于挑战,不安于现成的程序,要敢于用多种方法实现一个目的。现在的网络科技很发达,想要一个源程序的确很简单,所以很多人都是在自己都不明白题目要求时,就可以在网上搜到一模一样的代码,根本没有自己的东西。挑战自我是项艰巨的任务。只有坚持自己多看代码多写程序才会有更多的收获。4. 不懈追求,要对源代码进行不断地完善,要尽可能地实现课题所要求的功能。对初学者来说,大量地写程序是必要的,但过了某个阶段之后,写程序所带来的技术能力成长已经到了极限,还不如多花一点时间看书,学新技术和新观念。可以从实现源程序功能着手,比如添加写模块啊什么的,实现更多功能。看着自己编的程序能成功运行,这样自己会更感兴趣,也就会乐此不疲。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1