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

上传人:飞*** 文档编号:37828356 上传时间:2018-04-23 格式:PDF 页数:17 大小:465.27KB
返回 下载 相关 举报
Java小程序之山寨版超级玛丽_第1页
第1页 / 共17页
Java小程序之山寨版超级玛丽_第2页
第2页 / 共17页
Java小程序之山寨版超级玛丽_第3页
第3页 / 共17页
Java小程序之山寨版超级玛丽_第4页
第4页 / 共17页
Java小程序之山寨版超级玛丽_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《Java小程序之山寨版超级玛丽》由会员分享,可在线阅读,更多相关《Java小程序之山寨版超级玛丽(17页珍藏版)》请在金锄头文库上搜索。

1、Java小程序之山寨版超级玛丽一、游戏基本功能1、能够向左向右行走(键盘监听)2、能够跳跃3、能够发射子弹4、能够检测和障碍物之间的碰撞5、背景图片的移动二、游戏运行界面三、游戏大致实现思路:1.窗体2.自己角色的添加3.背景图片的添加4.背景图片的移动5.人物的移动和跳跃6.砖头、水管等等障碍物的添加7.任务和障碍物的碰撞难点分析:1.人物的多键控制1)给人物设定方向boolean 变量:向左、向右、向上、向下2)通过键盘监听来修改方向的变量值按下某个键的时候,我们把相应方向改为true,释放的时候改false 2.地图配置自定义文件读取方式实现:文件流的使用和字符串String 类的方法调

2、用3.碰撞检测封装一个 Rectangle 类的对象4.子弹添加1)先定义一个容器,这个用于封装所有的子弹对象2)按下某个键的时候,创建一个子弹对象(以角色的坐标为基准初始化)3)把子弹对象添加到容器当中4)在 paint 方法中,遍历容器,取出子弹对象并进行绘制5)检测子弹如果超出了窗体边界,则需要把当前子弹从容器当中移除掉四、程序源代码:代码结构图:分了三个包、敌人类包、游戏界面类包、游戏地图配置包com.huaxin.mario 包:java view plain copy print?在 CODE 上查看代码片派生到我的代码片package com.huaxin.mario; impo

3、rt 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 mari

4、o; 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 Excepti

5、on 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

6、i = 0; i 800) boomList.remove(i); java view plain copy print?在 CODE 上查看代码片派生到我的代码片package com.huaxin.mario; import java.awt.Image; import java.awt.Rectangle; import javax.swing.ImageIcon; import com.huaxin.enery.Enery; /自己的角色类public class Mario extends Thread public GameFrame gf; public boolean jump

7、Flag=true; /马里奥的坐标public int x=0,y=358; /马里奥的速度public int xspeed=5,yspeed=1; /马里奥的宽高public int width=30,height=32; /马里奥的图片public Image img = new ImageIcon(“image/mari1.png“).getImage(); public boolean left=false,right=false,down=false,up=false; public String Dir_Up=“Up“,Dir_Left=“Left“,Dir_Right=“Ri

8、ght“,Dir_Down=“Down“; public Mario (GameFrame gf) this.gf=gf; this.Gravity(); public void run() while(true) /向左走if(left) /碰撞到了if(hit(Dir_Left) this.xspeed=0; if(this.x=0) this.x-=this.xspeed; this.img=new ImageIcon(“image/mari_left.gif“).getImage(); this.xspeed=5; /向右走if(right) if(hit(Dir_Right) thi

9、s.xspeed=0; /任人物向右移动if(this.x=400) /背景向左移动gf.bg.x-=this.xspeed; /障碍物项左移动for (int i = 0; i =358) isGravity=false; else isGravity=true; y+=yspeed; try sleep(10); catch (InterruptedException e) e.printStackTrace(); .start(); java view plain copy print?在 CODE 上查看代码片派生到我的代码片package com.huaxin.mario; impo

10、rt java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.ImageIcon; /键盘按下监听类public class KeyListener extends KeyAdapter public GameFrame gf; public boolean jumpFlag=true; public KeyListener(GameFrame gf) this.gf=gf; /键盘监听public void keyPressed(KeyEvent e) int code = e.getKeyC

11、ode(); switch(code) /向右走case 39: gf.mario.right=true; break; /向左走case 37: gf.mario.left=true; break; case 66: addBoom(); break; /向上跳case 74: gf.mario.up=true; break; /添加子弹public void addBoom() Boom b = new Boom(gf.mario.x,gf.mario.y+5,10); if(gf.mario.left) b.speed=-2; if(gf.mario.right) b.speed=2;

12、gf.boomList.add(b); /键盘释放监听public void keyReleased(KeyEvent e) int code=e.getKeyCode(); if(code=39) gf.mario.right=false; gf.mario.img=new ImageIcon(“image/mari1.png“).getImage(); if(code=37) gf.mario.left=false; gf.mario.img=new ImageIcon(“image/mari_left1.png“).getImage(); if(code=74) gf.mario.up=

13、false; java view plain copy print?在 CODE 上查看代码片派生到我的代码片package com.huaxin.mario; import java.awt.Image; import javax.swing.ImageIcon; public class BackgroundImage public int x=0,y=0; public int ox=0,oy=0; public Image img=new ImageIcon(“image/startBack.jpg“).getImage(); java view plain copy print?在

14、CODE 上查看代码片派生到我的代码片package com.huaxin.mario; /子弹类public class Boom /子弹的坐标,大小,速度int x,y; int width; int speed=1; public Boom(int x, int y, int width) super(); this.x = x; this.y = y; this.width = width; 主函数类,作为整个程序的入口java view plain copy print?在 CODE 上查看代码片派生到我的代码片package com.huaxin.mario; public cla

15、ss Test /主函数,程序入口public static void main(String args) throws Exception GameFrame gf = new GameFrame(); gf.initFrame(); com.huaxin.enery 包:java view plain copy print?在 CODE 上查看代码片派生到我的代码片package com.huaxin.enery; import java.awt.Image; /障碍物的抽象父类public abstract class Enery public int x,y; public int w

16、idth,height; public Image img; public Enery(int x, int y, int width, int height,Image img) this.x = x; this.y = y; this.width = width; this.height = height; this.img=img; java view plain copy print?在 CODE 上查看代码片派生到我的代码片package com.huaxin.enery; import java.awt.Image; /金币类public class Coin extends Enery

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

当前位置:首页 > 商业/管理/HR > 其它文档

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