我最近开始使用 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。