天天看點

pygame遊戲開發參考指南幫助文檔Pygame如何使用遊戲中的圖檔遊戲中的顔色遊戲中的常用形狀遊戲中的文字遊戲中的音效遊戲當中動畫切換精靈和精靈組碰撞檢測

這篇部落格裡涉及pygame中的圖檔、顔色、常用形狀、文字、音效、動畫切換、精靈與精靈組以及碰撞檢測等簡單基礎知識,為我寫的另一篇部落格《python實作飛機大戰》提供參考。

目錄

  • 幫助文檔
  • Pygame如何使用
  • 遊戲中的圖檔
  • 遊戲中的顔色
  • 遊戲中的常用形狀
  • 遊戲中的文字
  • 遊戲中的音效
  • 遊戲當中動畫切換
  • 精靈和精靈組
  • 碰撞檢測

幫助文檔

https://www.pygame.org/docs/

Pygame如何使用

  1. 引入相關的包:

    import pygame,sys

  2. pygame進行初始化,調用

    pygame.init()

    方法
  3. 得到螢幕對象Surface
  4. 事件的監聽(遊戲主循環):處理遊戲事件,更新遊戲狀态,重新繪制在螢幕上

遊戲中的圖檔

1.圖檔的加載

# 使用絕對路徑
bg = pygame.image.load('./bg.png')
           

2.在頻幕上繪制

3.像素上的坐标

左上角為坐标原點,從左往右為x軸,從上往下為y軸線

遊戲中的顔色

1.使用RGB表示

取值範圍0~255

2.RGBA表示透明色

A(alpha):0~255

遊戲中的常用形狀

1.畫線

# 畫一條紅色的,從坐标(11,11)到坐标(22,22)寬度為3像素的線段
pygame.draw.line(screen,red,(11,11),(22,22),3)
           

2.畫矩形

# 畫從坐标(10,20)寬度為100,高度為200,邊框為3像素的矩形
pygame.draw.rect(screen,red,(10,20,100,200),3)
           

3.畫圓

# 畫圓心坐标為(100,100)半徑為100,邊框為3像素的圓形
pygame.draw.circle(screen,red,(100,100),100,3)
           

遊戲中的文字

1.加載字型

# 加載系統提供的字型,文字大小,加粗,斜體
font = pygame.font.SysFont('華文行楷',32,True,True)

# 還有一種加載字型的方式,考慮到不同計算機字型不同名,可以把字型ttf檔案放進項目中進行調用
font = pygame.font.Font('./檔案名稱',32) # 這裡使用絕對路徑
           

2.加載完字型之後,需要得到Surface對象

# 渲染的文字,顔色,背景色
text = font.render('需要渲染的文字',True,RED,GREEN)
           

3.在螢幕上進行繪制

# 繪制文字,文字初始值
screen.blit(text,text.get_rect())
           

遊戲中的音效

1.加載背景音樂

# 通過load()方法加載背景音樂檔案路徑
pygame.mixer.music.load('./music.mp3')
           

2.音量大小設定

# 範圍0~1,值越小,音量越小
pygame.mixer.music.set_volume(0.5)
           

3.循環播放背景音樂

# play()方法指定-1實作無限循環播放
pygame.mixer.music.play(-1)
           

遊戲當中動畫切換

1.幀速率

用FPS或者幀/秒來進行控制

2.通過

pygame.time.Clock()

中的tick(num)進行控制幀速率

3.用算法來進行圖檔切換

# 用counter進行計數
counter = 0
# counter += 1
# 如果可以被5整除,繪制一張圖檔,不能的時候繪制另一張圖檔來實作來回切換産生動畫效果
if counter % 5 == 0:
	screen.blit(image,(20,20))
else:
	screen.blit(image2,(20,20))
           

精靈和精靈組

1.精靈

精靈可以認為是一張張小圖檔,它可以是在螢幕上移動的圖形對象,并且可以與其它圖形對象進行互動。比如在螢幕上畫的矩形,圓形,進行封裝讓他可以與其他圖形進行互動。精靈圖像可以是pygame使用函數繪制的圖像,也可以是圖檔檔案。

2.精靈組

精靈組用于管理組内精靈的繪制和更新,是一個容器。

碰撞檢測

1.兩個精靈之間的矩形檢測

# collide_rect()函數實作檢測兩個精靈是否有重疊
pygame.sprite.collide_rect(sprite_1,sprite_2)
# collide_rect_ratio()鍊式調用 第一個()加了比率,更加精确,指定碰撞的區域
pygame.sprite.collide_rect_ratio(0.5)(sprite_1,sprite_2)
           

2.兩個精靈之間的圓形檢測

3.兩個精靈之間的像素遮罩檢測

# 精靈不規則時
pygame.sprite.collide_mask(sprite_1,sprite_2)
           

4.精靈與精靈組之間的碰撞

# 精靈撞到精靈組内的任意一個都算碰撞
pygame.sprite.spritecollideany(sprite,sprite_group,bool)