Python Pygame動畫——移動

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()


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章