私は最近 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
現在、このコードは意図したとおりに機能しますが、注文がコミットされた後に targetlocation の値を変更できることを除きます。
編集: このメソッド (およびそれが含まれるクラス) は、GUI に AWT を使用します。