三角関数を使って放物線を描くように物体を動かそう
今回は三角関数を使って、放物線を描くように物体を動かしてみましょう。
物体を左下から右上に向かって動かしますので、三角関数のサイン(sin)を使います。
放物線を描くように物体を動かすプログラム
放物線を描きながら物体を動かすプログラムは、以下のようになります。
物体は角度が0度と180度の時に画面の一番下にきて、90度の時に画面の一番上にきます。
物体が画面の右端を超えたら、高さはその位置のまま左端に戻り、Escキーを押下するまで繰り返します。
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 |
### インポート import sys import math import pygame from pygame.locals import * ### 定数 WIDTH = 640 # 幅 HEIGHT = 400 # 高さ SIZE = 20 # 辺長 BLANK = 40 # 余白 ### モジュール初期化 pygame.init() ### 時間オブジェクト生成 clock = pygame.time.Clock() ### 画面設定 surface = pygame.display.set_mode((WIDTH, HEIGHT)) ### 四角形作成 rect = pygame.Rect(0, HEIGHT-SIZE, SIZE, SIZE) ### サイン角度 angle = 0 while True: ### 幅サイズ分ループ for x in range(0, WIDTH): ### 座標設定 rect.left = x rect.top = int(HEIGHT-math.sin(math.radians(angle))*(HEIGHT-BLANK))-SIZE ### 画面初期化 surface.fill((0,0,0)) ### 四角形描画 surface.fill((255,255,255), rect) pygame.display.update() ### 角度180度確認 if angle >= 180-1: angle = 0 else: angle += 1 ### フレームレート設定 clock.tick(60) ### イベント処理 for event in pygame.event.get(): if event.type == KEYDOWN and event.key == K_ESCAPE: ### 終了処理 pygame.quit() sys.exit() |
プログラムを実行すると、物体が左下から右上に向かって放物線を描きます。