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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间: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)检测子弹如果超出了窗体边界,则需要把当前子弹从容器当中移除掉

四、程序源代码:

代码结构图:分了三个包、敌人类包、游戏界面类包、游戏地图配置包

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);

}

相关文档
最新文档