PHP:オブジェクト指向的じゃんけんプログラム名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2009年9月7日
「もう少し、PHPの理解を深めよう」ということで、オブジェクト機能とデータベース機能について、勉強を進めてみようと思っています。「分かりやすいPHP解説書を…」と色々と探した結果、「速効!図解プログラミングPHP+MySQL」という本を購入しました。しばらくは、これを読み進めながらプログラムを作成することにします。
まずはオブジェクト機能を利用した簡単なプログラムを作ってみました。その名も「オブジェクト指向的じゃんけんプログラム」です。平たく言えば、ただのじゃんけんです。学習用にプログラムを作成するにしても、例えば「こんにちは」と表示させるだけのようなものでは作っていても面白くないので、「プログラム学習の始まりは、いつもじゃんけんから」という私なりのポリシー(?)で作ってみた次第です。 以下、プログラムです。 ■■■オブジェクト指向的じゃんけんプログラム■■■ <?php //HTML(フォーム)表示部 print '<form action="ob_janken.php" method="get">'; print '<b>オブジェクト指向的じゃんけんプログラム</b><br><br>'; print ' <select name="HAND"> <option value="">(選択してください)</option> <option value="1">グー</option> <option value="2">チョキ</option> <option value="3">パー</option> </select> <input type="submit" value="決定"> <br><br> '; //「あなたの手」代入 $anata_hand = $_GET[HAND]; //「あなたの手」が決定している場合には一連の処理を実行 if ($anata_hand != '') { //インスタンスの作成 $newgame = new Ningen(); //「かけごえメソッド」の実行 $newgame->kakegoe(); print '<table border="1"><tr><td>'; print 'あなたの手<br>'; //インスタンスを作成せずに、「じゃんけんの手」メソッドを実行して、あなたの手のテキスト&画像表示 Hyouji::janken_te($anata_hand); print '</td><td>'; //「じゃんけんメソッド」の実行、$teにコンピュータの手を代入 $te = $newgame->janken(); print '</td></tr></table><br>'; print '<b>判定結果:<font color="red">'; //「じゃんけん判定メソッド」の実行 $newgame->hantei($anata_hand,$te); print '</font></b>'; } print '</form>'; //「Ningen(にんげん)」というクラスを宣言 class Ningen { //じゃんけんのかけごえ public $message = 'じゃんけんぽん!<br>'; //「かけごえメソッド」の定義 public function kakegoe() { //$messageを参照して$j_messageに入れる。 $j_message = $this->message; //じゃんけんのかけごえ表示 print $j_message; } //「じゃんけんメソッド」の定義 public function janken() { //じゃんけんの「手」をランダムに決定。(1=グー,2=チョキ,3=パー) $c_hand = mt_rand(1,3); print '私(コンピュータ)の手<br>'; //インスタンスを作成せずに、「じゃんけんの手」メソッドを実行して、コンピュータの手のテキスト&画像表示 Hyouji::janken_te($c_hand); //戻り値「手」 return $c_hand; } //「じゃんけん判定メソッド」の定義 ($te1はあなたの手、$te2は私の手) public function hantei($te1,$te2) { //判定用変数 $judge = $te1 - $te2; //判定用変数の中身がマイナスの場合には、+3する if ($judge < 0) { $judge = $judge + 3; } //判定結果表示 if ($judge == 0) { print 'あいこです。'; } elseif ($judge == 1) { print '私(コンピュータ)の勝ちです。'; } elseif ($judge == 2) { print 'あなたの勝ちです。'; } } } //「Hyouji(表示)」というクラスを宣言 class Hyouji { //「じゃんけんの手」メソッドの定義 public function janken_te($hand) { if ($hand == 1) { print '<img src="gu.jpg"><br>'; print 'グー<br>'; } elseif ($hand == 2) { print '<img src="choki.jpg"><br>'; print 'チョキ<br>'; } else { print '<img src="pa.jpg"><br>'; print 'パー<br>'; } } } ?> ■■■■■■■■■■■■■■■■■■■■■■■■■ オブジェクト機能については、まだ深いところまで突っ込んでいませんが、「まあ、こんなものかな」程度の感想です。やはり、チームを組んでプログラムを作成するような場合には何となく便利そうですが、私のように一人だけでもくもくとプログラムを作っているような人には、それほど必要性は高くないような気がします。ただ、プログラムの種類によっては、効率良くプログラムが組めそうな気はしています(具体的なアイデアはありませんが)。 どうでもいい情報ですが、グーの画像は鉄鉱石、ちょきは和鋏、パーは和紙です。すべてWikipediaから拝借しました。 PHP関連記事(リンク一覧): さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / PHP REVERSI(オセロもどき)の続き / PHP REVERSI(リバーシ) - オセロもどきゲームの公開 / PHP版-簡易アクセスブロック(IPアドレス、ホスト名、OS、ブラウザ名で制御) / ...(記事連続表示)
最近の記事: 尿酸値を下げる薬を飲み始めました / Googleから居住者証明書を求められて / プチリバーシ - プチコン4でシンプルなオセロ風ゲーム / プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム / 今までに行ったことのあるスキー場まとめ(2024年) / ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / 富士見パノラマリゾート(2024年2回目) / よませ温泉スキー場 / ガーラ湯沢スキー場(2024年3回目) / SPF、DKIM、DMARCの設定とネームサーバー(DNS)設定のトラブル
■ ホームへ
|