2016-06-22 1 views
0

私は3人の対戦相手に対抗して1人のユーザーがコントロールするプレイヤーがいるカードゲームをプログラムしたいと思っています。ラウンドを勝利プレイヤーは、次のラウンドを開始し、このカードゲームではカードゲームのゲームループ、勝者が始まり、1人のユーザがコントロールするプレーヤー

https://cardgames.io/euchre/

を:それはユーカーのゲームです、あなたはここに同様の例を見つけることができます。ゲームは自動的に続行します

ユーザーイベントを処理する方法を見つけようとしています。クリックイベントは、ユーザがコントロールするプレイヤーがカードを演奏し、次に他のプレイヤーを時計回りの順序で操作する必要があります。

ユーザーコントロールプレイヤーが手に勝っていない場合、ユーザーコントロールプレイヤーが再度プレイする必要があるまでゲームを継続しなければならず、その時点で別のクリックイベントを発生させる必要があります。

この問題を解決するにはどうすればよいでしょうか?私は私が何をしたいんだと思うJSFiddleを持っていますが、それは本当に理想的ではないのです。

https://jsfiddle.net/GerardSimpson/m736364e/18/

var player1 = {}; 
player1.hasPlayed = false; 
var roundStarter = 0; 
var i = 0; 
var currentTurn = (i + roundStarter) % 4; 
while(player1.hasPlayed === false) { 
    console.log("player[",currentTurn,"]", "plays a card"); 
    i++; 
    currentTurn = (i + roundStarter) % 4; 
    if(i === 4) { 
    roundStarter = 2; 
    console.log("Round Over, player "+ roundStarter +" wins"); 
    i = 0; 
    currentTurn = (i + roundStarter) % 4; 
    } 
    if(currentTurn === 0) { 
    console.log("player[ 0 ]s turn, exit loop and wait for new click event"); 
    player1.hasPlayed = true; 
    } 
} 

答えて

1

私は私の問題への解決策を見つけるために管理している、トリックはに転換する機能を入れていましたゲームスコープの記録を保持する親スコープ内の変数を変更する関数。私はグローバルスコープを徹底させたくない場合、これにクロージャを追加する必要があるかもしれないと思います。

var player1 = {}; 
player1.hasPlayed = false; 
var roundStarter = 0; 
var i = 0; 
var currentTurn = (i + roundStarter) % 4; 

$('.click-me').on('click', function(){ 
    while(1) { 
    console.log("player[",currentTurn,"]", "plays a card"); 
    i++; 
    currentTurn = (i + roundStarter) % 4; 
    if(i === 4) { 
     roundStarter = 3; 
     console.log("Round Over, player "+ roundStarter +" wins"); 
     i = 0; 
     currentTurn = (i + roundStarter) % 4; 
    } 
    if(currentTurn === 0) { 
     console.log("player[ 0 ]s turn, exit loop and wait for new click event"); 
     break; 
    } 
    } 
}); 

http://jsfiddle.net/GerardSimpson/m736364e/23/

:私はここに私のコードとバイオリンで、後で更新します
関連する問題