基于swing开发的推箱子游戏的设计与实现

上传人:仙*** 文档编号:33895375 上传时间:2021-10-19 格式:DOC 页数:43 大小:532.50KB
收藏 版权申诉 举报 下载
基于swing开发的推箱子游戏的设计与实现_第1页
第1页 / 共43页
基于swing开发的推箱子游戏的设计与实现_第2页
第2页 / 共43页
基于swing开发的推箱子游戏的设计与实现_第3页
第3页 / 共43页
资源描述:

《基于swing开发的推箱子游戏的设计与实现》由会员分享,可在线阅读,更多相关《基于swing开发的推箱子游戏的设计与实现(43页珍藏版)》请在装配图网上搜索。

1、毕业设计(论文)课 题 名 称 基于swing开发的推箱子游戏 毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文

2、)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关

3、保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格2、学生掌握专业知识、技能的扎实程度 优 良 中 及格 不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力 优 良 中 及格 不及格4、研究方法的科学性

4、;技术线路的可行性;设计方案的合理性 优 良 中 及格 不及格5、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)指导教师:

5、(签名) 单位: (盖章)年 月 日评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)评阅教师: (签名) 单位: (盖章)年 月 日邵阳学院毕业设计(论文)教

6、研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格 不及格2、对答辩问题的反应、理解、表达情况 优 良 中 及格 不及格3、学生答辩过程中的精神状态 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文

7、(设计说明书)所体现的整体水平 优 良 中 及格 不及格评定成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)教研室主任(或答辩小组组长): (签名)年 月 日教学系意见:系主任: (签名)年 月 日摘 要在现今电子信息高速发展的时代,电子游戏已经深入人们的日常生活,成为娱乐方式。但是游戏设计结合了日新月异的技术,在一个产品中整合了复杂的设计、艺术、声音和软件。 推箱子游戏是一款很有趣味的游戏,它由英雄、魔王、笼子、墙和地板组成,然后存储在一个数组中,用户根据键盘的向上、向左、向右和向下键操作。其开发过程有一定的技巧和方法,其中涉及到二维数组、键盘操作以及图形化函数等方面的知识。此次设

8、计是在Microsoft Windows 7 系统下,以java为开发语言,在 eclipse平台上进行游戏的设计与实践。关键词:游戏设计、数组、开发语言AbstractIn the current era of rapid development of electronic information, electronic games has been deeply Peoples Daily life, be enjoyed by young and old form of entertainment. But the game design combined with tomorrows

9、technology, in a product integration of complex design, art, sound and software, so not well-known. Pushed box game is a very interesting game, it achieved by Hero,Devil,Cage,Floor and Wall, and then stored in an array , users according to the keyboard four the direction up, left, right and down ope

10、ration to control. Pushed box game development process has certain skills and methods, which involves a two dimensional array, keyboard and graphical function and other aspects. This design is in Microsoft Windows 7 system, with JAVA for development of language, Ecplise platform game design and prac

11、tice.Keywords: Game design, array, Development languageIV目 录摘 要IAbstractII前言11可行性分析21.1要求21.2目标22 项目开发计划的任务分解23 概要设计23.1游戏界面23.2游戏四种基本图形23.3英雄走向图形33.4 箭头图片34 需求规格说明34.1运行环境34.2功能需求34.3运行需求45 详细设计45.1 系统模块45.2 任务执行流程55.3 小人移动流程56界面实现56.1 界面区56.2 游戏区86.3 图片加载区116.4 英雄变化区116.5 地图绘画区197 结束语23参考文献24附 录25

12、致 谢262邵阳学院毕业设计(论文)前言随着社会的发展,人类的生产、生活越来越离不开信息。谁拥有了更多更有效的信息,谁就将在竞争中处于有利的地位。信息产业正在成为一个国家的支柱。只有拥有了先进的技术和知识,才能有效地管理好浩如烟海的信息,并从中提取出对自己有用的信息来加以利用。推箱子游戏是目前比较流行的游戏之一,很多操作系统或者流行软件都会带有这种游戏。它既能锻炼思维的严密性,又有很多乐趣。我个人也比较喜欢玩这个游戏,因此,我就借这个机会将这个推箱子游戏用java语言实现了出来,其中的界面使用了swing中的工具,当然,我也借鉴了前人的一些技巧经验。然而Swing是什么? Swing是一个用于

13、开发Java应用程序用户界面的开发工具包。它以抽象窗口工具包为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing开发人员只用很少的代码就可以利用Swing丰富、灵活的功能和模块化组件来创建优雅的用户界面。 通过本次游戏的设计,综合自己在校期间所学的理论知识,设计开发推箱子游戏,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,初步掌握软件工程的系统理论,进一步巩固和加强自身对java, swing基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。由于时间仓促和本人水平有限,此游戏的制作显得有些粗糙,我以后将会再接再厉。1可行性分析1.1要求 在

14、eclipse的开发环境下,利用所学java 语言相关知识,开发一个推箱子小游戏,实现游戏界面规划、英雄走动、魔王动向等功能。建立一个java project工程,实现游戏的编程设计。1.2目标可包括:a. 人力与设备费用的节省:单独开发b. 界面友好美观:自绘技术实现c. 游戏的可操作性,通过键盘的方向键实现d. 游戏界面的游戏区e. 等等2 项目开发计划的任务分解 a. 建立一个java project工程 b. 建立一个Hero包 c. 画出游戏区域 d. 调整游戏窗口大小 e. 加载游戏相关图片 f. 计算游戏结果,判断是否进入下一关3 概要设计3.1游戏界面 背景图片如下:3.2游戏

15、四种基本图形在游戏中相对应的图片分别为: 3.3英雄走向图形图片如下:3.4 箭头图片3.5游戏操作操作如下: 方向键左:左移 方向键右:右移 方向键上:上移 方向键下:下移 箱子只可以推, 不可以拉, 而且一次只能推动一个,胜利条件就是把所有的箱子都推到目的地。4 需求规格说明 4.1运行环境Microsoft Windows XP Microsoft Windows7 Eclipse4.2功能需求a. 图形左右移动b. 图形上下移动c. 实现开始,结束按钮的功能d. 使游戏窗口最大化失效4.3运行需求 硬件和软件接口:1.cpu :1.6GHz以上2.内存:256M以上3.操纵系统:Mic

16、orsoft Windows XP Microsoft Windows 74.运行软件:Eclipse5 详细设计5.1 系统模块本程序包括5个模块,分别是初始化模块、画图模块、移动箱子模块、移动小人模块和功能控制模块。各个模块的功能描述如下:(1)初始化模块。 该模块包括屏幕初始化和游戏第一关的初始化。屏幕初始化用于输出欢迎信息和操作提示,游戏每一关的初始化是构建每一关的关卡。(2)画图模块。 该模块主要是被其它模块调用,用于画墙、在空地画箱子、在目的地画箱子、画小人和画目的地。(3)移动箱子模块。 该模块用于移动箱子,包括目的地之间、空地之间和目的地与空地之间的箱子移动。(4)移动小人模块

17、。 该模块用于控制小人移动,从而推动箱子到目的地。(5)功能控制模块。 该模块是几个功能函数的集合,包括屏幕输出功能和指定位置状态判断功能。5.2 任务执行流程游戏从第一关开始,按上下左右方向键控制小人移动来推动箱子,可以在游戏中的按退出按钮进行退出。如果游戏无成功希望,可以按空格键回到当前任务的开始状态;如果成功完成当前关,则进入下一关。5.3 小人移动流程小人移动的方向有4个,moving()函数(处理小人移动的函数)对这4个方向移动的处理都一致,只是调用函数时的参数有所不同。首先判断小人移动的方向,然后根据小人所处世的当前状态、下一步状态或者下下一步状态进行适当的处理。6界面实现6.1

18、界面区这个区域主要负责窗体的大小,背景,名称以及窗体不可改变等元素。a.界面大小: this.setSize(540 + 4, 440 + 62);b.界面背景: this.setBackground(Color.BLACK);c.界面大小不可改变: this.setResizable(false);/ 不能改变窗体大小d.界面名称: this.setTitle(英雄传说II-吕季干); e.界面的实现如下:f.界面区总代码: import java.awt.Toolkit;import java.awt.event.KeyEvent;import java.awt.event.KeyList

19、ener;import javax.swing.JFrame;public class GameFrame extends JFrame private GamePanel gp = new GamePanel();private ImageUtil iu = new ImageUtil();/ 加载图片的工具public GameFrame() init();public void init() this.add(gp);/ 加入画纸this.setSize(540 + 4, 440 + 62);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLO

20、SE);this.setCursor(Toolkit.getDefaultToolkit().createCustomCursor(iu.getImage(cursor.png), new Point(26, 29), aaa);this.setResizable(false);/ 不能改变窗体大小this.setResizable(false);this.setTitle(英雄传说II-吕季干);/ 加一个监听器,保镖,匿名类:匿名类的格式 new 接口名() 接口中的方法的实现 this.addKeyListener(new KeyListener() Overridepublic voi

21、d keyPressed(KeyEvent arg0) / TODO Auto-generated method stubswitch (arg0.getKeyCode() / 0=向下 1=向左 2=向右 3=向上case 39:/ System.out.println(英雄向右);gp.setHeroF(2);break;case 40:/ System.out.println(英雄向下);gp.setHeroF(0);break;case 38:/ System.out.println(英雄向上);gp.setHeroF(3);break;case 37:/ System.out.pri

22、ntln(英雄向左);gp.setHeroF(1);break;Overridepublic void keyReleased(KeyEvent arg0) / TODO Auto-generated method stubOverridepublic void keyTyped(KeyEvent arg0) / TODO Auto-generated method stub);this.setVisible(true);public static void main(String args) / TODO Auto-generated method stubnew GameFrame();6

23、.2 游戏区这个区域主要完成游戏界面的大小等元素。a. 界面大小:this.setSize(600, 500);b. 界面实现如下图: c.游戏区总代码:package frame;import java.awt.Color;import java.awt.Graphics;import java.awt.Image;import javax.swing.JPanel;public class GamePanel extends JPanel private static final long serialVersionUID = 6792476564904637059L;private Im

24、age backImage; / 背景图片private Image me;private ImageUtil iu = new ImageUtil();/ 加载图片的工具private Hero hero = new Hero(this);private Maps map = new Maps(this);public Maps getMap() return map;public void setMap(Maps map) this.map = map;public GamePanel() this.setSize(600, 500);this.setBackground(Color.BL

25、ACK);backImage = iu.getImage(back1.jpg); / 初始化背景图片/ heroImage = iu.getImage(role1.gif); /英雄的图片/ me=iu.getImage(慧灵.jpg);new D().start();/ 启动线程Overridepublic void paint(Graphics g) g.drawImage(backImage, 0, 0, Color.BLACK, this);/ 画出背景图片g.drawImage(me, 0, 0, null);boolean yes6 = map.draw(g);/ 画地图if (y

26、es6) / 到下一关map.setMap();map.draw(g);/ 画地图/ 画英雄hero.draw(g);/ 调用英雄的的画的方法,将并将画笔g传递过去,画出英雄/ 该 方法用于改变英雄运行的方向public void setHeroF(int f) hero.setF(f);/ 将方向的改传给英雄hero.setMoving(true);/ 因为按了键所以可以移动/ 使用线程来完成,内部类:写在类里面的类class D extends Thread public void run() / 方法必须这么写while (true) try Thread.sleep(40); catc

27、h (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();GamePanel.this.repaint(); / 调用这个D对象外面的repaint()public Hero getHero() return hero;public void setHero(Hero hero) this.hero = hero;6.3 图片加载区 这个区域主要负责加载各类型的图片,使界面变得美观等条件。图片加载区总代码:package frame;import java.awt.Image;import j

28、ava.awt.Toolkit;import java.io.IOException;import javax.imageio.ImageIO;public class ImageUtil public Image getImage(String imageUrl) Image image = null;try / 会将图片加载在内存中image = ImageIO.read(this.getClass().getClassLoader().getResourceAsStream(image/ + imageUrl); catch (IOException e) / TODO Auto-gen

29、erated catch blocke.printStackTrace();return image;6.4 英雄变化区这个区域主要负责英雄的变化,如下:a.英雄的起始坐标: / 存放英雄起始位置的坐标private int heroX = 200;private int heroY = 200;b.英雄起始的方向:private int f = 0;/ 0=向下 1=向左 2=向右 3=向上c.画英雄的方法:public void draw(Graphics g) if (isMoving) moving();/ 移动英雄/ g.drawImage(heroImage, 0, 0, 32,

30、32, 200, 200, 232, 232, this);/ 在屏幕上的左上角的X,Y和 屏幕上的右下角X,Y,之间,/ 图片的左上角X,Y,图片上右下角/ g.drawImage(heroImage, heroX, heroY, heroX+32, heroY+32,0,0,32,32,/ null);/向下g.drawImage(heroImage, heroX, heroY, heroX + 32, heroY + 32, 0, 32 * f,32, 32 * (f + 1), null);/ 控制上下左右的图片d.英雄坐标改变的方法:public void moving() swit

31、ch (f) case 0:if (peng() heroY += 32;break;case 1:if (peng() heroX -= 32;break;case 2:if (peng() heroX += 32;break;case 3:if (peng() heroY -= 32;break;isMoving = false; / 每移动一次就停止/ System.out.println(现在英雄的坐标是:+heroX+-+heroY);e.碰撞检测的方法,返回能走还是不能走public boolean peng() / 1. 得到英雄在地图中的位置int row = (heroY -

32、 100) / 32;int column = (heroX - 100) / 32;/ 2. 根椐英雄的位置及行进的方向,判断地图上是否可以行走switch (f) / 0=向下 1=向左 2=向右 3=向上case 0:/ 得到地图对象中的地图数组if (gp.getMap().getMap()row + 1column = 2| gp.getMap().getMap()row + 1column = 6) return true;if (gp.getMap().getMap()row + 1column = 10) / 前面是魔王if (gp.getMap().getMap()row +

33、 2column = 2) / 前面前面是地板gp.getMap().getMap()row + 1column = 2;gp.getMap().getMap()row + 2column = 10;return true;if (gp.getMap().getMap()row + 2column = 6) / 前面前面是笼子gp.getMap().getMap()row + 1column = 2;gp.getMap().getMap()row + 2column = 14;return true;if (gp.getMap().getMap()row + 1column = 14) / 前

34、面是带笼子魔王if (gp.getMap().getMap()row + 2column = 2) / 前面前面是地板gp.getMap().getMap()row + 1column = 6; / 前面就变成笼子gp.getMap().getMap()row + 2column = 10; / 前面的前面变成了魔王return true;if (gp.getMap().getMap()row + 2column = 6) / 前面前面是笼子gp.getMap().getMap()row + 1column = 6; / 前面变成笼子gp.getMap().getMap()row + 2col

35、umn = 14; / 前面前面变成带笼子的魔王return true;break;case 1:if (gp.getMap().getMap()rowcolumn - 1 = 2| gp.getMap().getMap()rowcolumn - 1 = 6) return true;if (gp.getMap().getMap()rowcolumn - 1 = 10) / 前面是魔王if (gp.getMap().getMap()rowcolumn - 2 = 2) / 前面前面是地板gp.getMap().getMap()rowcolumn - 1 = 2;gp.getMap().getM

36、ap()rowcolumn - 2 = 10;return true;if (gp.getMap().getMap()rowcolumn - 2 = 6) / 前面前面是笼子gp.getMap().getMap()rowcolumn - 1 = 2;gp.getMap().getMap()rowcolumn - 2 = 14;return true;if (gp.getMap().getMap()rowcolumn - 1 = 14) / 前面是带笼子魔王if (gp.getMap().getMap()rowcolumn - 2 = 2) / 前面前面是地板gp.getMap().getMap

37、()rowcolumn - 1 = 6; / 前面就变成笼子gp.getMap().getMap()rowcolumn - 2 = 10; / 前面的前面变成了魔王return true;if (gp.getMap().getMap()rowcolumn - 2 = 6) / 前面前面是笼子gp.getMap().getMap()rowcolumn - 1 = 6; / 前面变成笼子gp.getMap().getMap()rowcolumn - 2 = 14; / 前面前面变成带笼子的魔王return true;break;case 2:if (gp.getMap().getMap()rowc

38、olumn + 1 = 2| gp.getMap().getMap()rowcolumn + 1 = 6) return true;if (gp.getMap().getMap()rowcolumn + 1 = 10) / 前面是魔王if (gp.getMap().getMap()rowcolumn + 2 = 2) / 前面前面是地板gp.getMap().getMap()rowcolumn + 1 = 2;gp.getMap().getMap()rowcolumn + 2 = 10;return true;if (gp.getMap().getMap()rowcolumn + 2 = 6)

39、 / 前面前面是笼子gp.getMap().getMap()rowcolumn + 1 = 2;gp.getMap().getMap()rowcolumn + 2 = 14;return true;if (gp.getMap().getMap()rowcolumn + 1 = 14) / 前面是带笼子魔王if (gp.getMap().getMap()rowcolumn + 2 = 2) / 前面前面是地板gp.getMap().getMap()rowcolumn + 1 = 6; / 前面就变成笼子gp.getMap().getMap()rowcolumn + 2 = 10; / 前面的前面

40、变成了魔王return true;if (gp.getMap().getMap()rowcolumn + 2 = 6) / 前面前面是笼子gp.getMap().getMap()rowcolumn + 1 = 6; / 前面变成笼子gp.getMap().getMap()rowcolumn + 2 = 14; / 前面前面变成带笼子的魔王return true;break;case 3:if (gp.getMap().getMap()row - 1column = 2| gp.getMap().getMap()row - 1column = 6) return true;if (gp.getM

41、ap().getMap()row - 1column = 10) / 前面是魔王if (gp.getMap().getMap()row - 2column = 2) / 前面前面是地板gp.getMap().getMap()row - 1column = 2;gp.getMap().getMap()row - 2column = 10;return true;if (gp.getMap().getMap()row - 2column = 6) / 前面前面是笼子gp.getMap().getMap()row - 1column = 2;gp.getMap().getMap()row - 2co

42、lumn = 14;return true;if (gp.getMap().getMap()row - 1column = 14) / 前面是带笼子魔王if (gp.getMap().getMap()row - 2column = 2) / 前面前面是地板gp.getMap().getMap()row - 1column = 6; / 前面就变成笼子gp.getMap().getMap()row - 2column = 10; / 前面的前面变成了魔王return true;if (gp.getMap().getMap()row - 2column = 6) / 前面前面是笼子gp.getMa

43、p().getMap()row - 1column = 6; / 前面变成笼子gp.getMap().getMap()row - 2column = 14; / 前面前面变成带笼子的魔王return true;break;return false;6.5 地图绘画区 该模块主要用于画图操作,包括画墙、画箱子、画目的地和画小人等。 界面实现如下: a.读取地图的工具private ImageUtil iu = new ImageUtil();private Image back1 = null; / 墙private Image back2 = null; / 地板private Image b

44、ack3 = null; / 笼子private Image back4 = null; / 魔王private Image over = null;private int map = getMission(LVL); / 当前关卡的地图public static int LVL = 1;public int getMap() return map;public void setMap() / 进入下一关this.map = getMission(+LVL);private int mapX = 100;/ 地图开始的初始坐标private int mapY = 100;private Gam

45、ePanel gp; / 这样就可以得到画纸上的内容,比如英雄b. 构造方法中加载图片public Maps(GamePanel gp) this.gp = gp;back1 = iu.getImage(back1.gif);back2 = iu.getImage(back2.gif);back3 = iu.getImage(back3.gif);back4 = iu.getImage(back4.gif);over = iu.getImage(阴阳.jpg);c.接收一个关卡的编号返回地图public int getMission(int i) / 墙是1, 地板是2 ,笼子4 ,魔王8,英

46、雄16/ 笼子+地板+魔王14switch (i) case 1:map = new int 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 , 1, 6, 6, 1, 2, 2, 2, 2, 2, 1 , 1, 6, 6, 1, 2, 10, 2, 10, 2, 1 , 1, 6, 6, 1, 10, 10, 10, 10, 18, 1 , 1, 2, 2, 2, 2, 2, 2, 2, 2, 1 , 1, 2, 2, 2, 2, 2, 2, 2, 2, 1 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ,;break;case 2:map = new int 19

47、 ;break;return map;d.画地图的方法public boolean draw(Graphics g) boolean yes6 = true; / 为true的时候说明游戏结束了for (int i = 0; i map.length; i+) for (int j = 0; j mapi.length; j+) switch (mapij) case 1:g.drawImage(back1, mapX + j * 32, mapY + i * 32,Color.BLACK, null);/ 画出背景图片break;case 2:g.drawImage(back2, mapX

48、+ j * 32, mapY + i * 32,Color.BLACK, null);/ 画出背景图片break;case 6:g.drawImage(back2, mapX + j * 32, mapY + i * 32, null);/ 画出背景图片/ ,图片叠加不要加背景颜色g.drawImage(back3, mapX + j * 32, mapY + i * 32, null);/ 画出背景图片yes6 = false; / 如果有6说明游戏未结束break;case 10:g.drawImage(back2, mapX + j * 32, mapY + i * 32, null);

49、/ 画出背景图片g.drawImage(back4, mapX + j * 32, mapY + i * 32, null);/ 画出背景图片break;case 18: / 发现18后要设置英雄出现的位置g.drawImage(back2, mapX + j * 32, mapY + i * 32,Color.BLACK, null);/ 画出背景图片/ 发现是18就设置英雄出现的位置gp.getHero().setHeroX(mapX + j * 32);gp.getHero().setHeroY(mapY + i * 32);/ 设置好之后,将这块设为地板mapij = 2;/ 如果不改

50、为2,英雄就在这个位置不动了break;case 14:g.drawImage(back2, mapX + j * 32, mapY + i * 32, null);/ 画出背景图片/ ,图片叠加不要加背景颜色g.drawImage(back4, mapX + j * 32, mapY + i * 32, null);/ 画出背景图片/ ,图片叠加不要加背景颜色g.drawImage(back3, mapX + j * 32, mapY + i * 32, null);/ 画出背景图片/ ,图片叠加不要加背景颜色break;case 19:/ g.setColor(Color.black);/

51、 g.drawOval(0, 0, 60, 60);g.drawImage(over, 0, 0, null);break;return yes6;7 结束语通过开发本游戏,我学习到了我们信息与计算科学专业理论课程的实践方法,真正认识到系统开发的流程,使我再一次认识到理论与实践并行的重要性,这为我今后理论学习和实践技能提高起到了促进的作用。综合了自己在校期间所学的理论知识,使自己熟悉应用系统的开发过程,培养独立思考能力,检验学习效果和动手能力,初步掌握软件工程的系统理论,进一步巩固和加强自身对java, swing基础知识的理解,提高自己的编程水平,从而达到理论与实践相结合的目的。 此次毕业设计是在老师的精心指导下,进行了理论与实践的结合,通过这次设计,我的动手能力有了很大的提高,使我学习到了怎样去查找翻阅有关理论资料和技术手册,怎样把理论知识与实践相结合,使我对软件开发有了一个宏观的掌控和了解,肯定会对今后的工作产生深远的影响。由于水平有限,设计作品还有很多不足之处,请大家多多批评、指正。参考文献:1 陈轶.姚晓昆编著.Java程序设计实验指

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!