文档详情

Java小程序之山寨版超级玛丽资料

f****u
实名认证
店铺
DOC
370.50KB
约17页
文档ID:113638408
Java小程序之山寨版超级玛丽资料_第1页
1/17

Java小程序之山寨版超级玛丽一、游戏基本功能1、能够向左向右行走(键盘监听)2、能够跳跃3、能够发射子弹4、能够检测和障碍物之间的碰撞5、背景图片的移动二、游戏运行界面三、游戏大致实现思路:1.窗体2.自己角色的添加3.背景图片的添加4.背景图片的移动5.人物的移动和跳跃6.砖头、水管等等障碍物的添加7.任务和障碍物的碰撞难点分析:1.人物的多键控制1)给人物设定方向boolean变量:向左、向右、向上、向下2)通过键盘监听来修改方向的变量值 按下某个键的时候,我们把相应方向改为true,释放的时候改false2.地图配置自定义文件读取方式实现:文件流的使用和字符串String类的方法调用3.碰撞检测封装一个Rectangle类的对象4.子弹添加1)先定义一个容器,这个用于封装所有的子弹对象2)按下某个键的时候,创建一个子弹对象(以角色的坐标为基准初始化)3)把子弹对象添加到容器当中4)在paint方法中,遍历容器,取出子弹对象并进行绘制5)检测子弹如果超出了窗体边界,则需要把当前子弹从容器当中移除掉四、程序源代码:代码结构图:分了三个包、敌人类包、游戏界面类包、游戏地图配置包com.huaxin.mario包:[java] view plain copy print?在CODE上查看代码片派生到我的代码片package com.huaxin.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 ArrayList eneryList = new ArrayList(); //子弹容器 public ArrayList boomList = new ArrayList(); //子弹的速度 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); } //读到3画水管 if(map[i][j]==3){ pipe = new Pipe(j*30,i*30,60,120,new ImageIcon("image/pipe.png").getImage()); eneryList.add(pipe); } } } //设置背景音乐 com.huaxin.music.Util.startMusic("music/bg1.wav"); } public void initFrame(){ //设置窗体相关属性 this.setSize(800,450); this.setTitle("山寨版超级玛丽"); this.setResizable(false); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(3); this.setVisible(true); //该窗体添加键盘监听 KeyListener kl = new KeyListener(this); this.addKeyListener(kl); } public void paint(Graphics g) { //利用双缓冲画背景图片和马里奥 BufferedImage bi =(BufferedImage)this.createImage(this.getSize().width,this.getSize().height); Graphics big =bi.getGraphics(); big.drawImage(bg.img, bg.x, bg.y, null); for (int i = 0; i 800){ boomList.remove(i); } } } } [java] view plain copy print?在CODE上查看代码片派生到我的代码片。

下载提示
相似文档
正为您匹配相似的精品文档