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]たときにダンプすると推測しますが、押されていないときにダンプしないので、その説明は多くの意味。isUnderway=truetargetlocation[x/y]BUTTON1

現在、このコードは意図したとおりに機能しますが、注文がコミットされた後に targetlocation の値を変更できることを除きます。

編集: このメソッド (およびそれが含まれるクラス) は、GUI に AWT を使用します。

4

1 に答える 1

2

SWINGでは、まさにそれがガラス板の目的です。

于 2013-06-29T16:46:01.250 に答える