激情六月丁香婷婷|亚洲色图AV二区|丝袜AV日韩AV|久草视频在线分类|伊人九九精品视频|国产精品一级电影|久草视频在线99|在线看的av网址|伊人99精品无码|午夜无码视频在线

高校合作1:010-59833514 ?咨詢電話:400-810-1418 服務(wù)與監(jiān)督電話:400-810-1418轉(zhuǎn)接2

pygame游戲開發(fā)從入門到精通(Python之pygame,從入門到精通)

發(fā)布時(shí)間:2023-11-27 18:13:48 瀏覽量:108次

?Python之pygame,從入門到精通

pygame游戲開發(fā)從入門到精通(Python之pygame,從入門到精通)

Pygame的歷史

Pygame是一個(gè)利用SDL庫的寫就的游戲庫,SDL呢,全名Simple DirectMedia Layer,是一位叫做Sam Lantinga的大牛寫的,據(jù)說他為了讓Loki(致力于向Linux上移植Windows的游戲的一家大好人公司,可惜已經(jīng)倒閉,唉好人不長(zhǎng)命啊……)更有效的工作,創(chuàng)造了這個(gè)東東。

SDL是用C寫的,不過它也可以使用C++進(jìn)行開發(fā),當(dāng)然還有很多其它的語言,Pygame就是Python中使用它的一個(gè)庫。Pygame已經(jīng)存在很多時(shí)間了,許多優(yōu)秀的程序員加入其中,把Pygame做得越來越好。

入門Python其實(shí)很容易,但是我們要去堅(jiān)持學(xué)習(xí),每一天堅(jiān)持很困難,我相信很多人學(xué)了一個(gè)星期就放棄了,為什么呢?其實(shí)沒有好的學(xué)習(xí)資料給你去學(xué)習(xí),你們是很難堅(jiān)持的,這是小編收集的Python入門學(xué)習(xí)資料關(guān)注,轉(zhuǎn)發(fā),私信小編“01”,即可免費(fèi)領(lǐng)?。∠M麑?duì)你們有幫助

安裝Pygame

可以從 www.pygame.org 下載pygame,選擇合適你的操作系統(tǒng)和合適的版本,當(dāng)然你也可以使用pip安裝。安裝成功后可用下面方法確認(rèn)有沒有安裝成功:

>>>import pygame
pygame 1.9.4
Hello from the pygame community. https://www.pygame.org/contribute.html
>>>復(fù)制代碼

另外說一下,就產(chǎn)品而言,Pygame更致力于2D游戲的開發(fā),也就是說,你可以用Pygame寫一個(gè)植物大戰(zhàn)僵尸,但是寫一個(gè)魔獸世界則相當(dāng)困難……請(qǐng)不要做出鄙夷的目光,底層的東西永遠(yuǎn)是相通的,而且對(duì)于新手而言,從簡(jiǎn)單的2D入手才是正途。

這是python開發(fā)等IT交流群:887934385 提供免費(fèi)學(xué)習(xí)資料,多交流學(xué)習(xí)

使用Pygame

有些模塊可能在某些平臺(tái)上不存在,你可以用None來測(cè)試一下。

if pygame.transform is None:
    print 'The transform module is not available!'
    exit()復(fù)制代碼

Hello Pygame

剛開始學(xué)習(xí)一門編程語言的時(shí)候總會(huì)寫一個(gè)Hello World程序,但那只是在終端上打印一句話,現(xiàn)在我們來點(diǎn)更帥的!寫好以后會(huì)是這樣子的效果:

代碼如下:

pygame游戲開發(fā)從入門到精通(Python之pygame,從入門到精通)

# _*_ coding: utf-8 _*_
import pygame

from pygame.locals import *
from sys import exit
background_image_filename = 'sea.jpg'
mouse_image_filename = 'fish.png'

# 初始化pygame,為使用硬件做準(zhǔn)備
pygame.init()

# 創(chuàng)建一個(gè)窗口
screen = pygame.display.set_mode((640, 480), 0, 32)

# 設(shè)置窗口標(biāo)題
pygame.display.set_caption("hello,world!")

# 加載圖片并轉(zhuǎn)換
background = pygame.image.load(background_image_filename)
mouse_cursor = pygame.image.load(mouse_image_filename)

# 游戲主循環(huán)
while True:
    for event in pygame.event.get():
        if event.type == QUIT:
            # 接收到退出時(shí)間后退出程序
            exit()

    # 將背景圖畫上去
    screen.blit(background, (0, 0))

    # 獲得鼠標(biāo)位置
    x, y = pygame.mouse.get_pos()
    # 計(jì)算光標(biāo)左上角位置
    x -= mouse_cursor.get_width() / 2
    y -= mouse_cursor.get_height() / 2

    # 將光標(biāo)畫上去
    screen.blit(mouse_cursor, (x, y))

    # 刷新畫面
    pygame.display.update()
復(fù)制代碼

這段代碼中用到了兩張圖片,圖片可以從網(wǎng)上找,讓后用ps簡(jiǎn)單修改一下就行。(sea.jpg是背景,fish.png是黃色小魚,fish.png是我用ps摳出來的,背景是透明的)

下面稍微解釋一下比較重要的部分:

set_mode 會(huì)返回一個(gè)Surface對(duì)象,代表了在桌面上出現(xiàn)的那個(gè)窗口,三個(gè)參數(shù)第一個(gè)為元祖,代表分 辨率(必須);第二個(gè)是一個(gè)標(biāo)志位,具體意思見下表,如果不用什么特性,就指定0;第三個(gè)為色深。

convert 函數(shù)是將圖像數(shù)據(jù)都轉(zhuǎn)化為Surface對(duì)象,每次加載完圖像以后就應(yīng)該做這件事件(事實(shí)上因?yàn)?它太常用了,如果你不寫pygame也會(huì)幫你做)

convert_alpha 相比convert,保留了Alpha 通道信息(可以簡(jiǎn)單理解為透明的部分),這樣我們的光標(biāo)才可以是不規(guī)則的形狀。

游戲的主循環(huán)是一個(gè)無限循環(huán),直到用戶跳出。在這個(gè)主循環(huán)里做的事情就是不停地畫背景和更新光標(biāo)位置,雖然背景是不動(dòng)的,我們還是需要每次都畫它, 否則鼠標(biāo)覆蓋過的位置就不能恢復(fù)正常了。

blit 是個(gè)重要函數(shù),第一個(gè)參數(shù)為一個(gè)Surface對(duì)象,第二個(gè)為左上角位置。畫完以后一定記得用 update 更新一下,否則畫面一片漆黑。

這就是一個(gè)pygame程序的大致流程,接下來我們會(huì)學(xué)習(xí)更多深層次的東西,并且把各條語句都真正的讀懂。

pygame游戲開發(fā)從入門到精通(Python之pygame,從入門到精通)

熱門課程推薦

熱門資訊

請(qǐng)綁定手機(jī)號(hào)

x

同學(xué)您好!

您已成功報(bào)名0元試學(xué)活動(dòng),老師會(huì)在第一時(shí)間與您取得聯(lián)系,請(qǐng)保持電話暢通!
確定