自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

開發(fā) 后端
本期奇思妙想之超級魔改版外星人入侵小游戲,從小游戲入手去學(xué)Python是個很不錯的選擇,希望對你有所幫助!

[[417337]]

前言

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

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

原始1.0版本:

原始1.0版本有如下特點:

1.玩家可以控制屏幕底下的炮口(書中說是飛船)左右移動并射擊僵尸

2.僵尸群固定3排,固定數(shù)量,固定間距生成,不會隨著關(guān)卡升級而變化

3.玩家有3條生命,左上角代表剩余生命,被僵尸群碰到或尸群到達(dá)屏幕底部則生命-1

4.玩家每次射擊都要按一下射擊鍵(這里是空格),不能連續(xù)射擊

5.尸群作為一個整體左右移動碰到屏幕邊緣便前進(jìn)一步,如果不能及時消滅尸群最邊緣的僵尸,那么尸群將會移動得很快

6.只有一種怪物,而且怪物沒有設(shè)置血量,關(guān)卡升級只是怪物左右橫移變快

7.玩法單調(diào),沒有特效,沒有技能,沒有道具,沒有地圖

8.不能實現(xiàn)分?jǐn)?shù)存儲,每次運行程序時的最高分記錄不會保存

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

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

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

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

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

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

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

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

原始1.0版本的源碼免費獲取地址:

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

二、魔改思路

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

1. 醒目亮眼的UI界面

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

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

部分代碼:

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

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

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

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

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

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

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

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

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

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

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

部分代碼:

  1. def _create_fleet(self): 
  2.      "創(chuàng)建怪物群1" 
  3.      self.alien_bloodmax=1 
  4.      self.alien_blood=1 
  5.      if self.stats.level>=5: 
  6.          self.alien_bloodmax =2 
  7.          self.alien_blood = 2 
  8.          if self.stats.level >=10: 
  9.              self.alien_bloodmax = 3 
  10.              self.alien_blood = 3 
  11.  
  12.              if self.stats.level >=15: 
  13.                  self.settings.guainum = 2 
  14.                  self.alien_bloodmax =5 
  15.                  self.alien_blood =5 
  16.                  if self.stats.level >=25: 
  17.                      self.alien_bloodmax =10 
  18.                      self.alien_blood =10 
  19.                      if self.stats.level >= 30: 
  20.                          self.alien_bloodmax = 20 
  21.                          self.alien_blood = 20 
  22.  
  23.                          if self.stats.level >= 40: 
  24.                              self.settings.guainum = 3 
  25.                              self.alien_bloodmax = 50 
  26.                              self.alien_blood = 50 
  27.                              if self.stats.level >= 45: 
  28.                                  self.alien_bloodmax = 100 
  29.                                  self.alien_blood = 100 
  30.                                  if self.stats.level >= 50: 
  31.                                      self.alien_bloodmax = 150 
  32.                                      self.alien_blood = 150 
  33.      number_alien=random.randint(5+self.stats.level*1,15+self.stats.level*2) 
  34.      for row_number in range(number_alien): 
  35.          alien = Alien(self) 
  36.          self.aliens.add(alien) 

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

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

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

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

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

加載圖片和位置:

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

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

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

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

三、總結(jié)

本期奇思妙想之超級魔改版外星人入侵小游戲-01就到這里了。

對本游戲有更好想法的朋友也可以提出你的魔改思路,讓游戲變得更有趣更好玩,讓大家創(chuàng)新思維的火花盡情地碰撞。

【編輯推薦】

【責(zé)任編輯:姜華 TEL:(010)68476606】

 

責(zé)任編輯:姜華 來源: Python爬蟲與數(shù)據(jù)挖掘
相關(guān)推薦

2023-05-22 10:04:24

2021-02-01 08:41:06

Java考試系統(tǒng)

2022-02-17 10:26:17

JavaScript掃雷游戲前端

2021-08-09 13:31:25

PythonExcel代碼

2017-09-14 09:09:04

php應(yīng)用LibreOfficeWord轉(zhuǎn)HTML

2021-02-04 15:52:46

Java考試系統(tǒng)

2021-01-04 09:55:26

Java移動互聯(lián)網(wǎng)

2024-01-07 20:00:27

2021-01-21 06:04:55

Go語言TCP目錄生成器

2021-11-01 10:26:07

CanvasAPI畫布技術(shù)HTML5

2021-01-05 09:04:20

Javatxt文件

2022-10-19 14:30:59

2021-05-10 06:48:11

Python騰訊招聘

2021-02-02 13:31:35

Pycharm系統(tǒng)技巧Python

2021-12-11 20:20:19

Python算法線性

2021-01-10 08:14:01

Go語言TCP掃描器

2021-12-30 08:56:57

Python摸魚倒計界面Python基礎(chǔ)

2021-02-06 14:55:05

大數(shù)據(jù)pandas數(shù)據(jù)分析

2011-03-28 16:14:38

jQuery

2021-02-04 09:00:57

SQLDjango原生
點贊
收藏

51CTO技術(shù)棧公眾號