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

Python+Pygame實現(xiàn)經典魂斗羅游戲

 更新時間:2022年05月05日 15:01:10   作者:Python小二  
《魂斗羅》(Contra)是由Konami于1987年推出的一系列卷軸射擊類單機游戲。本文將利用Python中的Pygame庫實現(xiàn)這一經典游戲,感興趣的可以了解一下

今天分享一個經典小游戲魂斗羅的 Python 版實現(xiàn)。

一、效果展示

二、操作說明

A:向左

D:向右

W:跳起

S:趴下

J:射擊

P:退出程序

目前游戲還是比較初級的版本,有興趣的小伙伴可以自行修改完善。

三、核心代碼

class Game_Player():
 def __init__(self,game_settings,screen):

  self.screen = screen
  self.game_settings = game_settings
  self.image = pygame.image.load('images/PR/player.png')
  self.rect = self.image.get_rect()
  self.screen_rect = self.screen.get_rect()
  self.screen_center_pos = self.screen_rect.centerx
  self.rect.centerx = self.screen_rect.centerx
  self.rect.bottom = 380
  self.center = float(self.rect.centerx)
  self.moving_right = False
  self.moving_left = False
  self.player_moving = False
  self.pos_i = 0.0#跑步畫面改變速度
  self.pos_j = 0.0#跳躍的改變初始速度
  self.pos_n = 0.0#射擊
  self.pos_d = 0.0
  self.player_direction = 1#1為右,-1為左
  self.player_down = False
  self.player_up = False
  self.player_jump = False
  self.player_start_Y = 380#開始人物的高度
  self.player_Y = self.player_start_Y
  self.player_shooting = False

 def update(self):
  if self.game_settings.player_is_alive:
   if self.moving_right and self.rect.right < self.screen_rect.right:
    if self.game_settings.boss_appear:
     self.center += self.game_settings.player_speed
    elif self.center > self.screen_center_pos:
     self.center += 0
    else:
     self.center += self.game_settings.player_speed
   if self.moving_left and self.rect.left > 0:
    self.center -= self.game_settings.player_speed
   self.rect.centerx = self.center

   self.update_image_moving()
  else:
   self.update_die()

 def update_die(self):
  self.names = locals()
  self.players = []
  for self.i in range(1,3):
   self.names['player_image%s' %self.i] = pygame.image.load('images/PR/death%s.png' %self.i)
   self.players.append(self.names['player_image%s' %self.i])
  self.image = self.players[int(self.pos_d)]
  self.pos_d += 0.1
  if self.pos_d > 2.0:
   self.pos_d = 0.0
   self.game_settings.player_die_end = True


 def update_image_moving_direction(self,direction):#循環(huán)圖片
  if self.player_shooting == True:
   self.names = locals()
   self.players = []
   for self.i in range(1,4):
    self.names['player_image%s' %self.i] = pygame.image.load('images/'+direction+'/shooting%s.png' %self.i)
    self.players.append(self.names['player_image%s' %self.i])
   self.image = self.players[int(self.pos_n)]
   self.pos_n += 0.1#射擊時跑步速率
   if self.pos_n > 3.0:#射擊時跑步有3個動作
    self.pos_n = 0.0
  else:
   self.names = locals()
   self.players = []
   for self.i in range(1,6):
    self.names['player_image%s' %self.i] = pygame.image.load('images/'+direction+'/player%s.png' %self.i)
    self.players.append(self.names['player_image%s' %self.i])
   self.image = self.players[int(self.pos_i)]
   self.pos_i += 0.1#跑步速率
   if self.pos_i > 5.0:#跑步有5個動作
    self.pos_i = 0.0

 def update_image_jump(self,direction):#循環(huán)圖片
  if self.game_settings.player_is_alive:
   if self.player_jump == True:
    self.names1 = locals()
    self.players1 = []
    for self.j in range(1,5):
     self.names1['player_image%s' %self.j] = pygame.image.load('images/'+direction+'/jump%s.png' %self.j)
     self.players1.append(self.names1['player_image%s' %self.j])
    self.image = self.players1[int(self.pos_j)]
    self.pos_j += 0.3#跳躍旋轉速率
    if self.pos_j > 4.0:#跳躍有4個動作
     self.pos_j = 0.0
  else:
   self.update_die()


 def update_image_moving(self):
  if self.player_moving:
   if self.moving_right:
    self.update_image_moving_direction('PR')#PR是向右的圖片
   elif self.moving_left:
    self.update_image_moving_direction('PL')

 def get_player_state(self,player_state):#檢測player的狀態(tài)是否為趴下,向上,跳躍等
  if self.player_direction == 1:
   self.image = pygame.image.load('images/PR/'+player_state+'.png')
  if self.player_direction == -1:
   self.image = pygame.image.load('images/PL/'+player_state+'.png')
  self.rect = self.image.get_rect()
  self.rect.centerx = self.center

 def get_player_down(self):
  self.get_player_state('down')
  self.rect.bottom = self.player_start_Y
  self.screen.blit(self.image,self.rect)

 def get_player_up(self):
  self.get_player_state('up')
  self.rect.bottom = self.player_start_Y
  self.screen.blit(self.image,self.rect)

 def get_player_jump(self):
  self.get_player_state('jump1')
  self.rect.bottom = self.player_Y
  if self.game_settings.jump_vel < 0:
   self.game_settings.jump_vel += 0.6#跳躍上升的增加的速率
  elif self.game_settings.jump_vel > 0:
   self.game_settings.jump_vel += 0.8#跳躍下降增加的速率
  self.player_Y += self.game_settings.jump_vel
  if self.player_Y > self.player_start_Y:
   self.player_jump = False
   self.player_Y = self.player_start_Y
   self.game_settings.jump_vel = -14.0#恢復跳躍開始的速度
   if self.player_direction == 1:
    self.image = pygame.image.load('images/PR/player.png')
    self.reset_player()
   if self.player_direction == -1:
    self.image = pygame.image.load('images/PL/player.png')
    self.reset_player()
  if self.player_jump == True:#判斷是否處于跳躍狀態(tài)來決定是否旋轉跳躍的圖像
   if self.player_direction == 1:
    self.update_image_jump('PR')
   if self.player_direction == -1:
    self.update_image_jump('PL')
  self.screen.blit(self.image,self.rect)

 def reset_player(self):
  self.rect = self.image.get_rect()
  self.rect.centerx = self.center
  self.rect.bottom = self.player_start_Y
  self.screen.blit(self.image,self.rect)

 def blitme(self):
  if self.player_jump:
   self.get_player_jump()
  elif self.player_down:
   self.get_player_down()
  elif self.player_up:
   self.get_player_up()
  else:
   self.reset_player()

 def revive_player(self):
  self.center = self.screen_rect.centerx
  self.game_settings.player_is_alive = True

到此這篇關于Python+Pygame實現(xiàn)經典魂斗羅游戲的文章就介紹到這了,更多相關Python Pygame魂斗羅內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 使用Python調取任意數(shù)字資產錢包余額功能

    使用Python調取任意數(shù)字資產錢包余額功能

    那資產放在錢包的時候,如何來監(jiān)控余額呢?任何數(shù)字資產都可以使用區(qū)塊瀏覽器來查詢余額,那我們只要從此著手,用Python調取區(qū)塊瀏覽器,來查詢余額就能實現(xiàn)所有資產的余額監(jiān)控,感興趣的朋友跟隨小編一起看看吧
    2019-08-08
  • 關于sklearn中模塊包導入報錯的通用解決方法

    關于sklearn中模塊包導入報錯的通用解決方法

    這篇文章主要介紹了關于sklearn中模塊包導入報錯的通用解決方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 基于Python安裝pyecharts所遇的問題及解決方法

    基于Python安裝pyecharts所遇的問題及解決方法

    今天小編就為大家分享一篇基于Python安裝pyecharts所遇的問題及解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • PyInstaller打包selenium-wire過程中常見問題和解決指南

    PyInstaller打包selenium-wire過程中常見問題和解決指南

    常用的打包工具 PyInstaller 能將 Python 項目打包成單個可執(zhí)行文件,但也會因為兼容性問題和路徑管理而出現(xiàn)各種運行錯誤,本指南總結了打包過程中常見問題和解決方案,大家可以根據(jù)需要進行選擇
    2025-04-04
  • Python格式化輸出詳情

    Python格式化輸出詳情

    這篇文章介紹了Python格式化輸出,主要講解Python格式化輸出的三種方式:%格式化、format格式化、f-String格式化,需要的朋友可以參考下面文章的具體內容
    2021-09-09
  • Python切片索引用法示例

    Python切片索引用法示例

    這篇文章主要介紹了Python切片索引用法,結合實例形式詳細分析了Python切片索引的常見使用方法與操作注意事項,需要的朋友可以參考下
    2018-05-05
  • Python實現(xiàn)模擬分割大文件及多線程處理的方法

    Python實現(xiàn)模擬分割大文件及多線程處理的方法

    這篇文章主要介紹了Python實現(xiàn)模擬分割大文件及多線程處理的方法,涉及Python文件讀取、分割及多線程相關操作技巧,需要的朋友可以參考下
    2017-10-10
  • Matplotlib繪制混淆矩陣的實現(xiàn)

    Matplotlib繪制混淆矩陣的實現(xiàn)

    對于機器學習多分類模型來說,其評價指標除了精度之外,常用的還有混淆矩陣和分類報告,下面來展示一下如何繪制混淆矩陣,這在論文中經常會用到。感興趣的可以了解一下
    2021-05-05
  • python計算列表內各元素的個數(shù)實例

    python計算列表內各元素的個數(shù)實例

    今天小編就為大家分享一篇python計算列表內各元素的個數(shù)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • pyqt添加啟動等待界面的操作

    pyqt添加啟動等待界面的操作

    這篇文章主要介紹了pyqt添加啟動等待界面的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03

最新評論

资阳市| 兴安盟| 敦煌市| 荣昌县| 城市| 荣昌县| 秭归县| 建德市| 清河县| 和平县| 肃北| 荆州市| 崇州市| 宿松县| 东山县| 怀安县| 广丰县| 广宗县| 郎溪县| 内江市| 宁南县| 沙雅县| 巍山| 河曲县| 青铜峡市| 黎城县| 达拉特旗| 承德县| 工布江达县| 新化县| 兴化市| 营口市| 来宾市| 尉氏县| 乌什县| 庆云县| 平凉市| 尚志市| 延津县| 鲁甸县| 法库县|