我有一個由瓷磚製成的背景遊戲,有些是靜態的(草,泥),但是我想讓水流動。我創建了一個叫做水的表面,然後我有一個循環遍歷一系列的10個pngs,用於流動的水流。然後,我想和遊戲的其他部分一樣更新這個表面10倍,然後用其他物體以30fps的速度將其粘貼到主表面上。在Pygame中更新一個表面
然而所有我能實現沒有運動或精神失常速度流動的水(通過在水中更新循環更新整個顯示器。)
是沒有一種方法可以只更新該表面?
這裏是我的代碼:
#mud, grass and surface are defined earlier.
water = pygame.Surface((100,100))
#create mud tiles
for x in range(0,800,100):
for y in range(0, 500, 100):
screen.blit(mud,(x,y))
#create grass tiles
for x in range(400, 800, 100):
for y in range(0, 300, 100):
screen.blit(grass,(x,y))
#create filenames
for x in range(1,11):
if x < 10:
filename = "images\water\water1000" + str(x) + ".png "
else:
filename = "images\water\water100" + str(x) + ".png "
waterimg = pygame.image.load(filename)
#add to a surface, then tile the surface onto the game.
water.blit(waterimg,(0,0))
for x in range(100, 200, 100):
for y in range(0, 500, 100):
screen.blit(water, (x,y))
pygame.display.flip() #makes it update crazily. removing this line makes it not update at all.
allsprites.draw(screen)
pygame.display.flip()
看起來不錯,乾杯 接受,因爲即使我沒有得到它的工作,我現在明白了這個概念好多了。 一個問題:我如何獲得tick變量?我沒有繪製方法,只是一個無限循環: while 1: clock.tick(30) #句柄輸入並繪製所有內容 – espekia 2010-12-11 15:19:05
要跟蹤刻度,請在進入循環之前將tick = 0 ,並在你調用flip()之後加上tick + = 1。 – Krendil 2010-12-11 15:23:08
嘿,那完全工作= D 謝謝一大堆! – espekia 2010-12-11 15:29:26