Java小游戏之子弹的发射移动和移动边界以及优化数据

子弹发射后的移动

  上一章使用了事件触发让子弹能通过触发实现画笔显示,不在是默认显示
  但是发射后的子弹不能移动并且一直固定在位置上。
  所以,要实现子弹的移动:
  			首先 子弹移动就必须要方向,所以在子弹类中添加一个
  	方向属性,并添加一个判断方向的方法。
  	代码如下:
 private  String dir;//设置一个方向属性
 并且在有参构造方法中添加到他的参数,因为子弹是与人物类交互的
 所以人物的前进方向就是子弹的发射方向
 public Missile(int x,int y,String dir,GameClinet gameClinet){
        this.dir=dir;
        this.x=x;
        this.y=y;
        width=25;
        height=30;
        speed=10;
        this.gameClinet=gameClinet;
    }
将人物的方向属性赋予了子弹之后,进行子弹的发射方向判断方法进行
X,Y轴的变动。
  public void move(){
        if ("U".equals(dir)){
            this.y=this.y-this.speed;
        }
        if ("R".equals(dir)){
            this.x=this.x+this.speed;

        }
        if ("D".equals(dir)) {
            this.y=this.y+this.speed;

        }
        if ("L".equals(dir)){
            this.x=this.x-this.speed;

        }
        if ("UR".equals(dir)) {
            this.y = this.y - this.speed;
            this.x = this.x + this.speed;
        }
        if ("UL".equals(dir)){
            this.y=this.y-this.speed;
            this.x=this.x-this.speed;
        }
        if ("DR".equals(dir)){
            this.x=this.x+this.speed;
            this.y=this.y+this.speed;
        }
        if ("DL".equals(dir)) {
            this.y=this.y+this.speed;
            this.x=this.x-this.speed;
        }
        if ("STOP".equals(dir)){
            this.x+=this.speed;
        }
    }

边距设置

新建一个方法,判断X,Y的距离有没有超过当前的设置的宽高,如果超过了就将X,Y的值变成四边边距的值,使用IF判断(要注意每个判断都是IF,因为else if 只判断一次,并且注意自身人物图片的大小)。
如同如下代码:

   //移动设置边界
        if (x<170){
                x=170;
        }
        if (y<30){
            y=30;
        }
        if (x>775){
            x=775;
        }
        if (y>450){
            y=450;
        }

优化数据

	之前设置的属性都是单个类的值,每一次变更要更改多个相同类型的
	数值,太麻烦了。
	所以可以创建一个数据类,将他们的数据设置为静态常量,在带入各
	对象类中,直接调用,这样更改一次就可以确保全部更改
 //窗体宽度
    public static final int CLINET_WIDTH =1000;
    //窗体高度
    public static final int CLIENT_HEIGHT=700;

    //人物尺寸
    public static final int BUFFOON_SIZE=50;

    //人物速度
    public static final int BUFFOON_SPEED=5;

子弹移动的默认

	在代码中,如果人物初始状态静止没有方向,子弹同样是静止的状态
如何去解决这个BUG,很简单,在人物的方向中,我们设置一个字符串的
变量去获取人物方向上下左右的值,同时给他赋予一个初始的方向值,在传
给子弹的方向中,使其拥有默认属性的同时还能根据人物的变动进行相应的
方向改变

优化代码—继承

	这些对象里面有很多共有的属性,可以直接赋值给子类,减少代码量
	使得这些代码变得简洁易懂
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值