国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python實現飛機大戰游戲(pygame版)

2020-02-15 21:19:24
字體:
來源:轉載
供稿:網友

簡介

使用python實現pygame版的飛機大戰游戲;

環境:Windows系統+python3.8.0

游戲規則:

1.點擊“PLAY”或者按鍵“P”開始游戲;

2.敵機根據設置頻率從頂部隨機位置生成,生成后向下移動;

3.飛船在底部中間生成,玩家使用上下左右鍵控制飛船移動,敲擊空格鍵發射子彈;

4.子彈打到敵機,該敵機產生爆炸效果并累計分數到右上角;

5.消滅10只飛機后,等級升高,敵機生成頻率變快,下落速度也變快;

6.當三條命都消失了,游戲結束。

游戲運行效果如下:

實現過程

1.新建文件“file.py”,用來存儲信息到文件和讀取文件的信息,本例用來存儲和讀取最高分;

import pickle# filename = 'file/stats.pkl'# 存儲信息到文件def save_file(obj, filename): statsObj = load_file(filename) if statsObj == 0:  # 不存在文件時,直接保存字典  with open(filename, 'wb') as f:   pickle.dump(obj, f, pickle.HIGHEST_PROTOCOL) else:  # 存在文件時,只修改文件中的最高分  for key, val in statsObj.items():   # 獲取文件最高分的值(當文件字段不止一個時候使用)   if key == 'highScore':    statsObj[key] = obj['highScore']  obj = statsObj with open(filename, 'wb') as f:  pickle.dump(obj, f, pickle.HIGHEST_PROTOCOL) # 讀取信息def load_file(filename): try:  with open(filename, 'rb') as f:   return pickle.load(f) except FileNotFoundError:  # 不存在文件則輸入錯誤信息  msg = "Sorry, the file " + filename + " does not exist."  print(msg)  return 0 # obj = {'highScore': 20, 'points': 5}# obj = {'highScore': 50}# save_file(obj, filename)# filedata = load_file(filename)# print(filedata)

2.k新建文件settings.py,用來定義一些必須的基本屬性和初始值;

import file as fclass Settings(): def __init__(self):  self.screen_width = 480  self.screen_height = 660  self.bg_color = (230, 230, 230)  # 子彈設置(寬、高、顏色、最大數量)    self.bullet_width = 5  self.bullet_height = 15  self.bullet_color = 255, 255, 255  # 敵機移動頻率  self.enemy_frequency = 0  # 加快游戲節奏的速度  self.speedup_scale = 1.1  # 分數的提高速度  self.score_scale = 1.5   self.initialize_settings()  # 初始化統計信息  self.reset_stats()  # 統計信息文件路徑  self.filename = 'file/stats.pkl'  # 游戲剛啟動時處于非活動狀態  self.game_active = False  # 讀取文件的最高分,在任何情況下都不應重置最高得分  statsObj = f.load_file(self.filename)  if statsObj == 0:   # 不存在文件則顯示最高分0   highScore = 0  else:   for key, val in statsObj.items():    # 獲取文件最高分的值(當文件字段不止一個時候使用)    if key == 'highScore':     highScore = val  self.high_score = highScore    def initialize_settings(self):  """初始化隨游戲進行而變化的設置"""  self.player_move_speed = 2.5  self.bullet_speed = 3  self.enemy_move_speed = 1  # 記分  self.one_points = 50 def increase_speed(self):  """提高速度設置"""  # self.player_move_speed *= self.speedup_scale  self.bullet_speed *= self.speedup_scale  self.enemy_move_speed *= self.speedup_scale  self.one_points = int(self.one_points * self.score_scale) def reset_stats(self):  """初始化在游戲運行期間可能變化的統計信息"""  # 可射失的數量  self.player_limit = 3  # 射擊分數  self.score = 0  # 等級  self.level = 1  # 打中多少矩形升一級  self.level_number = 10  # 生成敵機頻率間隔  self.enemy_frequency_space = 50            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泰兴市| 垦利县| 延津县| 塘沽区| 朔州市| 浮山县| 京山县| 东方市| 桐乡市| 积石山| 贵定县| 驻马店市| 开封市| 海林市| 囊谦县| 嵊州市| 西安市| 泗洪县| 兖州市| 山东| 新昌县| 台前县| 琼海市| 星座| 海安县| 长葛市| 禄丰县| 海原县| 健康| 平利县| 合江县| 铜梁县| 韶山市| 九江县| 射阳县| 惠水县| 高阳县| 全州县| 偏关县| 旬邑县| 诏安县|