以下是一个使用Python语言编写的简单弹珠游戏的代码示例,使用了Pygame库进行图形绘制和事件处理。

import pygame
import random

# 初始化pygame
pygame.init()

# 设置游戏窗口尺寸
window_size = (800, 600)
screen = pygame.display.set_mode(window_size)

# 设置游戏标题
pygame.display.set_caption('弹珠游戏')

# 定义颜色
black = (0, 0, 0)
white = (255, 255, 255)
red = (255, 0, 0)
green = (0, 255, 0)

# 定义球和板子的初始位置和速度
ball_x = 400
ball_y = 300
ball_speed_x = 5
ball_speed_y = 5
paddle_x = 350
paddle_y = 580
paddle_speed = 0

# 定义球和板子的大小
ball_radius = 10
paddle_width = 100
paddle_height = 10

# 定义砖块的大小和位置
brick_width = 80
brick_height = 20
brick_gap = 10
brick_rows = 5
brick_cols = 10
brick_offset_x = (window_size[0] - (brick_width + brick_gap) * brick_cols + brick_gap) // 2
brick_offset_y = 50

# 定义砖块颜色列表
brick_colors = [red, green, white, white, white]

# 定义砖块数组
bricks = []
for i in range(brick_rows):
    row = []
    for j in range(brick_cols):
        brick_x = brick_offset_x + j * (brick_width + brick_gap)
        brick_y = brick_offset_y + i * (brick_height + brick_gap)
        brick_color = brick_colors[i]
        row.append(pygame.Rect(brick_x, brick_y, brick_width, brick_height))
    bricks.append(row)

# 创建一个时钟对象
clock = pygame.time.Clock()

# 循环执行游戏
while True:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                paddle_speed = -5
            elif event.key == pygame.K_RIGHT:
                paddle_speed = 5
        elif event.type == pygame.KEYUP:
            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
                paddle_speed = 0

    # 移动板子
    paddle_x += paddle_speed
    if paddle_x < 0:
        paddle_x = 0
    elif paddle_x > window_size[0] - paddle_width:
        paddle_x = window_size[0] - paddle_width

    # 移动球
    ball_x += ball_speed_x
    ball_y += ball_speed_y

    # 碰撞检测
    if ball_x < ball_radius or ball_x > window_size[0] - ball_radius:
        ball_speed_x = -ball_speed_x
    if ball_y < ball_radius:
        ball_speed_y = -ball_speed_y
    elif ball_y > window_size[1] - ball_radius:
        # 游戏失败
        pygame.quit()
        exit()
    if pygame.Rect(paddle_x, paddle_y, paddle_width, paddle_height).colliderect(pygame.Rect(ball_x - ball_radius, ball_y - ball_radius, ball_radius * 2, ball_radius * 2)):
        ball_speed_y = -ball_speed_y
    for row in bricks:
        for brick in row:
            if brick.colliderect(pygame.Rect(ball_x - ball_radius, ball_y - ball_radius, ball_radius * 2, ball_radius * 2)):
                row.remove(brick)
                ball_speed_y = -ball_speed_y
                break

    # 绘制图形
    screen.fill(black)
    pygame.draw.circle(screen, white, (ball_x, ball_y), ball_radius)
    pygame.draw.rect(screen, white, (paddle_x, paddle_y, paddle_width, paddle_height))
    for i, row in enumerate(bricks):
        for j, brick in enumerate(row):
            pygame.draw.rect(screen, brick_colors[i], brick)
    pygame.display.flip()

    # 控制帧率
    clock.tick(60)

代码中包含了以下关键部分:

  • 初始化Pygame: 使用 pygame.init() 初始化 Pygame 模块。
  • 设置窗口: 使用 pygame.display.set_mode() 设置游戏窗口大小,使用 pygame.display.set_caption() 设置窗口标题。
  • 定义颜色: 定义了一些常用的颜色,方便后面使用。
  • 定义游戏元素: 定义了球、板子和砖块的初始位置、速度和大小等属性。
  • 创建砖块: 使用嵌套循环创建砖块数组,每个砖块用 pygame.Rect 对象表示。
  • 游戏循环: 使用 while True 循环控制游戏逻辑,在循环中处理用户事件、移动游戏元素、进行碰撞检测和绘制图形。
  • 事件处理: 使用 pygame.event.get() 获取用户事件,例如键盘按下、鼠标点击等。
  • 移动元素: 根据速度更新球和板子的位置。
  • 碰撞检测: 使用 pygame.Rect.colliderect() 检测球和板子、球和砖块之间的碰撞。
  • 绘制图形: 使用 pygame.draw 模块绘制球、板子和砖块。
  • 控制帧率: 使用 clock.tick(60) 控制游戏每秒的帧数,使其保持流畅的运行速度。

这个简单的弹珠游戏展示了使用 Python 和 Pygame 库进行游戏开发的基本流程,可以作为学习游戏编程的入门示例。

Python弹珠游戏代码示例:入门级教程

原文地址: https://www.cveoy.top/t/topic/mXfA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录