Pygame動畫——移動
遊戲最小系統擺上,然後開始做動畫💪
這一章的代碼寫在01動畫原理.py
裏面
本節視頻:
【零基礎 Python體驗課】第四季 pygame遊戲開發
對象移動
由於移動需要刷新,所以要寫在循環內,正好在死循環內不停循環刷新就很棒👍
動態寫在循環裏,靜態寫在循環外,如果靜態的對象顯示一個球是這樣
如果想要動態,我們需要將圓的座標保存爲變量,在死循環內更改變量的值就可以,然後重新繪製,就可以有更改,理論上是這樣的,那麼實際效果呢?
flag = True
while flag:
# 幀動畫編輯位置
y = y + 1
pygame.draw.circle(window, (255, 0, 0), (100, y), 50)
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
沒什麼,沒有更新🙂加一句pygame.display.update()
代碼最後貼出
發現實現的結果和預想的不太一樣呀,因爲上一次繪畫的圓沒有消掉,然後緊接着出現了新圓。最簡單的方法是將上一個圓設置爲與背景色相同的顏色,這樣在快速移動的時候就會認爲是一個球在移動。具體思路是在更改y之前重新覆蓋。
pygame.draw.circle(window, (255, 255, 255), (100, y), 50)
y = y + 1
pygame.draw.circle(window, (255, 0, 0), (100, y), 50)
如果認爲移動速度太慢,就讓y加的多一些,但一般的電腦都很快,要變慢那麼就用一個循環變量,if每10次y+1。
縮放
如果要實現一個圓放大縮小的功能,其實也很簡單,只是改變圓的半徑重新畫就行了,可能我們心裏老有一種負擔就是上一次的還在,只是覆蓋了,覺得不妥,其實沒關係,單獨畫圓並不是控件,就當是一個畫板,畫上去再擦掉,就沒了。
#END#白嫖代碼的機會🛩
# coding: UTF-8
'''@Author: Thomas'''
import pygame
WIN_WIDTH = 400 # 常量寬
WIN_HEIGHT = 600 # 常量高
pygame.init()
window = pygame.display.set_mode((WIN_WIDTH, WIN_HEIGHT))
pygame.display.set_caption("動畫原理")
window.fill((255, 255, 255)) # 填充爲白色
pygame.display.flip() # 刷新動畫
# 靜態動畫編輯位置
# 1、顯示靜態球
y = 100
pygame.draw.circle(window, (255, 0, 0), (100, y), 50)
pygame.display.update()
flag = True
while flag:
# 幀動畫編輯位置
pygame.draw.circle(window, (255, 255, 255), (100, y), 50)
y = y + 1
pygame.draw.circle(window, (255, 0, 0), (100, y), 50)
pygame.display.update()
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()