Java原谅帽

需求分析

分析

  1. 第一步 发现类(对象)
    - 人物-小丑(友方,敌方)
    - 子弹-帽子
    - 墙体
    - 爆炸物
  2. 第二步 发现属性
    - 小丑:宽 高 ,位置(x , y),移动速度
    - 帽子:宽 高 ,位置(x , y),移动速度
    - 墙体:宽 高 ,位置(x , y)
    - 爆炸物:宽 高 ,位置(x , y)
  3. 第三步 发现方法
    - 小丑(buffoon):
    移动
    攻击(发子弹)
    - 子弹(missile):
    移动
    - 子弹撞墙
    - 子弹撞边界
    - 墙体(wall):无行为
    - 爆炸物(explode):
    爆炸物消失
    注意:在java里万物皆对象

难点

  1. 如何将图片加载到窗体里面
    第一步 背景图片加载 已完成
    人物–小丑加载 已完成
    发射物–帽子加载 已完成
    墙体加载 已完成
    爆炸物加载 已完成
  2. 窗体如何创建 已完成
  3. 子弹如何发射??键盘如何触发事件.

代码分析

加载图片

//常量定义背景图片的路径
public static final String BG_PATH = "images/bg.png";
//定义图片静态变量
private static Image image;

//创建人物小丑
private Buffoon buffoon = new Buffoon(500, 500, this);

//创建发射物
private Missile missile = new Missile(506, 484, this);

//创建墙体
private Wall wall = new Wall(350, 100, this);


//创建爆炸物
private Explode explode = new Explode(800, 400, this);


// 静态块,所有资源只需要加载一次
static {
    image = CommonUtils.getImage(BG_PATH);
}

在窗口中显示实体对象

在对象本类中设置自己的画笔方法
在客户端调用画笔方法

public Explode(int x,int y,GameClinet gameClinet){
    this.height=80;
    this.width=80;
    this.x=x;
    this.y=y;
    this.gameClinet=gameClinet;
}

public void print(Graphics g){
    g.drawImage(explodeImage,this.x,this.y,this.width,this.height,this.gameClinet);

}

分析小丑的行走方法

小丑移动: move
Left 向左 : x = x - this.speed;
Right 向右 : x = x + this.speed;
Down向下 : y = y + this.speed;
Up 向上 : y = y - this.speed;
Ur 东北方向: x = x + this.speed;y = y - this.speed;
Dr 东南方向 : x = x + this.speed; y = y+ this.speed;
Ld 西南方向: x = x - this.speed; y = y + this.speed;
LU 西北方向: x = x - this.speed;y = y - this.speed;
如图:在这里插入图片描述

//人物移动
public void move(String dir) {
    //上
    if ("U".equals(dir)) {
        this.y -= this.speed;
    }
    //右
    if ("R".equals(dir)) {
        this.x += this.speed;
    }
    //下
    if ("D".equals(dir)) {
        this.y += this.speed;
    }
    //左
    if ("L".equals(dir)) {
        this.x -= this.speed;
    }
    //东北
    if ("RD".equals(dir)) {
        this.x = this.x + this.speed;
        this.y = this.y - this.speed;
    }
    //东南
    if ("RD".equals(dir)) {
        this.x = this.x + this.speed;
        this.y = this.y + this.speed;
    }
    //西北
    if ("LU".equals(dir)) {
        this.x = this.x - this.speed;
        this.y = this.y - this.speed;
        //西南
        if ("LD".equals(dir)) {
            this.x = this.x - this.speed;
            this.y = this.y + this.speed;
        }


    }
}

完成效果图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值