資訊內(nèi)容
pygame入門(mén)第一個(gè)游戲作品
原作者:xishui
學(xué)程序一開(kāi)始我們總會(huì)寫(xiě)一個(gè)Hello world程序,但那只是在屏幕上寫(xiě)了兩個(gè)字,現(xiàn)在我們來(lái)點(diǎn)更帥的!寫(xiě)好以后會(huì)是這樣的效果:
源碼:
#!/usr/bin/env python #指定圖像文件名稱(chēng) background_image_filename = './img/Spaceship.png' mouse_image_filename = './img/star.png' #導(dǎo)入pygame庫(kù) import pygame #導(dǎo)入一些常用的函數(shù)和常量 from pygame.locals import * #向sys模塊借一個(gè)exit函數(shù)用來(lái)退出程序 from sys import exit #初始化pygame,為使用硬件做準(zhǔn)備 pygame.init() #創(chuàng)建了一個(gè)窗口 screen = pygame.display.set_mode((960, 720), 0, 32) #設(shè)置窗口標(biāo)題 pygame.display.set_caption("Hello, World!") #加載并轉(zhuǎn)換圖像 background = pygame.image.load(background_image_filename).convert() mouse_cursor = pygame.image.load(mouse_image_filename).convert_alpha() #游戲主循環(huán) while True: for event in pygame.event.get(): if event.type == QUIT:#接收到退出事件后退出程序 exit() #將背景圖畫(huà)上去 screen.blit(background, (0,0)) #獲得鼠標(biāo)位置 x, y = pygame.mouse.get_pos() #計(jì)算光標(biāo)的左上角位置,坐標(biāo)需要整數(shù) x-= int(mouse_cursor.get_width() / 2) y-= int(mouse_cursor.get_height() / 2) #把光標(biāo)畫(huà)上去 screen.blit(mouse_cursor, (x, y)) #刷新一下畫(huà)面 pygame.display.update()
這個(gè)程序需要兩張圖片,一張圖作為界面的背景,另一張作為跟隨鼠標(biāo)的小圖標(biāo)。為了達(dá)到最佳效果,背景圖片的分辨率要跟創(chuàng)建窗口的大小一致:
screen = pygame.display.set_mode((960, 720), 0, 32)#960x720是背景圖的分辨率。
set_mode方法等下會(huì)詳細(xì)介紹;而且圖片需要要有Alpha通道,否則可能會(huì)報(bào)如下錯(cuò)誤,那么你需要換張圖。
set_mode會(huì)返回一個(gè) Surface 對(duì)象,代表了在桌面上出現(xiàn)的那個(gè)窗口,三個(gè)參數(shù)第一個(gè)為元祖,代表分辨率(必須);第二個(gè)是一個(gè)標(biāo)志位,具體意思見(jiàn)下表,如果不用什么特性,就指定0;第三個(gè)為色深。
convert函數(shù)是將圖像數(shù)據(jù)都轉(zhuǎn)化為Surface對(duì)象,每次加載完圖像以后就應(yīng)該做這件事件(事實(shí)上因?yàn)?它太常用了,如果你不寫(xiě)pygame也會(huì)幫你做);convert_alpha相比convert,保留了Alpha 通道信息(可以簡(jiǎn)單理解為透明的部分),這樣我們的光標(biāo)才可以是不規(guī)則的形狀。
游戲的主循環(huán)是一個(gè)無(wú)限循環(huán),直到用戶(hù)跳出。在這個(gè)主循環(huán)里做的事情就是不停地畫(huà)背景和更新光標(biāo)位置,雖然背景是不動(dòng)的,我們還是需要每次都畫(huà)它,否則鼠標(biāo)覆蓋過(guò)的位置就不能恢復(fù)正常了。
blit是個(gè)重要函數(shù),第一個(gè)參數(shù)為一個(gè)Surface對(duì)象,第二個(gè)為左上角位置。畫(huà)完以后一定記得用update更新一下,否則畫(huà)面一片漆黑。
這是一個(gè)最最大概的Pygame程序的印象,接下來(lái)我們會(huì)學(xué)習(xí)更多深層次的東西,并且把各條語(yǔ)句都真正讀懂。
本站部分內(nèi)容轉(zhuǎn)載自網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系管理員及時(shí)刪除。
