はじめに
トランプゲームの戦争で、
手札からカードを引く、戻すを行った方法を学習用にまとめた。
結論
array_shift, array_pushを使って実装した。
array_push関数で手札配列の末尾にカードを追加し、array_shift関数で先頭からカードを出すイメージです。
- array_shift
- 配列の先頭から要素を一つ取り出す
- array_push
- 一つ以上の要素を配列の最後に追加する
array_pushとarray_shiftの組み合わせで、キュー(先入れ先出し)のデータ構造を表現できる
※array_pushはブラケット構文でも可
詳細
戦争は、プレイヤーが手札からカードを出し合って、カードのランクを比べて強いカードを出したほうが勝ちとなります。勝ったプレイヤーはカードをもらい、引き分けの場合はカードを手札に戻します。
以下、作成したプログラムのクラス図の抜粋です。
手札からカードを引くは、array_shift
public function drawCard()
{
return array_shift($this->cards);
}
手札にカードを戻すは、array_push(ブラケット構文でも可)
public function addCard(Card $card)
{
array_push($this->cards, $card);
}