我最近开始用Java进行编程,并决定开始制作游戏,以使自己了解一些新概念和新方法。该游戏是一个简单的基于回合的2d策略游戏(或者将会是),我一直在努力解决的主要问题如下:

我希望所有玩家同时分配他们的订单,当他们完成分配他们的订单后,他们便会提交/确认/提交给他们的订单,但是当我在游戏中可以接受订单的功能时,并且有一个非常简单的“提交”命令,我可以似乎没有找到如何在游戏进行移动玩家单位时暂时禁用用户输入的方法。

我认为问题可能出在以下代码中,如果代码没有以正确的格式出现,我深表歉意(我之前没有发布问题,但我尝试过):

if(Canvas.keyboardKeyState(KeyEvent.VK_SPACE)){
    isUnderway=true;
    timeStarted=System.currentTimeMillis();
}
if (isUnderway&&System.currentTimeMillis()>=timeStarted + turnTimeMillis){
    isUnderway=false;
}
if(Canvas.mouseButtonState(MouseEvent.BUTTON1)){
    targetlocationy=((mousePosition.y-25)/50)*50;
    targetlocationx=((mousePosition.x-25)/50)*50;
}
totargetx = targetlocationx - x;
totargety = targetlocationy - y;
dist = Math.hypot( totargetx, totargety );

if(isUnderway){
    if ( dist <= 5 ){
        x = targetlocationx;
        y = targetlocationy;
    }
    else{
        x += totargetx * ( 2 / dist );
        y += totargety * ( 2 / dist );
    }
}


我试图通过将其设置为来更改用于设置targetlocation [x,y]的if()条件:

if(Canvas.mouseButtonState(MouseEvent.BUTTON1)&&isUnderway=false)


以及几种变化。但是该代码似乎不可操作,我猜想它会在targetlocation[x/y]时转储isUnderway=true,将它们重置为默认值(片段的当前位置),但是看到的是,当targetlocation[x/y]时它不会转储BUTTON1。并不认为这种解释没有任何意义。

目前,该代码可以按预期运行,但可以在提交订单后更改目标位置值。

编辑:此方法(及其所在的类)对GUI使用AWT。

最佳答案

在SWING中,这正是glass panes的用途。

07-24 21:01