激情六月丁香婷婷|亚洲色图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ā)布時間:2023-11-27 18:13:48 瀏覽量:108次

?Python之pygame,從入門到精通

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

Pygame的歷史

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

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

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

安裝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寫一個植物大戰(zhàn)僵尸,但是寫一個魔獸世界則相當(dāng)困難……請不要做出鄙夷的目光,底層的東西永遠(yuǎn)是相通的,而且對于新手而言,從簡單的2D入手才是正途。

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

使用Pygame

有些模塊可能在某些平臺上不存在,你可以用None來測試一下。

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

Hello Pygame

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

代碼如下:

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)建一個窗口
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:
            # 接收到退出時間后退出程序
            exit()

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

    # 獲得鼠標(biāo)位置
    x, y = pygame.mouse.get_pos()
    # 計算光標(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簡單修改一下就行。(sea.jpg是背景,fish.png是黃色小魚,fish.png是我用ps摳出來的,背景是透明的)

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

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

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

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

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

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

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

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

熱門課程推薦

熱門資訊

請綁定手機號

x

同學(xué)您好!

您已成功報名0元試學(xué)活動,老師會在第一時間與您取得聯(lián)系,請保持電話暢通!
確定