介绍
本项目演示了如何使用 Python 中的 Pygame 库创建一个复杂的满天星游戏。玩家可以控制一个飞船在屏幕上移动,并射击星星。游戏包括多个模块,每个模块负责不同的功能。
环境设置
确保已经安装了 Python 和 Pygame 库。你可以使用以下命令安装 Pygame:
pip install pygame
项目分布
main.py
: 包含游戏的主要逻辑。sprites.py
: 包含游戏中的精灵类。settings.py
: 包含游戏的设置参数。assets/
: 包含游戏所需的图像资源。
代码实现
main.py
import pygame
import sys
from settings import Settings
from sprites import Player, Star
import random
class Game:
def __init__(self):
pygame.init()
self.settings = Settings()
self.screen = pygame.display.set_mode((self.settings.screen_width, self.settings.screen_height))
pygame.display.set_caption("满天星游戏")
self.clock = pygame.time.Clock()
self.all_sprites = pygame.sprite.Group()
self.stars = pygame.sprite.Group()
self.player = Player(self)
self.all_sprites.add(self.player)
self.run()
def run(self):
while True:
self.clock.tick(self.settings.FPS)
self.events()
self.update()
self.draw()
def events(self):
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
def update(self):
self.all_sprites.update()
self.spawn_stars()
def draw(self):
self.screen.fill(self.settings.BLACK)
self.all_sprites.draw(self.screen)
pygame.display.flip()
def spawn_stars(self):
if len(self.stars) < self.settings.MAX_STARS:
for _ in range(self.settings.MAX_STARS - len(self.stars)):
star = Star(self)
self.all_sprites.add(star)
self.stars.add(star)
if __name__ == "__main__":
Game()
sprites.py
import pygame
import random
from settings import Settings
class Player(pygame.sprite.Sprite):
def __init__(self, game):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load('assets/player.png')
self.rect = self.image.get_rect()
self.rect.centerx = game.settings.screen_width / 2
self.rect.bottom = game.settings.screen_height - 50
self.speedx = 0
def update(self):
self.speedx = 0
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.speedx = -5
if keys[pygame.K_RIGHT]:
self.speedx = 5
self.rect.x += self.speedx
if self.rect.right > Settings().screen_width:
self.rect.right = Settings().screen_width
if self.rect.left < 0:
self.rect.left = 0
class Star(pygame.sprite.Sprite):
def __init__(self, game):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load('assets/star.png')
self.rect = self.image.get_rect()
self.rect.x = random.randrange(Settings().screen_width - self.rect.width)
self.rect.y = random.randrange(-100, -40)
self.speedy = random.randrange(1, 8)
def update(self):
self.rect.y += self.speedy
if self.rect.top > Settings().screen_height + 10:
self.rect.x = random.randrange(Settings().screen_width - self.rect.width)
self.rect.y = random.randrange(-100, -40)
self.speedy = random.randrange(1, 8)
settings.py
class Settings:
def __init__(self):
self.screen_width = 800
self.screen_height = 600
self.BLACK = (0, 0, 0)
self.FPS = 60
self.MAX_STARS = 100
详细解释
main.py
包含了游戏的主要逻辑,负责创建游戏对象、处理事件、更新游戏状态和绘制游戏界面。sprites.py
包含了游戏中的精灵类,包括玩家飞船和星星,每个精灵类负责自己的更新和绘制。settings.py
包含了游戏的设置参数,如屏幕大小、颜色等。
总结
本项目使用 Pygame 库创建了一个复杂的满天星游戏,包括玩家飞船和多个星星,玩家可以控制飞船移动并射击星星。
扩展复杂的功能
你可以进一步扩展游戏功能,例如添加背景音乐、增加更多种类的星星、实现碰撞检测、设计关卡系统等,使游戏更加丰富和有趣。
通过专栏《专栏Python实现复杂小游戏源码教程》(点击可跳转)进一步了解扩展游戏的功能