動作確認はこちら

JavaScriptでカードゲーム スピードをつくる。前回はHTML部分とカード関連のクラスを作成しましたが、今回はメインの部分を作成します。

グローバル変数

まずグローバル変数を定義します。

初期化の処理

ページが読み込まれたら初期化の処理をおこないます。各要素を取得してグローバル変数に格納します。そのあとカードを生成してallCards1とallCards2に格納します。

カードを初期化する処理を示します。

タイマーの設定

タイマーは二つ用意します。一定の間隔でコンピュータがカードを出すためのタイマーとカードがテーブルの上を移動する処理をおこなうためのタイマーです。

SetInterval関数はタイマーの間隔を再設定します。ゲームセットになっていない状態でタイマーに反応する状態であればコンピュータがカードを出す処理をおこないます。

カードを移動させる処理をするためにタイマーを設定します。このタイマーは止めずにそのまま使います。

ゲーム開始の処理

ゲームスタートボタンがクリックされたらカードをシャッフルして配りゲームを開始します。

カードをシャッフルする処理

カードをシャッフルする処理をおこないます。

ゲーム中の処理

カードを表示させる処理を示します。

台札のオブジェクトを取得する

GetLedgerCardsTop1関数、GetLedgerCardsSecondTop1関数、GetLedgerCardsTop2関数、GetLedgerCardsSecondTop2関数、これらの関数は各プレイヤーの台札の一番上または二番目のCardオブジェクトを返します。

ゲームの決着がついているか?

CheckGameSet関数はゲームの決着がついているかを調べます。CheckWin関数は引数がtrueならプレイヤー、falseであればコンピュータが勝利したかを調べます。

残り枚数の表示

SetCardsCountText関数は各プレイヤーの残りのカードの枚数を調べて表示させるための関数です。

双方がカードが出せない場合の処理

ShowSpeedTextIfNeed関数はお互いにカードを出せない状態のときに「スピード!」のかけ声とともにカードを出す状態の文字列を表示するためのものですが、それ以外にもゲームのなかでプレイヤーがやるべきことを指示する文字列を表示させるための処理もおこなっています。

場にあるカードは出せるか?

CanPlayerPutCard関数は場にあるカードを出せるかどうかを調べます。

山札のカードを場に移動できるか?

CanPutIntoPlay関数は山札のカードを場に移動できるかどうかを調べます。

カードはどこに出せるか?

GetLedgerAblePutCard関数は引数として渡されたカードを出せる台札を返します。ない場合はnullを返します。

CallSpeed関数は両者が同時に「スピード!」のかけ声とともにカードを出す処理をおこないます。引数はそのさいにプレイヤーが出すカードです。

カードをクリックしたときの処理

カードをクリックしたときの処理をおこないます。

PutCardOnClick関数は場のカードを出せるか調べて出せるなら出す処理をおこないます。

コンピュータがカードを出す処理

コンピュータがカードを出す処理を示します。

山札から場にカードを移動できるなら移動させる処理を示します。