簡単なBounceゲーム出来た。

 

Pythonのお勉強がてら始めた「たのしいプログラミング」も第2章突入。
ここからは簡単なゲーム制作なのだが。

とりあえず本を読みながらBounceゲーム(ボールを跳ね返すやつ)が出来た。
しかし本を見ながら何となくで作ってしまったので仕組みの理解が曖昧すぎる…。

というわけで簡単に振り返る。本読みながら復習。アウトプット大事。
※以下の見出しの数字は本のセクションです。

 

13.2 ゲームはキャンバスの上に

まずはtkinterモジュールの読み込みとキャンパスサイズの設定など。

 

13.3 ボールはクラス

キャンバスにボールを描くためのプログラムを追加。

 

  • ballというクラスを作る。
  • __init__関数を作る。定義のようなもん。()内でcanvas, colorの引数を受け取るよう指定。
  • オブジェクトの変数canvasに引数canvasの値をセット。
  • create_oval関数で円を描く。
  • 円を動かす。
  • ballクラスにdraw関数を作る(まだpassだけ)
  • ファイルの一番下に赤いボールのオブジェクトを作る
  • ボールのメインループ追加

_init__関数

 

13.4 ボールよ動け!

作ったballクラスを動かすための処理。

  • draw関数の部分にmove関数を呼び出す。
  • メインループでballオブジェクトのdraw関数の呼び出しを追加。
  • ballクラスの__init__関数にオブジェクトの変数を追加。
  • キャンバスの上にぶつかったら折り返すようdraw関数で高さを設定。
  • ゲームスタート時にボールが飛ぶ方向をランダムに設定(__init__関数)
  • キャンバスの左右にぶつかったら折り返すようdraw関数で設定。

14.1 ラケットを作る

ballが出来たので次はそれを跳ね返すラケットを作る。

  • paddleという名前のクラスを作る。
  • __init__関数を作る。draw関数はひとまずpass
  • ラケットを動かすためにturn_leftとturn_right関数をpaddleの__init__に追加。
  • イベントバインディングを追加。
  • draw関数にも動作を追加。
  • ballの__init__にpuddleの引数を追加。ballクラスのオブジェクトも修正。
  • ボールがラケットに当たったかを判定するhit_paddle関数の呼び出しを追加。
  • hit_paddle関数の追加。

イベントバインディング

 

14.2 ゲームのルールは?

ゲームにするために負ける条件を追加。

  • 底辺に落ちた時終了するために、ballクラスの__init__関数にhit_bottomを追加。
  • メインループに底辺へ当たった事を検知するためのif文を追加。
  • ballクラスのdraw関数にも底辺に当たったかボールの座標を調べるためのif文を追加。

これでひとまず完成。
ゲームとしてはクソゲーだけど、一つ作り上げたという達成感がある。

 

ずいぶん雑な備忘録だけどこんな感じ。
この本もいよいよ終盤で、最後にミスター・スティックマン脱出ゲームを作る。

しかしこの本をマスターしたところで、
Pythonのプログラミングが自由自在に出来るようになるかというとNoだなと思う。
導入としてはとても面白いけどね。もともと子供向けだし。

この本終わり次第とりあえず実践に入ろうかと思ったけど、
ちょっとまだ難易度が高い気がする。

というわけでいい本ないかなと本屋で探してみたら「Pythonの教科書」という本を見つけた。
ただの基礎本を再びやっても意味ないかなと思いきや、
実践的な演習が多くていい感じだったので次はこの本やってみようかな。