本篇內(nèi)容主要講解“怎么在Python做的游戲中添加投擲機(jī)制”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“怎么在Python做的游戲中添加投擲機(jī)制”吧!
成都創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、澗西網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5技術(shù)、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為澗西等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
四處奔跑躲避敵人是一回事,反擊敵人是另一回事。學(xué)習(xí)如何在這系列的第十二篇文章中在 Pygame 中創(chuàng)建平臺(tái)游戲。
這是仍在進(jìn)行中的關(guān)于使用 Pygame 模塊在 Python 3 中創(chuàng)建電腦游戲的第十二部分。先前的文章是:
通過構(gòu)建一個(gè)簡(jiǎn)單的擲骰子游戲去學(xué)習(xí)怎么用 Python 編程
使用 Python 和 Pygame 模塊構(gòu)建一個(gè)游戲框架
如何在你的 Python 游戲中添加一個(gè)玩家
用 Pygame 使你的游戲角色移動(dòng)起來(lái)
如何向你的 Python 游戲中添加一個(gè)敵人
在 Pygame 游戲中放置平臺(tái)
在你的 Python 游戲中模擬引力
為你的 Python 平臺(tái)類游戲添加跳躍功能
使你的 Python 游戲玩家能夠向前和向后跑
在你的 Python 平臺(tái)類游戲中放一些獎(jiǎng)勵(lì)
添加計(jì)分到你的 Python 游戲
我的上一篇文章本來(lái)是這一系列文章的最后一篇,它鼓勵(lì)你為這個(gè)游戲編寫自己的附加程序。你們很多人都這么做了!我收到了一些電子郵件,要求幫助我還沒有涵蓋的常用機(jī)制:戰(zhàn)斗。畢竟,跳起來(lái)躲避壞人是一回事,但是有時(shí)候讓他們走開是一件非常令人滿意的事。在電腦游戲中向你的敵人投擲一些物品是很常見的,不管是一個(gè)火球、一支箭、一道閃電,還是其它適合游戲的東西。
與迄今為止你在這個(gè)系列中為你的平臺(tái)游戲編程的任何東西不同,可投擲物品有一個(gè)生存時(shí)間。在你投擲一個(gè)物品后,它會(huì)如期在移動(dòng)一段距離后消失。如果它是一支箭或其它類似的東西,它可能會(huì)在通過屏幕的邊緣時(shí)而消失。如果它是一個(gè)火球或一道閃電,它可能會(huì)在一段時(shí)間后熄滅。
這意味著每次生成一個(gè)可投擲的物品時(shí),也必須生成一個(gè)獨(dú)特的衡量其生存時(shí)間的標(biāo)準(zhǔn)。為了介紹這個(gè)概念,這篇文章演示如何一次只投擲一個(gè)物品。(換句話說(shuō),每次僅存在一個(gè)投擲物品)。 一方面,這是一個(gè)游戲的限制條件,但另一方面,它卻是游戲本身的運(yùn)行機(jī)制。你的玩家不能每次同時(shí)投擲 50 個(gè)火球,因?yàn)槊看蝺H允許一個(gè)投擲物品,所以當(dāng)你的玩家釋放一個(gè)火球來(lái)嘗試擊中一名敵人就成為了一項(xiàng)挑戰(zhàn)。而在幕后,這也使你的代碼保持簡(jiǎn)單。
如果你想啟用每次投擲多個(gè)項(xiàng)目,在完成這篇教程后,通過學(xué)習(xí)這篇教程所獲取的知識(shí)來(lái)挑戰(zhàn)你自己。
如果你跟隨學(xué)習(xí)這系列的其它文章,那么你應(yīng)該熟悉在屏幕上生成一個(gè)新的對(duì)象基礎(chǔ)的 __init__
函數(shù)。這和你用來(lái)生成你的 玩家 和 敵人 的函數(shù)是一樣的。這里是生成一個(gè) throwable
對(duì)象的 __init__
函數(shù)來(lái):
class Throwable(pygame.sprite.Sprite): """ 生成一個(gè) throwable 對(duì)象 """ def __init__(self, x, y, img, throw): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load(os.path.join('images',img)) self.image.convert_alpha() self.image.set_colorkey(ALPHA) self.rect = self.image.get_rect() self.rect.x = x self.rect.y = y self.firing = throw
同你的 Player
類或 Enemy
類的 __init__
函數(shù)相比,這個(gè)函數(shù)的主要區(qū)別是,它有一個(gè) self.firing
變量。這個(gè)變量保持跟蹤一個(gè)投擲的物品是否在當(dāng)前屏幕上活動(dòng),因此當(dāng)一個(gè) throwable
對(duì)象創(chuàng)建時(shí),將變量設(shè)置為 1
的合乎情理的。
接下來(lái),就像使用 Player
和 Enemy
一樣,你需要一個(gè) update
函數(shù),以便投擲的物品在瞄準(zhǔn)敵人拋向空中時(shí),它會(huì)自己移動(dòng)。
測(cè)定一個(gè)投擲的物品存活時(shí)間的最簡(jiǎn)單方法是偵測(cè)它何時(shí)離開屏幕。你需要監(jiān)視的屏幕邊緣取決于你投擲的物品的物理特性。
如果你的玩家正在投擲的物品是沿著水平軸快速移動(dòng)的,像一只弩箭或箭或一股非??斓哪Хα浚阆氡O(jiān)視你游戲屏幕的水平軸極限。這可以通過 worldx
定義。
如果你的玩家正在投擲的物品是沿著垂直方向或同時(shí)沿著水平方向和垂直方向移動(dòng)的,那么你必須監(jiān)視你游戲屏幕的垂直軸極限。這可以通過 worldy
定義。
這個(gè)示例假設(shè)你投擲的物品向前移動(dòng)一點(diǎn)并最終落到地面上。不過,投擲的物品不會(huì)從地面上反彈起來(lái),而是繼續(xù)掉落出屏幕。你可以嘗試不同的設(shè)置來(lái)看看什么最適合你的游戲:
def update(self,worldy): ''' 投擲物理學(xué) ''' if self.rect.y < worldy: #垂直軸 self.rect.x += 15 #它向前移動(dòng)的速度有多快 self.rect.y += 5 #它掉落的速度有多快 else: self.kill() #移除投擲對(duì)象 self.firing = 0 #解除火力發(fā)射
為使你的投擲物品移動(dòng)地更快,增加 self.rect
的動(dòng)量值。
如果投擲物品不在屏幕上,那么該物品將被銷毀,以及釋放其所占用的寄存器。另外,self.firing
將被設(shè)置回 0
以允許你的玩家來(lái)進(jìn)行另一次射擊。
就像使用你的玩家和敵人一樣,你必須在你的設(shè)置部分中創(chuàng)建一個(gè)精靈組來(lái)保持投擲對(duì)象。
此外,你必須創(chuàng)建一個(gè)非活動(dòng)的投擲對(duì)象來(lái)供開始的游戲使用。如果在游戲開始時(shí)卻沒有一個(gè)投擲對(duì)象,那么玩家在第一次嘗試投擲一柄武器時(shí),投擲將失敗。
這個(gè)示例假設(shè)你的玩家使用一個(gè)火球作為開始的武器,因此,每一個(gè)投擲實(shí)例都是由 fire
變量指派的。在后面的關(guān)卡中,當(dāng)玩家獲取新的技能時(shí),你可以使用相同的 Throwable
類來(lái)引入一個(gè)新的變量以使用一張不同的圖像。
在這代碼塊中,前兩行已經(jīng)在你的代碼中,因此不要重新鍵入它們:
player_list = pygame.sprite.Group() #上下文player_list.add(player) #上下文fire = Throwable(player.rect.x,player.rect.y,'fire.png',0)firepower = pygame.sprite.Group()
注意,每一個(gè)投擲對(duì)象的起始位置都是和玩家所在的位置相同。這使得它看起來(lái)像是投擲對(duì)象來(lái)自玩家。在第一個(gè)火球生成時(shí),使用 0
來(lái)顯示 self.firing
是可用的。
沒有在主循環(huán)中出現(xiàn)的代碼不會(huì)在游戲中使用,因此你需要在你的主循環(huán)中添加一些東西,以便能在你的游戲世界中獲取投擲對(duì)象。
首先,添加玩家控制。當(dāng)前,你沒有火力觸發(fā)器。在鍵盤上的按鍵是有兩種狀態(tài)的:釋放的按鍵,按下的按鍵。為了移動(dòng),你要使用這兩種狀態(tài):按下按鍵來(lái)啟動(dòng)玩家移動(dòng),釋放按鍵來(lái)停止玩家移動(dòng)。開火僅需要一個(gè)信號(hào)。你使用哪個(gè)按鍵事件(按鍵按下或按鍵釋放)來(lái)觸發(fā)你的投擲對(duì)象取決于你的品味。
在這個(gè)代碼語(yǔ)句塊中,前兩行是用于上下文的:
if event.key == pygame.K_UP or event.key == ord('w'): player.jump(platform_list) if event.key == pygame.K_SPACE: if not fire.firing: fire = Throwable(player.rect.x,player.rect.y,'fire.png',1) firepower.add(fire)
與你在設(shè)置部分創(chuàng)建的火球不同,你使用一個(gè) 1
來(lái)設(shè)置 self.firing
為不可用。
最后,你必須更新和繪制你的投擲物品。這個(gè)順序很重要,因此把這段代碼放置到你現(xiàn)有的 enemy.move
和 player_list.draw
的代碼行之間:
enemy.move() # 上下文 if fire.firing: fire.update(worldy) firepower.draw(world) player_list.draw(screen) # 上下文 enemy_list.draw(screen) # 上下文
注意,這些更新僅在 self.firing
變量被設(shè)置為 1 時(shí)執(zhí)行。如果它被設(shè)置為 0 ,那么 fire.firing
就不為 true
,接下來(lái)就跳過更新。如果你嘗試做上述這些更新,不管怎樣,你的游戲都會(huì)崩潰,因?yàn)樵谟螒蛑袑⒉粫?huì)更新或繪制一個(gè) fire
對(duì)象。
啟動(dòng)你的游戲,嘗試挑戰(zhàn)你的武器。
如果你玩使用了新投擲技巧的游戲,你可能會(huì)注意到,你可以投擲對(duì)象,但是它卻不會(huì)對(duì)你的敵人有任何影響。
原因是你的敵人沒有被查到碰撞事故。一名敵人可能會(huì)被你的投擲物品所擊中,但是敵人卻從來(lái)不知道被擊中了。
你已經(jīng)在你的 Player
類中完成了碰撞檢測(cè),這非常類似。在你的 Enemy
類中,添加一個(gè)新的 update
函數(shù):
def update(self,firepower, enemy_list): """ 檢測(cè)火力碰撞 """ fire_hit_list = pygame.sprite.spritecollide(self,firepower,False) for fire in fire_hit_list: enemy_list.remove(self)
代碼很簡(jiǎn)單。每個(gè)敵人對(duì)象都檢查并看看它自己是否被 firepower
精靈組的成員所擊中。如果它被擊中,那么敵人就會(huì)從敵人組中移除和消失。
為集成這些功能到你的游戲之中,在主循環(huán)中調(diào)用位于新觸發(fā)語(yǔ)句塊中的函數(shù):
if fire.firing: # 上下文 fire.update(worldy) # 上下文 firepower.draw(screen) # 上下文 enemy_list.update(firepower,enemy_list) # 更新敵人
你現(xiàn)在可以嘗試一下你的游戲了,大多數(shù)的事情都如預(yù)期般的那樣工作。不過,這里仍然有一個(gè)問題,那就是投擲的方向。
當(dāng)前,你英雄的火球只會(huì)向右移動(dòng)。這是因?yàn)?nbsp;Throwable
類的 update
函數(shù)將像素添加到火球的位置,在 Pygame 中,在 X 軸上一個(gè)較大的數(shù)字意味著向屏幕的右側(cè)移動(dòng)。當(dāng)你的英雄轉(zhuǎn)向另一個(gè)方向時(shí),你可能希望它投擲的火球也拋向左側(cè)。
到目前為止,你已經(jīng)知道如何實(shí)現(xiàn)這一點(diǎn),至少在技術(shù)上是這樣的。然而,最簡(jiǎn)單的解決方案卻是使用一個(gè)變量,在一定程度上對(duì)你來(lái)說(shuō)可能是一種新的方法。一般來(lái)說(shuō),你可以“設(shè)置一個(gè)標(biāo)記”(有時(shí)也被稱為“翻轉(zhuǎn)一個(gè)位”)來(lái)標(biāo)明你的英雄所面向的方向。在你做完后,你就可以檢查這個(gè)變量來(lái)得知火球是向左移動(dòng)還是向右移動(dòng)。
首先,在你的 Player
類中創(chuàng)建一個(gè)新的變量來(lái)代表你的游戲所面向的方向。因?yàn)槲业挠螒蛱烊坏孛嫦蛴覀?cè),由此我把面向右側(cè)作為默認(rèn)值:
self.score = 0 self.facing_right = True # 添加這行 self.is_jumping = True
當(dāng)這個(gè)變量是 True
時(shí),你的英雄精靈是面向右側(cè)的。當(dāng)玩家每次更改英雄的方向時(shí),變量也必須重新設(shè)置,因此,在你的主循環(huán)中相關(guān)的 keyup
事件中這樣做:
if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == ord('a'): player.control(steps, 0) player.facing_right = False # 添加這行 if event.key == pygame.K_RIGHT or event.key == ord('d'): player.control(-steps, 0) player.facing_right = True # 添加這行
最后,更改你的 Throwable
類的 update
函數(shù),以檢測(cè)英雄是否面向右側(cè),并恰當(dāng)?shù)靥砑踊驕p去來(lái)自火球位置的像素:
if self.rect.y < worldy: if player.facing_right: self.rect.x += 15 else: self.rect.x -= 15 self.rect.y += 5
再次嘗試你的游戲,清除掉你游戲世界中的一些壞人。
Python 平臺(tái)類使用投擲能力
作為一項(xiàng)額外的挑戰(zhàn),當(dāng)徹底打敗敵人時(shí),嘗試增加你玩家的得分。
#!/usr/bin/env python3# 作者: Seth Kenlon # GPLv3# This program is free software: you can redistribute it and/or# modify it under the terms of the GNU General Public License as# published by the Free Software Foundation, either version 3 of the# License, or (at your option) any later version.## This program is distributed in the hope that it will be useful, but# WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU# General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program. If not, see <[http://www.gnu.org/licenses/>][17]. import pygameimport pygame.freetypeimport sysimport os '''變量''' worldx = 960worldy = 720fps = 40ani = 4world = pygame.display.set_mode([worldx, worldy])forwardx = 600backwardx = 120 BLUE = (80, 80, 155)BLACK = (23, 23, 23)WHITE = (254, 254, 254)ALPHA = (0, 255, 0) tx = 64ty = 64 font_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "fonts", "amazdoom.ttf")font_size = txpygame.freetype.init()myfont = pygame.freetype.Font(font_path, font_size) '''對(duì)象''' def stats(score, health): myfont.render_to(world, (4, 4), "Score:"+str(score), BLUE, None, size=64) myfont.render_to(world, (4, 72), "Health:"+str(health), BLUE, None, size=64) class Throwable(pygame.sprite.Sprite): """ 生成一個(gè)投擲的對(duì)象 """ def __init__(self, x, y, img, throw): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load(os.path.join('images', img)) self.image.convert_alpha() self.image.set_colorkey(ALPHA) self.rect = self.image.get_rect() self.rect.x = x self.rect.y = y self.firing = throw def update(self, worldy): ''' 投擲物理學(xué) ''' if self.rect.y < worldy: if player.facing_right: self.rect.x += 15 else: self.rect.x -= 15 self.rect.y += 5 else: self.kill() self.firing = 0 # x 位置, y 位置, img 寬度, img 高度, img 文件class Platform(pygame.sprite.Sprite): def __init__(self, xloc, yloc, imgw, imgh, img): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load(os.path.join('images', img)).convert() self.image.convert_alpha() self.image.set_colorkey(ALPHA) self.rect = self.image.get_rect() self.rect.y = yloc self.rect.x = xloc class Player(pygame.sprite.Sprite): """ 生成一名玩家 """ def __init__(self): pygame.sprite.Sprite.__init__(self) self.movex = 0 self.movey = 0 self.frame = 0 self.health = 10 self.damage = 0 self.score = 0 self.facing_right = True self.is_jumping = True self.is_falling = True self.images = [] for i in range(1, 5): img = pygame.image.load(os.path.join('images', 'walk' + str(i) + '.png')).convert() img.convert_alpha() img.set_colorkey(ALPHA) self.images.append(img) self.image = self.images[0] self.rect = self.image.get_rect() def gravity(self): if self.is_jumping: self.movey += 3.2 def control(self, x, y): """ 控制玩家移動(dòng) """ self.movex += x def jump(self): if self.is_jumping is False: self.is_falling = False self.is_jumping = True def update(self): """ 更新精靈位置 """ # 向左移動(dòng) if self.movex < 0: self.is_jumping = True self.frame += 1 if self.frame > 3 * ani: self.frame = 0 self.image = pygame.transform.flip(self.images[self.frame // ani], True, False) # 向右移動(dòng) if self.movex > 0: self.is_jumping = True self.frame += 1 if self.frame > 3 * ani: self.frame = 0 self.image = self.images[self.frame // ani] # 碰撞 enemy_hit_list = pygame.sprite.spritecollide(self, enemy_list, False) if self.damage == 0: for enemy in enemy_hit_list: if not self.rect.contains(enemy): self.damage = self.rect.colliderect(enemy) if self.damage == 1: idx = self.rect.collidelist(enemy_hit_list) if idx == -1: self.damage = 0 # 設(shè)置傷害回 0 self.health -= 1 # 減去 1 單位健康度 ground_hit_list = pygame.sprite.spritecollide(self, ground_list, False) for g in ground_hit_list: self.movey = 0 self.rect.bottom = g.rect.top self.is_jumping = False # 停止跳躍 # 掉落世界 if self.rect.y > worldy: self.health -=1 print(self.health) self.rect.x = tx self.rect.y = ty plat_hit_list = pygame.sprite.spritecollide(self, plat_list, False) for p in plat_hit_list: self.is_jumping = False # 停止跳躍 self.movey = 0 if self.rect.bottom <= p.rect.bottom: self.rect.bottom = p.rect.top else: self.movey += 3.2 if self.is_jumping and self.is_falling is False: self.is_falling = True self.movey -= 33 # 跳躍多高 loot_hit_list = pygame.sprite.spritecollide(self, loot_list, False) for loot in loot_hit_list: loot_list.remove(loot) self.score += 1 print(self.score) plat_hit_list = pygame.sprite.spritecollide(self, plat_list, False) self.rect.x += self.movex self.rect.y += self.movey class Enemy(pygame.sprite.Sprite): """ 生成一名敵人 """ def __init__(self, x, y, img): pygame.sprite.Sprite.__init__(self) self.image = pygame.image.load(os.path.join('images', img)) self.image.convert_alpha() self.image.set_colorkey(ALPHA) self.rect = self.image.get_rect() self.rect.x = x self.rect.y = y self.counter = 0 def move(self): """ 敵人移動(dòng) """ distance = 80 speed = 8 if self.counter >= 0 and self.counter <= distance: self.rect.x += speed elif self.counter >= distance and self.counter <= distance * 2: self.rect.x -= speed else: self.counter = 0 self.counter += 1 def update(self, firepower, enemy_list): """ 檢測(cè)火力碰撞 """ fire_hit_list = pygame.sprite.spritecollide(self, firepower, False) for fire in fire_hit_list: enemy_list.remove(self) class Level: def ground(lvl, gloc, tx, ty): ground_list = pygame.sprite.Group() i = 0 if lvl == 1: while i < len(gloc): ground = Platform(gloc[i], worldy - ty, tx, ty, 'tile-ground.png') ground_list.add(ground) i = i + 1 if lvl == 2: print("Level " + str(lvl)) return ground_list def bad(lvl, eloc): if lvl == 1: enemy = Enemy(eloc[0], eloc[1], 'enemy.png') enemy_list = pygame.sprite.Group() enemy_list.add(enemy) if lvl == 2: print("Level " + str(lvl)) return enemy_list # x 位置, y 位置, img 寬度, img 高度, img 文件 def platform(lvl, tx, ty): plat_list = pygame.sprite.Group() ploc = [] i = 0 if lvl == 1: ploc.append((200, worldy - ty - 128, 3)) ploc.append((300, worldy - ty - 256, 3)) ploc.append((550, worldy - ty - 128, 4)) while i < len(ploc): j = 0 while j <= ploc[i][2]: plat = Platform((ploc[i][0] + (j * tx)), ploc[i][1], tx, ty, 'tile.png') plat_list.add(plat) j = j + 1 print('run' + str(i) + str(ploc[i])) i = i + 1 if lvl == 2: print("Level " + str(lvl)) return plat_list def loot(lvl): if lvl == 1: loot_list = pygame.sprite.Group() loot = Platform(tx*5, ty*5, tx, ty, 'loot_1.png') loot_list.add(loot) if lvl == 2: print(lvl) return loot_list '''Setup 部分''' backdrop = pygame.image.load(os.path.join('images', 'stage.png'))clock = pygame.time.Clock()pygame.init()backdropbox = world.get_rect()main = True player = Player() # 生成玩家player.rect.x = 0 # 轉(zhuǎn)到 xplayer.rect.y = 30 # 轉(zhuǎn)到 yplayer_list = pygame.sprite.Group()player_list.add(player)steps = 10fire = Throwable(player.rect.x, player.rect.y, 'fire.png', 0)firepower = pygame.sprite.Group() eloc = []eloc = [300, worldy-ty-80]enemy_list = Level.bad(1, eloc)gloc = [] i = 0while i <= (worldx / tx) + tx: gloc.append(i * tx) i = i + 1 ground_list = Level.ground(1, gloc, tx, ty)plat_list = Level.platform(1, tx, ty)enemy_list = Level.bad( 1, eloc )loot_list = Level.loot(1) '''主循環(huán)''' while main: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() try: sys.exit() finally: main = False if event.type == pygame.KEYDOWN: if event.key == ord('q'): pygame.quit() try: sys.exit() finally: main = False if event.key == pygame.K_LEFT or event.key == ord('a'): player.control(-steps, 0) if event.key == pygame.K_RIGHT or event.key == ord('d'): player.control(steps, 0) if event.key == pygame.K_UP or event.key == ord('w'): player.jump() if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == ord('a'): player.control(steps, 0) player.facing_right = False if event.key == pygame.K_RIGHT or event.key == ord('d'): player.control(-steps, 0) player.facing_right = True if event.key == pygame.K_SPACE: if not fire.firing: fire = Throwable(player.rect.x, player.rect.y, 'fire.png', 1) firepower.add(fire) # 向向滾動(dòng)世界 if player.rect.x >= forwardx: scroll = player.rect.x - forwardx player.rect.x = forwardx for p in plat_list: p.rect.x -= scroll for e in enemy_list: e.rect.x -= scroll for l in loot_list: l.rect.x -= scroll # 向后滾動(dòng)世界 if player.rect.x <= backwardx: scroll = backwardx - player.rect.x player.rect.x = backwardx for p in plat_list: p.rect.x += scroll for e in enemy_list: e.rect.x += scroll for l in loot_list: l.rect.x += scroll world.blit(backdrop, backdropbox) player.update() player.gravity() player_list.draw(world) if fire.firing: fire.update(worldy) firepower.draw(world) enemy_list.draw(world) enemy_list.update(firepower, enemy_list) loot_list.draw(world) ground_list.draw(world) plat_list.draw(world) for e in enemy_list: e.move() stats(player.score, player.health) pygame.display.flip() clock.tick(fps)
到此,相信大家對(duì)“怎么在Python做的游戲中添加投擲機(jī)制”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!