前回に引き続き、classを活用してBingoゲームを作る方法についてです。
前回公開したゲームを構成するプログラムのうち、player.pyファイルについて解説していきます。
ゲームを始めるに当たって必要になるのは・・・まずは、プレイヤーですよね!
じゃんけんなら相手がコンピューターなら、プレイヤーは一人でもOKですが、Bingoは一人でやってもつまらないですよね。(笑)
可哀想なので、複数人でプレイできるようにしてあげましょう!
そこで、まずはプレイヤーclassを作りましょう。
プレイヤーオブジェクトを量産できるようにすれば、何人でもプレイが可能になりますね。
さっそくコードを書いていきましょう。
今回は、Playerオブジェクトに持たせるインスタンス変数は名前のみとします。もちろん、戦績として勝敗数を持たせたりすることも可能なので、自由にアレンジもできます。(引数を増やすだけだから、楽チンです!)
Playerクラスをまずは定義し、def __init__の引数に「name」を書くことでPlayerクラスに名前を渡せるようになります。
ちなみに、selfはオブジェクト自身が渡されるだけなので、お決まりのようなものだと思ってもらえれば一旦大丈夫です。
self.name = name とありますが、例えばノンストップ飯田さんをプレイヤーとして作りたい場合に、player1という変数にPlayerオブジェクトを格納するとします。
player1 = Player('ノンストップ飯田')と書けば、'ノンストップ飯田'というインスタンス変数(name)を持ったオブジェクトが作られます。
player_generate関数は何のために存在しているかというと、ゲームの途中で例えばプレイヤー名を表示したい場面があるとします。
(ノンストップ飯田さんがBingoになりました!!等・・・)
この場合に、単純にprint(player1)とするとどうなりますでしょうか?
コマンドプロンプトでやってみましょう。
出力すると、<__main__.Player object at 0x037099D0>と出力されました。
あくまでも、player1にはオブジェクトが格納されているだけなんですね。
ただし、nameという属性にノンストップ飯田を持ってますので、以下のようにコードを書くと名前が出力されます。
Bingoゲームの中では、名前を戻り値として返して欲しいので、generate_playerというname属性を返す関数を書いておくとplayer1.generate_player()とオブジェクトを格納した変数に対し、関数を実行するとname属性が返ってきます。
他のファイル(bingo_game.py)で、player.pyファイルをimportしてPlayerオブジェクトを作成し、name属性を取得する際以下のような書き方をすることで、name属性を取得することができるのです。
・・・と書きましたが、実際にはbingo_game.pyの中で、プレイヤーに入力された値を、そのままplayer_nameとして使っているのでこの関数使ってないですねwwwww
これでプレイヤーはOKですね。
回答できるかは一切不明ですが、疑問点があればコメント欄に書いてください。
※「ごめんね、僕も分かんないや」という情けない回答となる可能性があることご容赦ください。(笑)