手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏15之拳击范围

简介: 手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏15之拳击范围

攻击范围


AttackAbleObject.java

package character;
import sprite.Transform;
import java.awt.*;
import java.awt.geom.AffineTransform;
public abstract class AttackAbleObject extends GameObject{
    private Transform _transform;
    private int _cx1;
    private int _cx2;
    private int _cy1;
    private int _cy2;
    public AttackAbleObject(Transform trans,
                            int hurt_x, int hurt_y, int hurtscale_x, int hurtscale_y, int hitoffset_x1,
                            int hitoffset_y1, int hitoffset_x2, int hitoffset_y2) {
        super(trans,hurt_x,hurt_y,hurtscale_x, hurtscale_y);
        _transform = trans;
        this.setHitBoxOffsets(hitoffset_x1,hitoffset_y1,hitoffset_x2,hitoffset_y2);
    }
    public Shape getHitBox(){
        AffineTransform as = new AffineTransform();
        as.setTransform(_transform.getTransform());
        return as.createTransformedShape(new Rectangle(_cx1,_cy1,_cx2,_cy2));
    }
    public void setHitBoxOffsets(int x1,int y1, int x2, int y2){
        _cx1 = x1;
        _cx2 = x2;
        _cy1 = y1;
        _cy2 = y2;
    }
}

Player.java继承AttackAbleObject,在构造函数中传入player的攻击范围参数(最后4个参数)

public class Player extends AttackAbleObject{
    public Player(Animator animator, int hurtx, int hurty, int hurtscale_x, int hurtscale_y
            , int hitoffset_x1, int hitoffset_y1, int hitoffset_x2, int hitoffset_y2){
        super(animator,hurtx,hurty,hurtscale_x,hurtscale_y
                ,hitoffset_x1,hitoffset_y1,hitoffset_x2,hitoffset_y2);
}

最后GameApp.java中,player的构造方式改为如下:

_player = new Player(animator,60,44,18,98
                    ,65,60,50,11);

我们可以通过以下调用以下方法,可视化player的攻击范围

g.draw(_player.getHitBox());

如果您迷路了,请参考完整源码:


项目源码


项目源码

目录
相关文章
|
2天前
|
NoSQL Java Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
|
2天前
|
开发框架 Java Android开发
Java中的类反射与动态代理详解
Java中的类反射与动态代理详解
|
2天前
|
开发框架 Java API
Java中的REST API开发详解
Java中的REST API开发详解
|
2天前
|
消息中间件 存储 SpringCloudAlibaba
会员系统01----基于Java开发的 | BTC,完整的SpringClound微服务包含内容
会员系统01----基于Java开发的货币交易所 | BTC,完整的SpringClound微服务包含内容
|
2天前
|
敏捷开发 Java 测试技术
实现Java应用的快速开发与迭代
实现Java应用的快速开发与迭代
|
2天前
|
安全 Java
Java中的集合类性能比较与选择
Java中的集合类性能比较与选择
|
2天前
|
监控 安全 Java
Java中的线程调度与性能优化技巧
Java中的线程调度与性能优化技巧
|
2天前
|
缓存 安全 Java
Java中的线程安全问题及解决方案
Java中的线程安全问题及解决方案
|
2天前
|
并行计算 安全 Java
Java中的多线程与并发编程详解
Java中的多线程与并发编程详解
|
2天前
|
存储 缓存 前端开发
Java八股文面试之多线程篇
Java八股文面试之多线程篇
9 0
Java八股文面试之多线程篇