PROGRAM PYTHON

Pythonスクリプト【Pygameで画面に置いた障害物にボールを反射させよう】

 

画面に障害物を置いてボールを反射させるプログラムを作ろう

今回はPygameのスプライトを使って、画面上の障害物にボールを反射させるプログラムを作ります。
画面中央にスプライトでブロックを作り、同じくスプライトで作ったボールを移動させて、ボールがブロックに接触したらボールを反射させます。
ボールとブロックの画像ファイルは、あらかじめPythonスクリプトと同じディレクトリに置いておきます。
Pygameの詳しい使い方は、Pygame公式サイトを参照してください。

 

Pythonスクリプト

今回のスクリプトは、以下のようになります。

 

スクリプト解説

22~25行目

ブロックの画像ファイルを読み込み、pygame.transform.scale()を使ってサイズを変更します。

28行目

Surface.get_rect()を使って、矩形オブジェクトを作成します。

31、32行目

Rectオブジェクトのcenterxとcenteryに画面中央の座標を指定します。
これによりブロックを画面の中央に配置します。

38行目

Surface.blit()を使って、ブロックを描画します。

52~55行目

ボールの画像ファイルを読み込み、pygame.transform.scale()を使ってサイズを変更します。

58行目

Surface.get_rect()を使って、矩形オブジェクトを作成します。

61、62行目

ボールの移動距離を設定します。

65行目

ボールクラスで参照するブロックを設定します。

73行目

Rect.move_ip()を使って、ボールオブジェクトを移動させます。

76行目

Rect.colliderect()を使って、ボールとブロックが重なっているかどうかを判定します。

79~83行目

ボールがブロックの左辺か右辺に当たったかどうかを判定します。
当たっていたら、ボールの移動する向きを反転させます。
その際、ボールの移動距離を倍にして、次の接触判定の時にボールがブロックに接触しないようにします。

86~90行目

ボールがブロックの上辺か下辺に当たったかどうかを判定します。
当たっていたら、ボールの移動する向きを反転させます。
その際、ボールの移動距離を倍にして、次の接触判定の時にボールがブロックに接触しないようにします。

93~107行目

ボールがブロックに接触していない時に、ボールの移動距離が定数で指定した値以外だったら、移動距離を元に戻します。

なお、Pygameのスプライトに関しては、以下の記事も参考にしてください。

 

 

-PROGRAM, PYTHON
-