手把手一步一步教你使用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());

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


项目源码


项目源码

目录
相关文章
|
1月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
126 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
15天前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
95 0
|
2月前
|
并行计算 Java API
Java List 集合结合 Java 17 新特性与现代开发实践的深度解析及实战指南 Java List 集合
本文深入解析Java 17中List集合的现代用法,结合函数式编程、Stream API、密封类、模式匹配等新特性,通过实操案例讲解数据处理、并行计算、响应式编程等场景下的高级应用,帮助开发者提升集合操作效率与代码质量。
117 1
|
1月前
|
移动开发 Cloud Native 安全
Java:跨平台之魂,企业级开发的磐石
Java:跨平台之魂,企业级开发的磐石
|
1月前
|
设计模式 人工智能 前端开发
现代 Java 实现数字华容道与石头迷阵游戏的项目实战及项目开发指南
本项目基于Java 17+,采用JavaFX与MVC架构,实战开发数字华容道/石头迷阵游戏。内容涵盖技术选型、核心逻辑、现代GUI设计、动画实现及项目打包发布,结合sealed class、record等新特性,打造简洁可维护的游戏代码结构。
76 0
|
2月前
|
机器学习/深度学习 存储 Java
Java 大视界 -- Java 大数据机器学习模型在游戏用户行为分析与游戏平衡优化中的应用(190)
本文探讨了Java大数据与机器学习模型在游戏用户行为分析及游戏平衡优化中的应用。通过数据采集、预处理与聚类分析,开发者可深入洞察玩家行为特征,构建个性化运营策略。同时,利用回归模型优化游戏数值与付费机制,提升游戏公平性与用户体验。
|
2月前
|
Java API
深入解析Java API中Object类的功能
了解和合理运用 Object类的这些方法,对于编写可靠和高效的Java应用程序至关重要。它们构成了Java对象行为的基础,影响着对象的创建、识别、表达和并发控制。
53 0
|
Java 开发工具 git
Java开发初级6.24.3
5.在Git使用过程中,进行Git配置的操作命令是哪个() A. config B. config -g C. config -a D. git config 相关知识点: 在git中,经常使用git config 命令用来配置git的配置文件,git配置级别主要有:仓库级别 local 【优先级最高】、用户级别 global【优先级次之】、系统级别 system【优先级最低】 正确答案:D 10.RDBMS是什么? A. Rela Database Management Systems B. Relational Database Management Systems C. Relation
195 0
|
SQL 前端开发 JavaScript
Java开发初级6.24.2
3.Java网站src/main/java目录保存的是什么资源? A. Java源代码文件 B. 测试代码 C. JavaScript、CSS等文件 D. 图片资源 正确答案:A 4.什么是索引Index? A. SQL数据库里的表管理工具 B. SQL数据库里的查询工具 C. SQL数据库里的目录工具 D. SQL数据库用来加速数据查询的特殊的数据结构 正确答案:D
263 0

热门文章

最新文章