Python小游戏:避敌者 (Enemy Dodger) 源码

621Views
No Comments

共计 3316 个字符,预计需要花费 9 分钟才能阅读完成。

Python小游戏:避敌者 (Enemy Dodger) 源码

游戏名称

避敌者 (Enemy Dodger)

游戏介绍

避敌者 (Enemy Dodger) 是一个简单而有趣的Python游戏。玩家通过左右移动来躲避从屏幕上方掉落的敌人,并尽量生存更长时间以获得更高的分数。游戏具有简洁的界面和直观的操作,适合初学者和休闲玩家。

完整的游戏代码

以下是完整的游戏代码,包含详细的注释和功能说明:

import pygame
import random
import sys

# 初始化Pygame
pygame.init()

# 设置游戏窗口大小
screen = pygame.display.set_mode((800, 600))

# 设置游戏标题
pygame.display.set_caption("避敌者 (Enemy Dodger)")

# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)

# 定义玩家角色尺寸和初始位置
player_size = 50
player_pos = [screen.get_width()//2, screen.get_height()-2*player_size]

# 定义敌人角色尺寸和初始位置
enemy_size = 50
enemy_pos = [random.randint(0, screen.get_width()-enemy_size), 0]

# 设置游戏速度
speed = 10

# 游戏循环标志
game_over = False
start_game = False

# 设置时钟控制游戏速度
clock = pygame.time.Clock()

# 分数
score = 0
font = pygame.font.SysFont("monospace", 35)

def draw_text(text, font, color, surface, x, y):
    textobj = font.render(text, 1, color)
    textrect = textobj.get_rect()
    textrect.topleft = (x, y)
    surface.blit(textobj, textrect)

def game_over_screen():
    screen.fill(BLACK)
    draw_text('游戏结束 (Game Over)', font, WHITE, screen, screen.get_width()//2 - 100, screen.get_height()//2 - 50)
    draw_text('按 Enter 键重新开始 (Press Enter to Play Again)', font, WHITE, screen, screen.get_width()//2 - 200, screen.get_height()//2 + 10)
    draw_text(f'得分 (Score): {score}', font, WHITE, screen, screen.get_width()//2 - 60, screen.get_height()//2 - 10)
    pygame.display.update()

def start_screen():
    screen.fill(BLACK)
    draw_text('按 Enter 键开始 (Press Enter to Start)', font, WHITE, screen, screen.get_width()//2 - 150, screen.get_height()//2 - 50)
    pygame.display.update()

# 游戏主循环
while True:
    while not start_game:
        start_screen()
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
            if event.type == pygame.KEYDOWN:
                if event.key == pygame.K_RETURN:
                    start_game = True
                    game_over = False
                    player_pos = [screen.get_width()//2, screen.get_height()-2*player_size]
                    enemy_pos = [random.randint(0, screen.get_width()-enemy_size), 0]
                    score = 0

    while not game_over:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

        # 获取按键状态
        keys = pygame.key.get_pressed()

        # 根据按键移动玩家位置
        if keys[pygame.K_LEFT] and player_pos[0] - speed >= 0:
            player_pos[0] -= speed
        if keys[pygame.K_RIGHT] and player_pos[0] + player_size + speed <= screen.get_width():
            player_pos[0] += speed

        # 更新敌人位置
        enemy_pos[1] += speed

        # 如果敌人超出屏幕,重新生成敌人,并增加分数
        if enemy_pos[1] > screen.get_height():
            enemy_pos = [random.randint(0, screen.get_width()-enemy_size), 0]
            score += 1
            speed += 1  # 增加游戏难度

        # 检测玩家和敌人是否碰撞
        if (player_pos[0] < enemy_pos[0] < player_pos[0] + player_size or player_pos[0] < enemy_pos[0] + enemy_size < player_pos[0] + player_size) and (player_pos[1] < enemy_pos[1] < player_pos[1] + player_size or player_pos[1] < enemy_pos[1] + enemy_size < player_pos[1] + player_size):
            game_over = True

        # 绘制游戏场景
        screen.fill(BLACK)  # 填充背景色为黑色
        pygame.draw.rect(screen, WHITE, (player_pos[0], player_pos[1], player_size, player_size))  # 绘制玩家角色
        pygame.draw.rect(screen, WHITE, (enemy_pos[0], enemy_pos[1], enemy_size, enemy_size))  # 绘制敌人角色

        # 显示分数
        draw_text(f'得分 (Score): {score}', font, WHITE, screen, 10, 10)

        pygame.display.update()  # 更新屏幕显示

        # 控制游戏速度
        clock.tick(30)

    game_over_screen()
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RETURN:
                start_game = False
                break

游戏玩法介绍

  • 游戏名称: 避敌者 (Enemy Dodger)
  • 开始游戏: 启动游戏后,按Enter键开始游戏。
  • 移动玩家: 使用键盘左右方向键(← →)移动玩家,避免与从上方掉落的敌人碰撞。
  • 得分系统: 每次敌人成功躲避玩家得一分,游戏难度会随时间逐渐增加。
  • 游戏结束: 当玩家与敌人碰撞时,游戏结束,显示最终得分,按Enter键重新开始游戏。

使用说明

  1. 确保已安装Pygame库。
  2. 将上述代码保存为enemy_dodger.py文件。
  3. 打开终端或命令提示符,导航到保存enemy_dodger.py的目录。
  4. 运行命令python enemy_dodger.py启动游戏。
  5. 按照屏幕提示进行操作,享受游戏。

正文完
 0
binbin
Copyright notice: Our original article, by binbin 2024-05-25 publish, total 3316 words.
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
Comment(No Comments)