Java Swing中的快速时间事件[伪代码请求]

Java Swing中的快速时间事件[伪代码请求],java,swing,pseudocode,Java,Swing,Pseudocode,我正处于设计游戏的极早期阶段(如此之早,我甚至还没有承诺)。这个想法是一个RPG,它有一个快速的攻击和防御事件,依靠精确的鼠标移动或定时按钮来减少伤害或增加攻击的伤害(类似于马里奥和路易吉或纸马里奥)。我想知道编写一个能够处理这个问题的类的最佳方法。最终,我希望能够在调用攻击函数时编写这样的代码,其中QTE的所有功能都发生在单个函数调用中 //Example code. int attackPower = 23; double qteSucessPercent = -1; //more code

我正处于设计游戏的极早期阶段(如此之早,我甚至还没有承诺)。这个想法是一个RPG,它有一个快速的攻击和防御事件,依靠精确的鼠标移动或定时按钮来减少伤害或增加攻击的伤害(类似于马里奥和路易吉或纸马里奥)。我想知道编写一个能够处理这个问题的类的最佳方法。最终,我希望能够在调用攻击函数时编写这样的代码,其中QTE的所有功能都发生在单个函数调用中

//Example code.
int attackPower = 23;
double qteSucessPercent = -1;
//more code
if(e.getSource == player.sword()) //when the player chooses to execute a sword attack.
{
    qteSucessPercent = QTE.Jump();
    if(qteSucessPercent< 0)
        throw BadQTEException;
    else if(qteSucessPercent>= .9)
        player.attack(enemy[0], attackPower*2);
    else if(qteSucessPercent>= .75)
        player.attack(enemy[0], attackPower*1.5);
    else if(qteSucessRate>= .5)
        player.attack(enemy[0], attackPower);
    else
        System.out.println("Attack Failed");
}
//示例代码。
int attackPower=23;
双qteSucessPercent=-1;
//更多代码
如果(e.getSource==player.Swarm())//当玩家选择执行剑击时。
{
qteSucessPercent=QTE.Jump();
如果(qteSucessPercent<0)
抛出BadQTEException;
否则如果(qteSucessPercent>=.9)
玩家攻击(敌人[0],攻击力*2);
否则如果(qteSucessPercent>=.75)
玩家攻击(敌人[0],攻击力*1.5);
否则如果(QTESuceSrate>=.5)
玩家攻击(敌人[0],攻击力);
其他的
System.out.println(“攻击失败”);
}
这门课需要做几件事

  • 它需要能够自己画

  • QTE类需要能够处理按键或鼠标移动事件。我可以为我想要实现的每种类型的QTE处理代码,但是它们需要能够自己检测鼠标在哪里以及按下了什么按钮

  • 一旦QTE结束,绘制的任何内容都需要删除自身

  • 将有多种类型的快速时间事件。每一个都会有不同的绘制方式,有不同的胜利条件(一个可能要求你按正确的顺序点击一系列按钮,另一个可能让你尽可能多地快速连续按下一个按钮,等等),并以各种方式修改攻击。所有QTE的基本设计是,根据玩家的表现,它们返回一个介于0和1之间的双倍值(通常,数字越高越好;如果攻击返回0,则QTE根本没有收到任何输入)。在某些情况下,QTE可能是通过/失败的,但程序的其余部分只是监视从函数调用传递的非0数字。对于剑来说,攻击的力量会随着你的表现而改变

  • 我知道Swing不是线程安全的(据我所知,这意味着如果您试图从您调用它们的线程以外的线程激活它们的部分代码,组件将无法正确更新,这意味着如果我希望两组代码都显示动画,我不能让两个代码块同时执行),这就是为什么我以我现在的方式编写代码。主线程到达第6行,并执行QTE.swarm()。在QTE.swarm()返回之前(可能长达5秒),程序的其余部分将冻结,不会设置动画。我计划利用这一点来实现子弹时间效果,唯一的动画是QTE,玩家和敌人保持静止——尽管如果我想要一个动画,比如马里奥和路易吉式的跳跃QTE,我将播放器的精灵设置为动画gif,只播放一次,并且只在QTE关闭时播放


请注意,我不是在要求代码。我要的要么是伪代码,要么只是一段解释我如何编程的说明。我想我可以在Github或Google代码上找到一个死气沉沉的开源项目,并从中找出引擎其余部分的基本知识,但这确实是我的症结所在。此外,我也不是在请求帮助处理鼠标移动或键盘按下。我有足够的知识自己编写这些代码-我只是不知道如何在RPG的上下文中实现这一点。我知道这并不是stackoverflow的问题,这个问题可能会被删除,但我认为这是问这类问题的最好地方。

我想你可能想把你的问题迁移到GameDev.SE,因为目前来看,你的问题不适合这样问。即使是这样,我也不相信GAMDEV的人会把这个问题看作是一个很好的选择。如果(E.GETSoal= = Prime.Script())不要这样做。设置一个侦听器模式,或者在玩家点击某个键或其他东西时调用一个方法,但不停地检查剑是愚蠢的。你可以使用jbuttons,或者如果必须,框架上的鼠标侦听器可以告诉你鼠标在哪里,你可以将框存储在按钮所在的位置,并在每次使用时检查鼠标是否在按钮内单击Suse JFrame或其他功能非常多的功能,只需确保在将线程传递到框架之前完成线程即可