当前位置:   article > 正文

【Python】项目实战一:外星人入侵 - 《Python编程:从入门到实践》_60%(代码行数不少于500行) 《python编程从入门到实践》项目外星人入侵

60%(代码行数不少于500行) 《python编程从入门到实践》项目外星人入侵

项目1:外星人入侵

1、项目描述:

在游戏《外星人入侵》中,玩家控制着一艘最初出现在屏幕底部中央的飞船。玩家可以使用箭头键左右移动飞船,还可使用空格键进行射击。游戏开始时,一群外星人出 现在天空中,他们在屏幕中向下移动。玩家的任务是射杀这些外星人。玩家将所有外星 人都消灭干净后,将出现一群新的外星人,他们移动的速度更快。只要有外星人撞到了 玩家的飞船或到达了屏幕底部,玩家就损失一艘飞船。玩家损失三艘飞船后,游戏结束。

在Pygame中,原点(0, 0)位于屏幕左上角,向右下方移动时,坐标值将增大。在1200×800
的屏幕上,原点位于左上角,而右下角的坐标为(1200, 800)。
 

2、代码: 

(1)alien_invasion.py      主页面

  1. import sys
  2. import pygame
  3. import game_functions as gf
  4. from pygame.sprite import Group
  5. from settings import Settings
  6. from ship import Ship
  7. from alien import Alien
  8. from game_stats import GameStats
  9. from button import Button
  10. from scoreboard import Scoreboard
  11. def run_game():
  12. """初始化一个游戏并创建一个屏幕对象"""
  13. pygame.init()
  14. ai_settings = Settings()
  15. screen = pygame.display.set_mode((ai_settings.screen_width,ai_settings.screen_height))
  16. pygame.display.set_caption("Alien Invasion")
  17. # 创建Play按钮
  18. play_button = Button(ai_settings, screen, "Play")
  19. # 创建一个用于存储游戏统计信息的实例,并创建记分牌
  20. stats = GameStats(ai_settings)
  21. sb = Scoreboard(ai_settings, screen, stats)
  22. # 创建一艘飞船
  23. ship = Ship(ai_settings, screen)
  24. # 创建一个用于存储子弹的编组,用于存储所有有效的子弹,以便能够管理发射出去的所有子弹。
  25. bullets = Group()
  26. # 创建一个外星人编组
  27. aliens = Group()
  28. # 创建外星人群
  29. gf.create_fleet(ai_settings, screen, ship, aliens)
  30. # 开始游戏的主循环
  31. while True:
  32. gf.check_events(ai_settings, screen, stats, sb, play_button, ship, aliens, bullets)
  33. if stats.game_active:
  34. ship.update()
  35. gf.update_bullets(ai_settings, screen, stats, sb, ship, aliens, bullets)
  36. gf.update_aliens(ai_settings, screen, stats, sb, ship, aliens, bullets)
  37. gf.update_screen(ai_settings, screen, stats, sb, ship, aliens, bullets, play_button)
  38. run_game()

(2)settings.py      配置:所有设置的类

  1. class Settings():
  2. """"存储《外星人入侵》的所有设置的类"""
  3. def __init__(self):
  4. """初始化游戏的静态设置"""
  5. # 屏幕设置
  6. self.screen_width = 1100
  7. self.screen_height = 650
  8. self.bg_color = (230, 230, 230) # 浅灰色
  9. # 飞船设置
  10. self.ship_limit = 3
  11. # 子弹设置
  12. self.bullet_width = 3
  13. self.bullet_height = 15
  14. self.bullet_color = 60, 60, 60 # 深灰色子弹
  15. self.bullets_allowed = 5 # 限制子弹数量
  16. # 外星人设置
  17. self.fleet_drop_speed = 10
  18. # 以什么样的速度加快游戏节奏:设置游戏难度
  19. self.speedup_scale = 1.1
  20. # 外星人点数的提高速度
  21. self.score_scale = 1.5
  22. self.initialize_dynamic_settings()
  23. def initialize_dynamic_settings(self):
  24. """初始化随游戏进行而变化的设置"""
  25. self.ship_speed_factor = 1.5 # 移动速度1.5个像素值
  26. self.bullet_speed_factor = 3
  27. self.alien_speed_factor = 1
  28. self.fleet_direction = 1 # 右移:1 ; 左移:-1
  29. # 记分
  30. self.alien_points = 50
  31. def increase_speed(self):
  32. """提高速度设置"""
  33. self.ship_speed_factor *= self.speedup_scale
  34. self.bullet_speed_factor *= self.speedup_scale
  35. self.alien_speed_factor *= self.speedup_scale
  36. self.alien_points = int(self.alien_points * self.score_scale)
  37. # print(self.alien_points)

(3)ship.py      

  1. import pygame
  2. from pygame.sprite import Sprite
  3. class Ship(Sprite):
  4. def __init__(self, ai_settings, screen):
  5. """初始化飞船并设置其初始值"""
  6. super(Ship, self).__init__()
  7. self.screen = screen
  8. self.ai_settings = ai_settings
  9. # 加载飞船图像并获取其外接矩形
  10. self.image = pygame.image.load('images/ship.bmp') # 函数返回一个表示飞船的surface
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/121626?site
推荐阅读
相关标签
  

闽ICP备14008679号