現在エンジニアになるためにプログラミングの学習をしています。
それにあたって、今回は戦争ゲームをPHPで作成してみました。
作成にあたって難しかった点について共有します。
ゲームの流れ
1.カードの生成とシャッフル: ゲームの最初にトランプカード(52枚)を生成し、シャッフルします。
2.プレイヤーへのカード配布: 生成したカードをプレイヤーに配布します。
3.ゲームの開始: プレイヤー同士でカードを比較し、数字が大きいカードを所持している人が勝者となり、相手のカードを獲得する事ができます。
4.1-3までの工程をカードが無くなるまで行い、最終的に獲得枚数が多い人が勝者になります。
作成にあたって難しかった点。
トランプの強さを比較する点です。
連想配列を用いたカードの強さ表現
トランプゲームにおいて、カードには数値と強さがあります。例えば、「A(エース)」や「K(キング)」は特定のゲームルール下では他のカードよりも強いとされることがあります。そのため、カードの強さを数値で表現する必要があります。
以下は、カードの強さを連想配列で表現する例です。
$values = ['A' => 14, 'K' => 13, 'Q' => 12, 'J' => 11, '10' => 10, '9' => 9, '8' => 8, '7' => 7, '6' => 6, '5' => 5, '4' => 4, '3' => 3, '2' => 2];
この連想配列では、カードの値(A, K, Q, ...)をキーとし、そのカードの強さを表す数値を対応付けています。これにより、プログラム上でカードの強さを簡単に判定することができます。
連想配列の降順ソートと最大値の取得
ゲーム中には、プレイヤーが持つカードの中で最も強いカードを特定する必要があります。その際には、連想配列を強さの降順にソートし、最大値を取得することが便利です。
arsort($values);// 連想配列を降順にソート
$maxValue = reset($values); // 最大値を取得
$keys = array_keys($values); // ソート後のキー配列を取得
このように連想配列をソートし、最大値を取得することで、プレイヤーが持つカードの中で最も強いカードを素早く特定することができます。これにより、ゲームの進行や勝敗の判定がスムーズに行えました。
以上で今回は終わります。
これからも学んだことを投稿していこうと思います!