<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          手把手教你用Python改造一款外星人入侵小游戲

          共 5381字,需瀏覽 11分鐘

           ·

          2021-08-16 10:08

          點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

          回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

          為學(xué)應(yīng)須畢生力,攀高貴在少年時(shí)。

          大家好,我是白小純。這是我在【Python爬蟲與數(shù)據(jù)挖掘】公眾號(hào)的第二篇文章,第一篇文章寫的是冰冰女神,反響非常不錯(cuò),沒來得及圍觀的小伙伴,可以戳文章:手把手教你用Python網(wǎng)絡(luò)爬蟲+自動(dòng)化來創(chuàng)建一位屬于你自己的虛擬女票(附源碼),覺得不錯(cuò),記得三連支持噢!

          前言

              很多朋友都是從python編程:從入門到實(shí)踐開始的python學(xué)習(xí),這本書還是比較適合初學(xué)者的。

          之前公眾號(hào)也送過這本書,沒有收到的小伙伴也別灰心,送書活動(dòng)基本上每周的周六或者周日都會(huì)進(jìn)行,大家記得來參加就是了。

          言歸正傳,而在這本書中有一個(gè)pygame小游戲項(xiàng)目,外星人入侵。

          對(duì)于初學(xué)者來說,從小游戲入手去學(xué)python是個(gè)很不錯(cuò)的選擇,然而我覺得此書中的外星人入侵小游戲太過單調(diào)和粗糙,所以靈光一閃決定將其升級(jí)為超級(jí)魔改版。


          本文先按照此書給出該游戲的原始1.0版本和原始1.0版本完整代碼,然后然后逐步分析并將其魔改為全新版本。


          比起單調(diào)無趣的原始版本,魔改版除了基本玩法還是個(gè)射擊游戲,幾乎看不出來和原始版本有什么關(guān)系。


          這篇文章主要分為三個(gè)部分進(jìn)行展開:

          一、原始版本再現(xiàn)  1.原始1.0版本的源碼免費(fèi)獲取地址:二、魔改思路  1.醒目亮眼的UI界面  2.實(shí)現(xiàn)地圖,怪物,血量多樣化  3.實(shí)現(xiàn)游戲商城和豐富金融體系 三、未完待續(xù)


          一、原始版本再現(xiàn)

          原始1.0版本:

          原始1.0版本有如下特點(diǎn):

          1.玩家可以控制屏幕底下的炮口(書中說是飛船)左右移動(dòng)并射擊僵尸2.僵尸群固定3排,固定數(shù)量,固定間距生成,不會(huì)隨著關(guān)卡升級(jí)而變化3.玩家有3條生命,左上角代表剩余生命,被僵尸群碰到或尸群到達(dá)屏幕底部則生命-14.玩家每次射擊都要按一下射擊鍵(這里是空格),不能連續(xù)射擊5.尸群作為一個(gè)整體左右移動(dòng)碰到屏幕邊緣便前進(jìn)一步,如果不能及時(shí)消滅尸群最邊緣的僵尸,那么尸群將會(huì)移動(dòng)得很快6.只有一種怪物,而且怪物沒有設(shè)置血量,關(guān)卡升級(jí)只是怪物左右橫移變快7.玩法單調(diào),沒有特效,沒有技能,沒有道具,沒有地圖8.不能實(shí)現(xiàn)分?jǐn)?shù)存儲(chǔ),每次運(yùn)行程序時(shí)的最高分記錄不會(huì)保存

          只能說原始1.0版本實(shí)現(xiàn)了一個(gè)小游戲的基本框架,如下圖:

          此時(shí)左上角有3個(gè)大炮的圖標(biāo),意為我還有3條生命。


          屏幕上方中央是最高分,屏幕最右上角是當(dāng)前分?jǐn)?shù),由于這是運(yùn)行程序后的第一次游戲,當(dāng)前分即最高分。


          屏幕最右上角當(dāng)前分?jǐn)?shù)的下面的數(shù)字是當(dāng)前關(guān)卡,消滅全部僵尸進(jìn)入下一關(guān),隨著關(guān)卡的升級(jí)尸群的移動(dòng)速度會(huì)越來越快。

          被僵尸群碰到或尸群到達(dá)屏幕底部則生命會(huì)減一哦,上圖就只剩下2條命了。


          原始1.0版本要用到的文件如下:

          其中分門別類,各文件都有其明確分工,alien是專門寫外星人的,alien_invasion是主程序,bullet是控制子彈及相關(guān)參數(shù)的,button是控制開始游戲按鈕,game_stats是游戲的一些初始化設(shè)置,scoreboard是控制分?jǐn)?shù)面板,settings用于游戲參數(shù)設(shè)置,ship專門控制飛船。


          原始1.0版本要用到的圖片也非常簡(jiǎn)單,存在images里面,只有一個(gè)外星人和一個(gè)飛船,這里我用的是一個(gè)僵尸和一個(gè)大炮。你也可以選用自己喜歡的形象替換。

          原始1.0版本的源碼免費(fèi)獲取地址:

          https://download.csdn.net/download/x978404178/20299596?spm=1001.2014.3001.5501 


          二、魔改思路

          本文將初步推出魔改后的版本,不妨記為魔改2.0版。

          1. 醒目亮眼的UI界面

          通過精心設(shè)計(jì)的登錄封面,游戲取名星際前線,并達(dá)到如下效果:

           此登錄界面支持鼠標(biāo)點(diǎn)擊開始游戲按鈕即開始游戲,鼠標(biāo)點(diǎn)擊或按下鍵盤s鍵可進(jìn)入/退出積分商城,鼠標(biāo)點(diǎn)擊聯(lián)系我們可以看到作者信息。


          部分代碼:

                  self.color=(230,230,230)        self.fm = pygame.image.load('images/fm.png').convert_alpha()        self.title = pygame.image.load('images/title.png').convert_alpha()        self.titlerect = pygame.Rect(-190, -60, 1920, 1000)  # 矩形(x,y,width,height)        self.play = pygame.image.load('images/play.png').convert_alpha()        self.playrect = pygame.Rect(645,300, 280, 280)#矩形(x,y,width,height)        self.shop = pygame.image.load('images/shop.png').convert_alpha()        self.shoprect = pygame.Rect(0, 700, 330, 158)  # 矩形(x,y,width,height)        self.lianxi1 = pygame.image.load('images/lianxi1.png').convert_alpha()        self.lianxi1rect = pygame.Rect(1330, 780, 187, 80)  # 矩形(x,y,width,height)         self.shop2 = pygame.image.load('images/shop2.png').convert_alpha()        self.shop2rect = pygame.Rect(1395, 735, 140, 126)  # 矩形(x,y,width,height)

          2.實(shí)現(xiàn)地圖,怪物,血量多樣化

          所有怪物生成數(shù)量與關(guān)卡有關(guān),生成數(shù)量在一定限度內(nèi)隨機(jī),但關(guān)卡越高,生成數(shù)量趨向于越多。


          怪物生成范圍也為一定限度內(nèi)隨機(jī)生成。


          怪物移動(dòng)速度與關(guān)卡有關(guān),關(guān)卡越高,前進(jìn)速度越快,但設(shè)置了一個(gè)速度上限。


          怪物以一定概率在一個(gè)身位內(nèi)瞬移移動(dòng),可以閃避飛船的子彈。

          第一關(guān)是可愛的小機(jī)器人,1點(diǎn)血量,在第三關(guān)出現(xiàn)了手拿盾牌的機(jī)器人,3點(diǎn)血量。

          在第5關(guān)出現(xiàn)了BOSS,上方是它的紅色血條,很長(zhǎng)。


          BOSS嘛,不抗揍怎么當(dāng)老大?

          我在游戲中設(shè)置了豐富的地圖,每10關(guān)切換一個(gè)場(chǎng)景。

          BOSS的安排遵循每5關(guān)一小boss,每10關(guān)一大BOSS的規(guī)律,讓玩家盡情體驗(yàn)激戰(zhàn)。


          部分代碼:

              def _create_fleet(self):        "創(chuàng)建怪物群1"        self.alien_bloodmax=1        self.alien_blood=1        if self.stats.level>=5:            self.alien_bloodmax =2            self.alien_blood = 2            if self.stats.level >=10:                self.alien_bloodmax = 3                self.alien_blood = 3                 if self.stats.level >=15:                    self.settings.guainum = 2                    self.alien_bloodmax =5                    self.alien_blood =5                    if self.stats.level >=25:                        self.alien_bloodmax =10                        self.alien_blood =10                        if self.stats.level >= 30:                            self.alien_bloodmax = 20                            self.alien_blood = 20                             if self.stats.level >= 40:                                self.settings.guainum = 3                                self.alien_bloodmax = 50                                self.alien_blood = 50                                if self.stats.level >= 45:                                    self.alien_bloodmax = 100                                    self.alien_blood = 100                                    if self.stats.level >= 50:                                        self.alien_bloodmax = 150                                        self.alien_blood = 150        number_alien=random.randint(5+self.stats.level*1,15+self.stats.level*2)        for row_number in range(number_alien):            alien = Alien(self)            self.aliens.add(alien)


          3.實(shí)現(xiàn)游戲商城和豐富金融體系

          怎么樣,小白作者自己一點(diǎn)點(diǎn)做出來的游戲商城還看得過去吧?


          左上角是金幣,與游戲中殺怪獲得的積分掛鉤。


          右上角是鉆石,顧名思義,是屬于氪金大佬和少數(shù)精英玩家的稀缺資源。


          鼠標(biāo)移動(dòng)到對(duì)應(yīng)商品上會(huì)顯示半透明的簡(jiǎn)介,名稱,價(jià)格,類別和功能。


          加載圖片和位置:

          self.gaosi1 = pygame.image.load('images/gaosi1.png').convert_alpha()self.gaosi1rect = pygame.Rect(230, 480, 751, 240)  # 矩形(x,y,width,height)

          由鼠標(biāo)位置確定是否顯示商品簡(jiǎn)介:

          button3_clicked = self.gaosirect.collidepoint(mouse_pos)if button3_clicked:    self.screen.blit(self.gaosi1, self.gaosi1rect)

          至于魔改版的更多講解和源碼我們留到以后講解。


           三、總結(jié)

              本期奇思妙想之超級(jí)魔改版外星人入侵小游戲-01就到這里了,感興趣的朋友可以關(guān)注我,后期會(huì)相應(yīng)推出奇思妙想-02-03等系列文章。


              對(duì)本游戲有更好想法的朋友也可以提出你的魔改思路,讓游戲變得更有趣更好玩,讓大家創(chuàng)新思維的火花盡情地碰撞。想要你的魔改方案實(shí)施在游戲中,可以在下方評(píng)論區(qū)留言或私信作者哦。


          ------------------- End -------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

          萬水千山總是情,點(diǎn)個(gè)【在看】行不行

          /今日留言主題/

          隨便說一兩句吧~~

          瀏覽 79
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  操操逼片淫秽操逼片 | 国产黄视频在线看 | 五月天婷婷影院 | 毛片啪啪 | 蜜桃成人无码AV在线观看一电影 |