我最近开始用Java编程,并决定开始制作游戏,以此来向自己展示一些新的概念和方法。游戏是一个简单的2轮回合制战略游戏(或者它将会是),我一直在努力解决的一个主要问题如下:
我希望所有玩家同时分配他们的订单,当他们完成分配他们的订单时,他们提交/确认/提交他们的订单,但是我让游戏在功能上接受订单,并且有一个非常简单的“提交”命令到位,我似乎无法了解如何在游戏移动玩家的单位时暂时禁用用户输入。
我认为问题可能在以下代码的某处,如果代码没有以正确的格式出现,我会在高级中道歉(我之前没有发过问题,但我试过了):
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
,将它们重置为默认值(该片段的当前位置),但看到它不会转储{{1当没有按下targetlocation[x/y]
时,解释没有多大意义。
目前,此代码按预期运行,除了能够在提交订单后更改targetlocation值。
编辑:此方法(及其所在的类)使用AWT作为GUI。