pygame 筆記-2 模仿超級瑪麗的彈跳
阿新 • • 發佈:2018-12-09
在上一節的基礎上,結合高中物理中的勻加速直線運動位移公式 ,就能做出類似超級瑪麗的彈跳效果。
import pygame pygame.init() win = pygame.display.set_mode((200, 400)) # 畫布視窗的大小 pygame.display.set_caption("first game") # 視窗標題 x, y = 85, 300 # 方塊的起點 width, height = 30, 30 # 方塊的寬,高 speed = 5 # 速度 run = True isJump = False t = 10 while run: # 防止cpu佔用過高 pygame.time.delay(10) for event in pygame.event.get(): if event.type == pygame.QUIT: run = False keys = pygame.key.get_pressed() # 方向箭頭響應 if not (isJump): if keys[pygame.K_LEFT] and x > 0: x -= speed if keys[pygame.K_RIGHT] and x < win.get_size()[0] - width: x += speed if keys[pygame.K_UP] and y > 0: y -= speed if keys[pygame.K_DOWN] and y < win.get_size()[1] - height: y += speed if keys[pygame.K_SPACE]: isJump = True else: if t >= -10: a = 1 # 前半段減速上跳 if t < 0: a = -1 # 後半段加速下落 y -= 0.5 * a * (t ** 2) # 勻加速直線運動的位移公式 if y < 0: y = 0 # 防止跳出邊界 t -= 1 else: isJump = False t = 10 # 將每一幀的底色先填充成黑色 win.fill((0, 0, 0)) # 畫方塊 pygame.draw.rect(win, (255, 0, 0), (x, y, width, height)) # 更新畫布 pygame.display.update() pygame.quit()
效果:
參考:
https://www.youtube.com/watch?v=2-DNswzCkqk