0

我最近开始使用 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]when ,将它们重置为默认值(该片段的当前位置),但是看到当没有按下时isUnderway=true它不会转储该解释并不能说明很有意义。targetlocation[x/y]BUTTON1

目前,此代码按预期运行,除了能够在提交订单后更改目标位置值。

编辑: 这个方法(和它所在的类)使用 AWT 作为 GUI。

4

1 回答 1

2

在 SWING 中,这正是玻璃板的用途。

于 2013-06-29T16:46:01.250 回答