您現(xiàn)在的位置是:首頁 » python編程資訊
資訊內(nèi)容
用python和pygame游戲編程入門-彈球
極客小將2020-10-28-
下面是一個彈球的動畫程序,角色小球碰到邊緣要發(fā)生反彈,這是這個程序的重點。
下面是一個彈球的動畫程序,角色小球碰到邊緣要發(fā)生反彈,這是這個程序的重點。
與Scratch不同的是,Pygame中的坐標(biāo)原點在窗口的左上角,X軸水平向右,逐漸增加;y軸垂直向下,逐漸增加,如圖所示,也就是說如果將角色y坐標(biāo)增加,就會向下移動,這是跟Scratch相反的。
speed = [1, 1],這個變量表示球的速度,你可能會有疑問,為什么速度不是一個數(shù)?[1,1]這兩個值分別表示在x軸和y軸上的增量。比如球初始位置為(0,0),按照這個速度移動一次后位置就變?yōu)榱?1,1),就是x坐標(biāo)加1,y坐標(biāo)加1。因此這不僅僅是一個速度,它還確定了球移動的方向,也就是我們前面講到的向量。
圖片素材->>ball.png下載(保存后修改名稱為ball.png)
后面我們還會在這個程序的基礎(chǔ)上增加更多的效果,繼續(xù)鞏固我們之前學(xué)到的知識。
import pygame, sys # 引入pygame sys pygame.init() # 初始化 對pygame內(nèi)部各功能模塊進(jìn)行初始化創(chuàng)建及變量設(shè)置,默認(rèn)調(diào)用 size = width, height = 600, 400 speed = [1,1] BLACK = 0, 0, 0 screen = pygame.display.set_mode(size) pygame.display.set_caption("彈球") # 設(shè)置窗口標(biāo)題 ball = pygame.image.load("img/ball.png") # pygame.image.load(filename) 將filename路徑下的圖像載入游戲,支持13種常用圖片格式 ballrect = ball.get_rect() # surface對象 ball.get_rect() pygame使用內(nèi)部定義 fps = 300 # Frame per second 每秒幀率參數(shù) fclock = pygame.time.Clock() # pygame.time.Clock() 創(chuàng)建一個Clock對象,用于操作時間surface對象表示所有載入的圖像,其中.get_rect()方法返回一個覆蓋圖像的矩形(圖像的外接矩形)rect對象rect中top, bottom, left, right表示上下左右,width, height表示寬度,高度 while True: # 執(zhí)行死循環(huán) for event in pygame.event.get(): # 從事件隊列中取出事件,并從隊列中刪除該事件 if event.type == pygame.QUIT: # pygame.QUIT是Pygame中定義的退出時間常量 sys.exit() # sys.exit()用于退出結(jié)束游戲并退出 elif event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: sys.exit() # sys.exit()用于退出結(jié)束游戲并退出 if pygame.display.get_active() : #當(dāng)顯示器上處于活動狀態(tài)時返回True,進(jìn)一步半段后可以暫停游戲,改變響應(yīng)模式等 ballrect = ballrect.move(speed[0],speed[1]) # ballrect.move(x,y) 矩形移動一個偏移量(x,y)x,y為整數(shù) if ballrect.left < 0 or ballrect.right > width: speed[0] = -speed[0] if ballrect.top < 0 or ballrect.bottom > height: speed[1] = -speed[1] # 碰壁后速度取反 screen.fill(BLACK) screen.blit(ball, ballrect) # screnen,blit(src,dest)將圖像繪制在另一個圖像上,即將src繪制到dest位置上,通過rect對象引導(dǎo)對壁球的繪制 pygame.display.update() # 對顯示窗口進(jìn)行刷新,默認(rèn)窗口全部重繪 fclock.tick(fps) # clock.tick(framerate) 控制幀速度,即窗口刷新速度。
本站部分內(nèi)容轉(zhuǎn)載自網(wǎng)絡(luò),如有侵權(quán)請聯(lián)系管理員及時刪除。
