上传文件至 ''

This commit is contained in:
206530104 2021-06-23 12:27:39 +08:00
parent 84893b147c
commit de2c373b59
2 changed files with 123 additions and 0 deletions

73
settings.py Normal file
View File

@ -0,0 +1,73 @@
import pygame
class Settings():
"""储存《外星人入侵》所有设置的类"""
def __init__(self):
"""初始化游戏的设置"""
# 屏幕设置
self.screen_width = 1200
self.screen_height = 800
self.bg_color = (0, 0, 0)
self.lb_bg_color = (10, 10, 10)
self.lb_text_color = (230, 230, 230)
# 飞船设置
self.ship_limit = 3
# 子弹设置
self.bullet_width = 3
self.bullet_height = 15
self.bullet_color = (180, 180, 180)
self.bullets_allowed = 5
# 超级子弹设置
self.super_bullet_color = (0, 255, 0)
self.super_bullet_width = 6
self.super_bullet_height = 150
self.points_of_power = 1000
# 外星人设置
self.fleet_drop_speed = 10
self.alien_bullet_color = (220, 220, 0)
# 游戏加快节奏参数
self.speedup_scale = 1.1
# 击中外星人得分点数的提高速度
self.score_scale = 1.2
# 音效设置
self.bullet_sound = pygame.mixer.Sound("sounds/bullet.wav")
self.super_bullet_sound = pygame.mixer.Sound("sounds/super_bullet.wav")
self.ship_hit_sound = pygame.mixer.Sound("sounds/ship_hit.wav")
self.start_new_level_sound = pygame.mixer.Sound("sounds/start_new_level.wav")
self.super_mode_sound = pygame.mixer.Sound("sounds/super_mode.wav")
self.gameover_sound = pygame.mixer.Sound("sounds/gameover.wav")
self.recordbroken_sound = pygame.mixer.Sound("sounds/recordbroken.wav")
# 初始化游戏动态设置
self.initialize_dynamic_settings()
def initialize_dynamic_settings(self):
"""初始化动态参数"""
self.ship_speed_factor = 1.5
self.bullet_speed_factor = 3
self.alien_speed_factor = 1
self.super_bullet_speed_factor = 30
# 1表示右移-1表示左移
self.fleet_direction = 1
# 记分
self.alien_points = 50
def increase_speed(self):
"""提高速度设置"""
self.ship_speed_factor *= self.speedup_scale
self.bullet_speed_factor *= self.speedup_scale
self.alien_speed_factor *= self.speedup_scale
self.alien_points = int(self.alien_points * self.score_scale)

50
ship.py Normal file
View File

@ -0,0 +1,50 @@
import pygame
from pygame.sprite import Sprite
class Ship(Sprite):
def __init__(self, ai_settings, screen):
"""初始化飞船并设置其初始位置"""
super().__init__()
self.ai_settings = ai_settings
self.screen = screen
# 加载飞船图像并获得其外接矩形
self.image = pygame.image.load('images/ship.bmp')
self.rect = self.image.get_rect()
self.screen_rect = screen.get_rect()
# 将飞船放在屏幕底部中央
self.rect.centerx = self.screen_rect.centerx
self.rect.bottom = self.screen_rect.bottom
# 在飞船的属性center中储存小数值
self.center = float(self.rect.centerx)
# 移动标志
self.moving_right = False
self.moving_left = False
# 无敌标志
self.super_mode = False
def update(self):
"""根据移动标志调整飞船位置"""
if self.moving_right and self.rect.right < self.screen_rect.right:
self.center += self.ai_settings.ship_speed_factor
if self.moving_left and self.rect.left > self.screen_rect.left:
self.center -= self.ai_settings.ship_speed_factor
self.rect.centerx = self.center
def blitme(self):
"""在指定位置绘制飞船"""
self.screen.blit(self.image, self.rect)
if self.super_mode:
# 无敌模式,绘制金色边框
pygame.draw.rect(self.screen, (200, 200, 0),(self.rect), 2)
def center_ship(self):
self.rect.centerx = self.screen_rect.centerx