【Java】游戏小程序-超级玛丽(代码渗入).doc

【Java】游戏小程序-超级玛丽(代码渗入).doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【Java】游戏小程序-超级玛丽(代码渗入)

一、游戏基本功能 1、能够向左向右行走(键盘监听) 2、能够跳跃 3、能够发射子弹 4、能够检测和障碍物之间的碰撞 5、背景图片的移动 二、游戏运行界面 三、游戏大致实现思路: 1.窗体 2.自己角色的添加 3.背景图片的添加 4.背景图片的移动 5.人物的移动和跳跃 6.砖头、水管等等障碍物的添加 7.任务和障碍物的碰撞 难点分析: 1.人物的多键控制 1)给人物设定方向boolean变量:向左、向右、向上、向下 2)通过键盘监听来修改方向的变量值 按下某个键的时候,我们把相应方向改为true,释放的时候改false 2.地图配置 自定义文件读取方式实现:文件流的使用和字符串String类的方法调用 3.碰撞检测 封装一个Rectangle类的对象 4.子弹添加 1)先定义一个容器,这个用于封装所有的子弹对象 2)按下某个键的时候,创建一个子弹对象(以角色的坐标为基准初始化) 3)把子弹对象添加到容器当中 4)在paint方法中,遍历容器,取出子弹对象并进行绘制 5)检测子弹如果超出了窗体边界,则需要把当前子弹从容器当中移除掉 四、程序源代码: 代码结构图:分了三个包、敌人类包、游戏界面类包、游戏地图配置包 mario包: 主体框架 import java.awt.Color; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.util.ArrayList; import javax.swing.ImageIcon; import javax.swing.JFrame; import com.huaxin.enery.Enery; import com.huaxin.enery.Pipe; import Util.Map; public class GameFrame extends JFrame{ public Mario mario; public Enery pipe,cion,brick; //背景图片 public BackgroundImage bg ; //容器装敌人 public ArrayListEnery eneryList = new ArrayListEnery(); //子弹容器 public ArrayListBoom boomList = new ArrayListBoom(); //子弹的速度 public int bspeed=0; //画地图,制定规则,是1画砖头,是2画金币,是3画水管 public int [][] map =null; //构造函数里面初始化背景图片和马里奥对象 public GameFrame() throws Exception { mario = new Mario(this); mario.start(); Map mp= new Map(); bg = new BackgroundImage(); //窗体重绘线程 new Thread(){ public void run(){ while(true){ //重绘窗体 repaint(); //检查子弹是否出界 checkBoom(); try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } } }.start(); map=mp.readMap(); //读取地图,并配置地图 for (int i = 0; i map.length; i++) { for (int j = 0; j map[0].length; j++) { //读取到的是1,画砖头 if(map[i][j]==1){ brick = new Pipe(j*30,i*30,30,30,new ImageIcon(image/brick.png).getImage()); eneryList.add(brick); } //读到2画金币 if(map[i][j]==2){ cion = new Pipe(j*30,i*30,30,30,new ImageIcon(image/coin_brick.png).getImage()); eneryList.add(cion); } /

您可能关注的文档

文档评论(0)

liushuhua007 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7054124121000035

1亿VIP精品文档

相关文档