chinchiroのロジック解説(7)
ゲーム進行のロジック
今回はメインとなるゲーム進行のロジックについて解説します。
while (true) { 色々な処理 }
基本的には、行動選択→掛け金の決定→各プレイヤーがサイコロを振って役を作る→勝敗を決定→掛け金の払い戻しを1サイクルとして、while(true)
でこれをぐるぐると永久的に回していきます。
親番の交代
chinchiroではプレイヤーを含む各ユーザーのインスタンスを、イテレーターの外の配列users
に入れています。
この配列の先頭、つまりusers[0]
を親番としてゲーム進行が行われるようにしてあります。
そして、サイクルの最後でこのusers[0]を配列から削除し、再び配列に追加します。
こうすることで、例えば[user1, user2, user3]
だったとすると、[user2, user3, user1]
のように順番が入れ替わり、次のサイクルの親が1つずれて交代で行われるようになります。
ゲームセット
誰かの所持金が0以下になるとgameset
メソッドが作動し、ゲームが終わります。
これ以外ではアクションの選択でsurrender
を選んだ場合もゲームを終わらせることができます。
gameset () { console.log('\u001b[1mgameset!\u001b[0m') this.users.sort(function (a, b) { if (a._token < b._token) return 1 if (a._token > b._token) return -1 return 0 }) for (const user of this.users) { console.log(`${user.name}: ${user._token}`) } if (this.users[0] === this.user1) { console.log('☆☆☆\u001b[3myou are winner!\u001b[0m☆☆☆') } process.exit() }
前述の通りusers
はユーザーのインスタンスが入った配列で、this.users.sort
メソッドで所持金の多い順に並び替えてから表示しています。これが最終順位になります。
これがゲーム開始から終了まで一連の流れです。