最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

教你如何在Pygame 中移動你的游戲角色

 更新時間:2021年09月08日 09:33:54   作者:海擁✘  
Pygame是一組跨平臺的 Python 模塊,專為編寫視頻游戲而設(shè)計,您可以使用 pygame 創(chuàng)建不同類型的游戲,包括街機游戲、平臺游戲等等,今天通過本文給大家介紹Pygame移動游戲角色的實現(xiàn)過程,一起看看吧

Pygame是一組跨平臺的 Python 模塊,專為編寫視頻游戲而設(shè)計。它包括旨在與 Python 編程語言一起使用的計算機圖形和聲音庫。您可以使用 pygame 創(chuàng)建不同類型的游戲,包括街機游戲、平臺游戲等等。

使用的圖像:


你可以控制玩家的移動。為此,首先使用 pygame 的 display.set_mode() 方法創(chuàng)建一個顯示對象,并使用 pygame 的 image.load() 方法添加玩家的精靈。set_mode() 函數(shù)用于初始化顯示表面或窗口。size 參數(shù)是一對代表寬度和高度的數(shù)字。flags 參數(shù)是附加選項的集合。depth 參數(shù)表示用于顏色的位數(shù)。

語法:

set_mode(size=(0, 0), flags=0, depth=0, display=0, vsync=0)

創(chuàng)建一個變量來存儲玩家的速度。設(shè)置玩家的初始坐標(biāo)。現(xiàn)在,根據(jù)鍵盤事件(即鍵狀態(tài)改變時發(fā)生的事件)更改播放器的 x 和 y 坐標(biāo)。

blit(surface,surfacerect) 函數(shù)用于在屏幕上繪制圖像。

語法:

blit(surface, surfacerect)

為了從隊列中收集所有事件,使用事件模塊的 get() 函數(shù),然后我們使用 for 循環(huán)迭代所有事件。

語法:

get(eventtype=None)

使用顯示模塊的 update() 函數(shù)更新屏幕。

語法:

update(rectangle=None)

下面是實現(xiàn)

示例:玩家移動程序

# 導(dǎo)入 pygame 模塊
import pygame
from pygame.locals import *
 
# 啟動 pygame 并授予使用 pygame 功能的權(quán)限
pygame.init()
 
# 創(chuàng)建特定尺寸的顯示面對象
window = pygame.display.set_mode((600, 600))
 
# 在窗口中添加標(biāo)題
pygame.display.set_caption('Player Movement')
 
# 添加玩家精靈
image = pygame.image.load(r'haiyong.png')
 
 
# 將玩家的初始坐標(biāo)存儲在兩個變量中,即 x 和 y
x = 100
y = 100
 
# 創(chuàng)建一個變量來存儲玩家移動的速度
velocity = 12
 
# 創(chuàng)建無限循環(huán)
run = True
while run:
 
    # 用白色填充背景
    window.fill((255, 255, 255))
 
    # 在 x 和 y 坐標(biāo)處顯示玩家精靈
    window.blit(image, (x, y))
 
    # 迭代 pygame.event.get() 方法返回的 Event 對象列表。
    for event in pygame.event.get():
 
        # 如果事件類型為 QUIT,則關(guān)閉窗口和程序
        if event.type == pygame.QUIT:
            run = False
            pygame.quit()
            quit()
 
        # 如果事件類型為 KEYDOWN,即按下鍵盤按鈕,則檢查事件鍵
        if event.type == pygame.KEYDOWN:
 
            # 如果按下的按鈕是左箭頭鍵,則減小 x 坐標(biāo)
            if event.key == pygame.K_LEFT:
                x -= velocity
 
            # 如果按下的按鈕是右箭頭鍵,則增加 x 坐標(biāo)
            if event.key == pygame.K_RIGHT:
                x += velocity
 
            # 如果按下按鈕是向上箭頭鍵,則減小 y 坐標(biāo)
            if event.key == pygame.K_UP:
                y -= velocity
 
            # 如果按下按鈕是向下箭頭鍵,則增加 y 坐標(biāo)
            if event.key == pygame.K_DOWN:
                y += velocity
 
        # 將表面對象繪制到屏幕上
        pygame.display.update()

輸出:

玩家也可以連續(xù)移動。為此,除了要進行一些更改外,其他一切都保持不變。在這里,我們創(chuàng)建了一個新的時鐘對象來使用 clock() 控制游戲的幀速率。

語法

Clock()

創(chuàng)建一個新變量(名為 key_pressed_is)來存儲用戶按下的鍵。為此,我們使用 key 模塊的 get_pressed() 函數(shù)。

語法

get_pressed()

它返回一個布爾值序列,表示鍵盤上每個鍵的狀態(tài)。

示例:連續(xù)移動玩家

# 導(dǎo)入 pygame 模塊
import pygame
from pygame.locals import *
 
# 啟動 pygame 并授予使用 pygame 功能的權(quán)限
pygame.init()
 
# 創(chuàng)建特定尺寸的顯示面對象
window = pygame.display.set_mode((600, 600))
 
# 在窗口中添加標(biāo)題
pygame.display.set_caption('玩家移動')
 
# 初始化時鐘 時鐘用于跟蹤和控制游戲的幀速率
clock = pygame.time.Clock()
 
# 添加玩家精靈
image = pygame.image.load(r'haiyong.png')
 
 
# 將玩家的初始坐標(biāo)存儲在兩個變量中,即 x 和 y
x = 100
y = 100
 
# 創(chuàng)建一個變量來存儲玩家移動的速度
velocity = 12
 
# 創(chuàng)建無限循環(huán)
run = True
while run:
 
	# 將幀速率設(shè)置為 60 fps
	clock.tick(60)
 
	# 用白色填充背景
	window.fill((255, 255, 255))
 
	# 在 x 和 y 坐標(biāo)處顯示玩家精靈
	window.blit(image, (x, y))
 
	# 迭代 pygame.event.get() 方法返回的 Event 對象列表。
	for event in pygame.event.get():
 
		# 如果事件類型為 QUIT,則關(guān)閉窗口和程序
		if event.type == pygame.QUIT:
			run = False
			pygame.quit()
			quit()
 
	# 使用 key.get_pressed() 方法將按下的鍵存儲在新變量中
	key_pressed_is = pygame.key.get_pressed()
 
	# 改變玩家坐標(biāo)
	if key_pressed_is[K_LEFT]:
		x -= 8
	if key_pressed_is[K_RIGHT]:
		x += 8
	if key_pressed_is[K_UP]:
		y -= 8
	if key_pressed_is[K_DOWN]:
		y += 8
 
	# 將表面對象繪制到屏幕上
	pygame.display.update()

輸出:

翻轉(zhuǎn)玩家精靈

您可以使用 pygame 的轉(zhuǎn)換模塊的 flip() 函數(shù)輕松翻轉(zhuǎn)任何精靈。例如,如果我們想在玩家改變移動方向時翻轉(zhuǎn)精靈,那么我們可以使用下面的代碼

window.blit(pygame.transform.flip(image, False, True), (x,y))

flip() 函數(shù)用于水平、垂直翻轉(zhuǎn)表面對象。 或兩者。 這個函數(shù)有三個參數(shù):

  • 要翻轉(zhuǎn)的圖像
  • 進行水平翻轉(zhuǎn)的布爾值
  • 進行垂直翻轉(zhuǎn)的布爾值

下面是實現(xiàn)。

示例:翻轉(zhuǎn)播放器圖像

輸出:

我們還可以通過創(chuàng)建精靈列表輕松更新玩家精靈。

image = [pygame.image.load(r'haiyong.png'),
pygame.image.load(r'haiyong2.png')]

示例:更新精靈

# 導(dǎo)入 pygame 模塊
import pygame
from pygame.locals import *
 
# 啟動 pygame 并授予使用 pygame 功能的權(quán)限
pygame.init()
 
# 創(chuàng)建特定尺寸的顯示面對象
window = pygame.display.set_mode((600, 600))
 
# 在窗口中添加標(biāo)題
pygame.display.set_caption('玩家切換')
 
# 初始化時鐘 時鐘用于跟蹤和控制游戲的幀速率
clock = pygame.time.Clock()
 
# 創(chuàng)建一個變量來檢查運動方向
# 每當(dāng)玩家改變方向時,我們就會改變它的值
direction = True
 
 
# 在列表中添加玩家精靈
image = [pygame.image.load(r'haiyong.png'),
		pygame.image.load(r'haiyong2.png')]
 
 
# 將玩家的初始坐標(biāo)存儲在兩個變量中,即 x 和 y
x = 100
y = 100
 
# 創(chuàng)建一個變量來存儲玩家移動的速度
velocity = 12
 
# 創(chuàng)建無限循環(huán)
run = True
while run:
 
	# 將幀速率設(shè)置為 60 fps
	clock.tick(60)
 
	# 用淺灰藍色填充背景
	window.fill((176, 224, 230))
 
	# 在 x 和 y 坐標(biāo)處顯示玩家精靈
    # 如果玩家改變方向,則改變玩家精靈
	if direction == True:
		window.blit(image[0], (x, y))
	if direction == False:
		window.blit(image[1], (x, y))
 
	# 迭代 pygame.event.get() 方法返回的 Event 對象列表。
	for event in pygame.event.get():
 
		# 如果事件類型為 QUIT,則關(guān)閉窗口和程序
		if event.type == pygame.QUIT:
			run = False
			pygame.quit()
			quit()
 
		# 改變方向變量的值
		if event.type == pygame.KEYDOWN:
			if event.key == pygame.K_RIGHT:
				direction = True
			elif event.key == pygame.K_LEFT:
				direction = False
 
	# 使用 key.get_pressed() 方法將按下的鍵存儲在新變量中
	key_pressed_is = pygame.key.get_pressed()
 
	# 改變玩家坐標(biāo)
	if key_pressed_is[K_LEFT]:
		x -= 5
	if key_pressed_is[K_RIGHT]:
		x += 5
	if key_pressed_is[K_UP]:
		y -= 5
	if key_pressed_is[K_DOWN]:
		y += 5
 
	# 將表面對象繪制到屏幕上
	pygame.display.update()

換張圖試試

到此這篇關(guān)于教你如何在Pygame 中移動你的游戲角色的文章就介紹到這了,更多相關(guān)Pygame移動游戲角色內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python二維列表的創(chuàng)建、轉(zhuǎn)換以及訪問詳解

    Python二維列表的創(chuàng)建、轉(zhuǎn)換以及訪問詳解

    列表中的元素還可以是另一個列表,這種列表稱為多為列表,只有一層嵌套的多維列表稱為二維列表,下面這篇文章主要給大家介紹了關(guān)于Python二維列表的創(chuàng)建、轉(zhuǎn)換及訪問的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • python3?requests中文亂碼之壓縮格式問題解析

    python3?requests中文亂碼之壓縮格式問題解析

    這篇文章主要介紹了python3?requests中文亂碼問題之壓縮格式問題,我們在爬蟲時,經(jīng)常會遇見中文亂碼問題,之前都是編碼格式的問題,很少遇見由于壓縮格式造成的編碼混亂問題,特記錄下,需要的朋友可以參考下
    2022-08-08
  • wxPython實現(xiàn)文本框基礎(chǔ)組件

    wxPython實現(xiàn)文本框基礎(chǔ)組件

    這篇文章主要介紹了wxPython實現(xiàn)文本框基礎(chǔ)組件,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Python3.8中如何使用print打印變量

    Python3.8中如何使用print打印變量

    這篇文章主要介紹了Python3.8中如何使用print打印變量問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • python新手練習(xí)實例之萬年歷

    python新手練習(xí)實例之萬年歷

    最近進行python基礎(chǔ)培訓(xùn),課下作業(yè)制作萬年歷,之前沒做過,感覺里面還是有很多需要學(xué)的,下面這篇文章主要給大家介紹了關(guān)于python新手練習(xí)實例之萬年歷的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Python與Java間Socket通信實例代碼

    Python與Java間Socket通信實例代碼

    這篇文章主要介紹了Python與Java間Socket通信實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 解決PyCharm不運行腳本,而是運行單元測試的問題

    解決PyCharm不運行腳本,而是運行單元測試的問題

    今天小編就為大家分享一篇解決PyCharm不運行腳本,而是運行單元測試的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python?Excel數(shù)據(jù)處理之xlrd/xlwt/xlutils模塊詳解

    Python?Excel數(shù)據(jù)處理之xlrd/xlwt/xlutils模塊詳解

    在復(fù)雜的Excel業(yè)務(wù)數(shù)據(jù)處理中,三兄弟扮演的角色缺一不可。如何能夠使用xlrd/xlwt/xlutils三個模塊來實現(xiàn)數(shù)據(jù)處理就是今天的內(nèi)容,希望對大家有所幫助
    2023-03-03
  • 在?Python?中創(chuàng)建DataFrame的方法

    在?Python?中創(chuàng)建DataFrame的方法

    這篇文章主要介紹了教你如何在?Python?中創(chuàng)建DataFrame,我們將學(xué)習(xí)以多種方式創(chuàng)建DataFrame,DataFrame是數(shù)據(jù)的二維集合,是一種數(shù)據(jù)結(jié)構(gòu),其中數(shù)據(jù)以表格形式存儲,更多相關(guān)資料需要的小伙伴可以參考一下
    2022-03-03
  • python方法如何實現(xiàn)字符串反轉(zhuǎn)

    python方法如何實現(xiàn)字符串反轉(zhuǎn)

    這篇文章主要介紹了python方法如何實現(xiàn)字符串反轉(zhuǎn)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評論

青海省| 兰坪| 临汾市| 伊宁市| 青浦区| 虞城县| 文水县| 定结县| 紫云| 饶河县| 五河县| 中方县| 襄城县| 东宁县| 齐齐哈尔市| 介休市| 松溪县| 阜宁县| 庄河市| 汶川县| 远安县| 惠安县| 通州市| 阿拉善右旗| 乌鲁木齐县| 镇平县| 屏南县| 环江| 同心县| 璧山县| 潼南县| 山东省| 诸暨市| 吐鲁番市| 孟村| 黎平县| 漳浦县| 德格县| 英山县| 资兴市| 昌平区|