前回のカードゲームをJavaScriptでつくるでカードを表示させることができるようになったので、今回は素数大富豪をJavaScriptでつくることにします。

動作確認はこちらから ⇒ Web版素数大富豪、別名 素数の出会い系サイト

HTML部分

まずHTML部分を示します。card.jsの部分は前回JavaScriptで書いたものをそのまま使います。

初期化の処理

次にgame.jsの部分ですが、

game.js

最初はゲームスタートのボタンしか表示されないようにボタンを初期化しておきます。

これはボタンの表示と非表示を切り替えるための関数です。

ゲーム開始における処理

次にゲーム開始ボタンが押されたときの処理を示します。カードをシャッフルして配る処理をおこなっています。

game.js

カードを配る処理

カードを配る処理を示します。山札のカードを13枚各プレイヤーの手札へ移動させます。

カードを表示する処理

各プレイヤーが持っているカードを表示するための処理を示します。カードを番号順に並べて表示させますが、各配列から削除しただけではカードは消えません。非表示にするための処理が必要です。ここでは表示させなければならないカード以外はX座標を負数にすることで見えない場所に移動させて非表示にしています。

最後にShowText関数を実行していますが、これは場と素因数場に出されたカードによってつくられる数と計算式を表示するためのものです。

カードの選択を取り消す処理

プレイヤーがいったん出したけど取り消してやり直したくなる場合があるので、出されたカードをすべて手札に移動する関数をつくりました。

パス時の処理

プレイヤーがパスをするときに呼び出される関数です。パスをするとコンピュータの手番になるのですが、この部分はまだできていません。これは未完成の関数です。

プレイヤーが出す処理

プレイヤーが出すカードはクリックして選択します。クリックされたらOnMouseDown関数を呼び出してカードを出す処理をおこなわせます。処理中などの理由で確定ボタンが表示されていない場合はなにもしません。

クリックされたときの処理ですが、プレイヤーのカードがクリックされたとき以外はなにもしません。Y座標が380ピクセルよりも上のときはプレイヤーのカードではないのでなにもしていません。クリックされた要素に class = “card”がない場合やCardクラスのGetObjectFromElement関数でnullが返されたときはカードは選択されていないということなのでなにもしていません。

プレイヤーのカードがクリックされたと見なされたときはチェックボックスの状態で素数としてカードを出そうとしているのか、合成数の素因数が指定されたのかを判断して適切な位置にカードを移動させています。そして最後にShowCards関数を呼び出してカードを表示させています。

ShowText関数はディスプレイ下にプレイヤーが出そうとしているカードで構成される整数と素因数による計算式を表示するためのものです。

ジョーカーを出すときの処理

ジョーカーを出すときは数を選択するためのセレクトボックスを表示させます。

メッセージボックスを表示するための処理

CreateMessageElement関数はメッセージを表示させるための要素を生成するためのものです。

AppendOkCancelButton関数は前述のメーセージを表示するための要素にOKボタンとキャンセルボタンを追加します。また要素の高さを最適化して画面の中央にメーセージを表示させます。

「×」と「^」を選択したときの処理

InsertX関数とInsertHat関数は「×」と「^」がクリックされたときに素因数による計算式をつくるためのものです。