Pygameを使ってボールが動くプログラムを作ろう
今回はPygameを使って、ボールが画面の端に行くと跳ね返るだけの簡単なプログラムを作ります。
Pythonスクリプト
今回のスクリプトは、以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
### インポート import sys import pygame from pygame.locals import QUIT ### 定数 WIDE = 640 # 画面横サイズ HIGHT = 400 # 画面縦サイズ M_SIZE = 10 # 円半径 M_DOT = 2 # 移動ドット W_TIME = 10 # 待ち時間 ### メイン関数 def main(): pygame.init() surface = pygame.display.set_mode((WIDE, HIGHT)) ### 変数初期化 x = M_SIZE # 横座標 y = M_SIZE # 縦座標 x_flg = 0 # 横限界フラグ y_flg = 0 # 縦限界フラグ while True: ### 横座標設定 if x < 0 + M_SIZE: x_flg = 0 elif x > WIDE - M_SIZE: x_flg = 1 if x_flg == 0: x += M_DOT else: x -= M_DOT ### 縦座標設定 if y < 0 + M_SIZE: y_flg = 0 elif y > HIGHT - M_SIZE: y_flg = 1 if y_flg == 0: y += M_DOT else: y -= M_DOT ### 描画 surface.fill((0,0,0)) pygame.draw.circle(surface, (255,255,255), (x,y), M_SIZE, 0) pygame.display.update() pygame.time.wait(W_TIME) ### イベント取得 for event in pygame.event.get(): if event.type == QUIT: pygame.quit() sys.exit() ### メイン関数呼び出し if __name__ == "__main__": main() |
スクリプト解説
16行目
pygame.display.set_mode()関数で、640 x 400 ドットの画面を作ります。
19、20行目
初期位置を設定します。
円の半径分初期位置をずらしています。
27~46行目
円を描画するX座標、Y座標の上限位置、下限位置まできたら、円の次の描画先を反転させます。
上限位置、下限位置は円の半径分ずらします。
49行目
surface.fill()メソッドで、背景色を黒にします。
50行目
pygame.draw.circle()関数で、円を描きます。
引数の意味は、以下の通りです。
1番目:円を描画する画面
2番目:円の色をRGBで表す
3番目:円の中心点の座標
4番目:円の半径
5番目:外枠の太さ。0にすると円の内部は塗りつぶされる。塗りつぶす場合は省略可能
51行目
pygame.display.update()関数で、円の位置を移動させる毎に画面を再描画します。
52行目
pygame.time.wait()関数で、処理を一時停止します。
引数は一時停止する時間で、単位はミリ秒です。
これでボールの移動速度を調整します。
55~58行目
ウインドウ右上の✕(バツ)ボタンが押されると、処理を終了して画面を閉じます。