0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHPのオブジェクト指向プログラミング: トランプゲームを作成する過程で学んだこと

Last updated at Posted at 2024-09-16

はじめに

この記事では、PHPのオブジェクト指向の概念を理解するために、トランプゲームのクラスとインスタンス、メソッドとプロパティをどのように実装し、それらの技術要素がどのように連携してゲームを構築するのかについて共有します。

オブジェクト指向の基礎

クラスとインスタンスの例: デッキとトランプカード

class Card {
    public $suit;
    public $value;
    function __construct($suit, $value) {
        $this->suit = $suit;
        $this->value = $value;
    }
}

class Deck {
    public $cards = [];
    function __construct() {
        $suits = ['Hearts', 'Diamonds', 'Clubs', 'Spades'];
        $values = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'];
        foreach ($suits as $suit) {
            foreach ($values as $value) {
                $this->cards[] = new Card($suit, $value);
            }
        }
    }
}

メソッドとプロパティの例: プレーヤーとカードを引く動作

class Player {
    public $name;
    public $hand = [];
    function __construct($name) {
        $this->name = $name;
    }
    public function drawCard($deck) {
        $this->hand[] = array_shift($deck->cards);
    }
}

実践: 技術要素の関連性

インスタンス化されたオブジェクトの連携

  • Deck クラスのインスタンス化により、52枚のカードを持つデッキが作成されます。
  • プレーヤーが drawCard メソッドを使用してデッキからカードを引く動作は、クラスとインスタンス、メソッドとプロパティの連携を示す良い例です。

小さなプロジェクトでの統合

  • プレーヤーがカードを引くプロセスは、オブジェクト指向プログラミングの基本的な概念(カプセル化、継承、ポリモーフィズム)を実際のプロジェクトでどのように適用できるかを示します。

まとめ

トランプゲームの実装を通じて、PHPのオブジェクト指向プログラミングの基本から応用までの流れを探求しました。技術の各要素の理解だけでなく、それらがどのように相互作用して機能するかを理解することが、実用的なアプリケーションを構築する上のポイントだと思います。


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?