用python写了一个“跳一跳”游戏

发布于:2024-12-05 ⋅ 阅读:(121) ⋅ 点赞:(0)

文章精选推荐

1 JetBrains Ai assistant 编程工具让你的工作效率翻倍
2 Extra Icons:JetBrains IDE的图标增强神器
3 IDEA插件推荐-SequenceDiagram,自动生成时序图
4 BashSupport Pro 这个ides插件主要是用来干嘛的 ?
5 IDEA必装的插件:Spring Boot Helper的使用与功能特点
6 Ai assistant ,又是一个写代码神器

文章正文

title: 安装 pygame

在 Python 中实现一个简单的 “跳一跳” 游戏,我们可以使用 pygame 库来创建游戏界面并处理游戏逻辑。虽然这个示例不会是一个完全复杂的游戏,但它会展示如何用 Python 编写一个基本的跳跃游戏。

安装 pygame

首先,你需要安装 pygame 库。如果没有安装,可以使用以下命令进行安装:

pip install pygame

游戏逻辑概述

  • 游戏角色会在屏幕上从一个平台跳到另一个平台。
  • 玩家可以通过按下空格键或鼠标点击来控制角色的跳跃。
  • 如果角色没有跳到正确的地方(平台之间的距离不合适),就会掉落并游戏结束。

代码实现

下面是一个简单的 “跳一跳” 游戏实现:

import pygame
import random
import time

# 初始化 pygame
pygame.init()

# 设置游戏窗口
screen_width = 600
screen_height = 400
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption("跳一跳游戏")

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

# 定义时钟
clock = pygame.time.Clock()

# 定义角色参数
player_width = 50
player_height = 50
player_x = screen_width // 4
player_y = screen_height - player_height - 10
player_velocity = 0  # 垂直速度
gravity = 0.5  # 重力加速度

# 定义平台参数
platform_width = 100
platform_height = 10
platforms = []

# 跳跃控制
jumping = False
jump_force = 10  # 初始跳跃力度

# 游戏循环标志
running = True

def create_platforms():
    """生成随机平台"""
    global platforms
    platforms = []
    for i in range(5):
        platform_x = random.randint(50, screen_width - platform_width - 50)
        platform_y = random.randint(100, screen_height - 50)
        platforms.append(pygame.Rect(platform_x, platform_y, platform_width, platform_height))

def draw_player():
    """绘制玩家"""
    pygame.draw.rect(screen, RED, pygame.Rect(player_x, player_y, player_width, player_height))

def draw_platforms():
    """绘制平台"""
    for platform in platforms:
        pygame.draw.rect(screen, GREEN, platform)

def check_collisions():
    """检查是否与平台碰撞"""
    global player_y, player_velocity
    player_rect = pygame.Rect(player_x, player_y, player_width, player_height)
    on_platform = False

    for platform in platforms:
        if player_rect.colliderect(platform):
            if player_velocity > 0 and player_y + player_height <= platform.top:
                player_y = platform.top - player_height  # 在平台上
                player_velocity = 0  # 重置垂直速度
                on_platform = True
                break

    if not on_platform:
        player_velocity += gravity  # 若不在平台上,受重力影响

def jump():
    """跳跃控制"""
    global player_velocity, jumping
    if jumping:
        player_velocity = -jump_force  # 初始跳跃速度向上

def game_over():
    """游戏结束"""
    font = pygame.font.SysFont("Arial", 40)
    game_over_text = font.render("游戏结束", True, BLACK)
    screen.blit(game_over_text, (screen_width // 3, screen_height // 3))
    pygame.display.flip()
    time.sleep(2)

# 创建初始平台
create_platforms()

# 游戏主循环
while running:
    screen.fill(WHITE)

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE and not jumping:
                jumping = True
                jump()

    # 控制玩家的跳跃
    if player_y + player_height < screen_height:
        player_y += player_velocity  # 更新玩家的垂直位置

    check_collisions()

    # 绘制玩家、平台
    draw_player()
    draw_platforms()

    # 检查是否掉出屏幕
    if player_y > screen_height:
        game_over()
        running = False

    # 更新游戏界面
    pygame.display.flip()

    # 控制游戏帧率
    clock.tick(60)

# 退出 pygame
pygame.quit()

代码解析

  1. 初始化和设置:

    • 使用 pygame.init() 初始化 Pygame。
    • 设置游戏屏幕的宽度和高度,创建游戏窗口。
    • 定义了玩家、平台等对象的颜色和大小。
  2. 平台生成:

    • create_platforms() 函数生成了多个随机位置的绿色平台。玩家需要从一个平台跳到下一个平台。
  3. 跳跃控制:

    • jump() 函数通过控制 player_velocity 来控制玩家跳跃的高度。按下空格键时,玩家会向上跳跃。
  4. 碰撞检测:

    • check_collisions() 函数检查玩家是否与平台发生碰撞。如果玩家的矩形与平台的矩形碰撞,则玩家会停留在平台上,跳跃停止。如果没有碰撞,玩家会继续下落,重力加速。
  5. 游戏结束:

    • 如果玩家掉出屏幕下方,游戏结束,显示 “游戏结束” 的文本,并停留 2 秒。
  6. 游戏循环:

    • 通过 while running: 来持续运行游戏,监听用户的输入,更新游戏状态,绘制玩家和平台,并检测是否发生游戏结束。

运行游戏

在运行该代码时,你会看到一个简单的“跳一跳”游戏窗口。玩家通过按下空格键来控制角色的跳跃,目标是跳到下一个平台。如果没跳到平台,就会掉落并结束游戏。

改进和扩展

  • 增加得分机制:可以记录跳跃的次数或角色跳过的平台数。
  • 增加多样化的难度:平台可以逐渐增多或移动,增加游戏难度。
  • 音效和动画:为跳跃、着陆等动作添加音效和动画效果。
  • 背景和美术资源:可以使用图像替代简单的矩形,为角色和平台添加更丰富的背景和视觉效果。

这是一个非常简单的实现,适合用作 Python 游戏开发的入门示例。如果你对游戏开发更感兴趣,可以继续扩展这个游戏,增加更多的功能和特性!