超级玛丽Java课程设计

上传人:ali****an 文档编号:121670879 上传时间:2020-02-24 格式:DOC 页数:67 大小:2.65MB
返回 下载 相关 举报
超级玛丽Java课程设计_第1页
第1页 / 共67页
超级玛丽Java课程设计_第2页
第2页 / 共67页
超级玛丽Java课程设计_第3页
第3页 / 共67页
超级玛丽Java课程设计_第4页
第4页 / 共67页
超级玛丽Java课程设计_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《超级玛丽Java课程设计》由会员分享,可在线阅读,更多相关《超级玛丽Java课程设计(67页珍藏版)》请在金锄头文库上搜索。

1、 面向对象程序设计课程设计报告题 目: 超级玛丽软件的设计与实现 院 (系): 信息科学与工程学院 专业班级: 计算机科学与技术1201班 学生姓名: 程伟 学 号: 20121183011 指导教师: 吴奕 20 14 年 12 月 29 日至20 15 年 1 月 9 日华中科技大学武昌分校制 面向对象程序设计 课程设计任务书一、设计(调查报告/论文)题目超级玛丽软件的设计与实现二、设计(调查报告/论文)主要内容内容:开发超级玛丽能够在场景中完成各种动作,并且有场景的切换功能。设计一个Mario类、一个场景类、以及敌人类、障碍物类。实现有一定的挑战的休闲单机小游戏。 基本功能与要求:设计一

2、个超级玛丽游戏实现以下功能:1、 点击“空格”可以使游戏人物进行跳跃。2、 点击方向键左右可以使游戏人物前进或者后退。3、 设计障碍物,增加游戏的难度。4、 设计敌人类,增加游戏难度。5、 设计跳跃踩死敌人或者跳跃越过障碍物,保证可以正常前进。6、 保证通过所有障碍后可以通关。三、原始资料1.面向对象程序设计课程设计指导书2. 耿祥义JAVA大学实用教程北京:清华大学出版社,2009四、要求的设计(调查/论文)成果1.课程设计报告2.课程设计软件五、进程安排布置任务,查找资料、需求分析1天总体设计1天详细设计1.5天编制源程序实现3.5天测试与修改1天撰写课设报告2天六、主要参考资料1 张广彬

3、. Java课程设计案例精编(第二版).北京:清华大学出版社, 2011. 2 耿祥义. Java课程设计(第二版).北京:清华大学出版社, 2008.3 耿祥义JAVA大学实用教程北京:清华大学出版社,20094 邹林达陈国君 Java2程序设计基础北京:清华大学出版社,20105 邹林达Java2程序设计基础实验指导北京:清华大学,2010指导教师(签名): 20 年 月 日目录1需求与总体设计51.1需求分析51.2程序功能图51.3程序类图62详细设计72.1 MyFrame实现72.1.1窗体对象的序列图72.1.2 Myframe详细类图82.2 Mario实现82.2.1 Mar

4、io对象的序列图82.2.2 Mario类图92.3 Enemy类的实现102.4 Obstruction类的实现112.5 BackGround类实现113编码实现123.1 MyFrame类的详细代码123.2 BackGround类的详细代码133.3 Mario类的详细代码163.4 Enemy类的详细代码243.5 Obstruction类的详细代码314系统测试334.1 游戏开始界面的测试334.2 游戏运行的测试334.3 排除错误的处理36总 结37 1需求与总体设计1.1需求分析提供一个友好的用户交互界面,简单明了容易操作。并且游戏有一定的难度和娱乐性。开发一个Mario类

5、。一个场景类,以及敌人类,障碍物类。让超级玛丽能够在场景中完成各种动作。并且有场景的切换等等功能。游戏中设计了一些很有意思的陷阱,玩家一步小心掉入陷阱,超级玛丽就会死亡。这样会给人意想不到的惊奇,达到娱乐大众,增加游戏难度的效果。游戏的设计匠心独具,并且都经过了各种测试,除了为玩家增加一些意想不到的游戏陷阱以外,还必须保证玩家能够通关。1.2程序功能图如图1所示:图11.3程序类图系统的整体类图的框架如图2所示。首先是窗体类。他需要调用到Mario和BackGround类中的方法。以便动态的显示Mario类和BackGround。而BackGround里面又包含了Enemy和Obstructi

6、on。Enemy,Obstruction和Mario类又调用静态类StaticValue的方法,用以显示真实的图片。而StaticValue则是一个静态类,将存储在硬盘的图片资源加载进入内存以便其他模块调用。图22详细设计2.1 MyFrame实现2.1.1窗体对象的序列图窗体对象继承了JFrame类并且实现了Runnable接口。作为窗体对象,它首先显示窗体,绘制背景。然后启动线程。在run方法里面动态得绘制窗体中需要显示的Mario的图片,障碍物的图片,敌人的图片。该窗体的run方法是一个死循环,每次执行一个 循环调用sleep方法睡眠50毫秒。序列图如图3所示。图32.1.2 Myfra

7、me详细类图private Mario mario;/Mario对象private boolean isStart = false;/标识游戏是否已经开始this.paintAllEnemys(g2);/绘制所有的敌人this.paintAllObstruction(g2);/绘制所有障碍物2.2 Mario实现2.2.1 Mario对象的序列图因为需要有一个专门的线程来实时监测Mario的移动状况,和障碍物和敌人的碰撞情况。所以让Mario类继承了Runnable接口。Mario先启动线程。该线程的run方法也是一个死循环。首先根据Mario的状态changeMarioImage方法修改Ma

8、rio的显示图片。再根据Mario的determinexy方法决定Mario的移动。然后通过deterMarioWithObstruction方法检测Mario和障碍物之间的碰撞,在根据marioTouchEnemys方法检测Mario和敌人之间的碰撞。然后调用sleep()方法让线程休息5毫秒。如此结束一个循环。序列图如图4所示。图42.2.2 Mario类图类图中:private int x;/Mario的x坐标private int y;/Mario的y坐标private int life;/Mario的生命BackGround bg = null;/Mario所在的背景private

9、int uptime;/Mario的上升时间String status;/Mario的移动状态int score;/Mario的分数Thread t;/Mario的线程int xmove;/Mario的x移动距离int ymove;/Mario的y移动距离private boolean isClear = false;/标识用户是否通关。isClear为true时代表用户通关了2.3 Enemy类的实现private int x;/敌人的x坐标private int y;/敌人的y坐标private int startX;/敌人的初始x坐标private int startY;/敌人的初始y坐

10、标private boolean startIsLeftOrUp;/敌人初始的移动方向private int startImageType;/初始的显示图片private int type;/敌人的类型1代表蘑菇,2代表食人花,3代表乌龟private BufferedImage bufferedImage;private BackGround bg;/障碍物所在的背景private int imageType;/移动的极限范围详细类图如下:2.4 Obstruction类的实现private int x;/障碍物的x坐标private int y;/障碍物的y坐标private Buffer

11、edImage showImage = null;/障碍物的显示图片private int type;/障碍物的类型private int startType;/障碍物的初始类型private BackGround bg;/标识该障碍物在哪一个场景中详细类图如下:2.5 BackGround类实现private int sort;/背景的序列号private boolean flag;/标识是否是最后一张图片,flag为true时代表到了最后一张图片private boolean isOver = false;/标识游戏是否已经结束private boolean isDown = false;

12、/标志是否降旗结束详细类图如下:3编码实现源代码import java.awt.image.BufferedImage;import java.util.ArrayList;import java.util.List;import java.awt.Graphics;import java.awt.Toolkit;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.util.Iterator;import javax.swing.JFrame;import javax.swing.JOptio

13、nPane;import java.io.File;import javax.imageio.ImageIO;public class MyFrame extends JFrame implements KeyListener,Runnablepublic static void main(String args)new MyFrame();private List allBg = new ArrayList();/当前背景private BackGround nowBg = null;private Mario mario;/Mario对象private boolean isStart =

14、false;/标识游戏是否已经开始public void setNowBg(BackGround nowBg) this.nowBg = nowBg;private Thread t;/* */public MyFrame()this.setSize(900,600);this.setTitle(马里奥游戏);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);int width = Toolkit.getDefaultToolkit().getScreenSize().width;int height = Toolkit.getDefaultToolkit().getScreenSize().heigh

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号