下面是一个用 Python 编写的简单图形游戏的示例代码,玩家需要控制一个红色方块在屏幕底部移动,避免与从屏幕顶部随机下落的蓝色方块碰撞。玩家通过躲避蓝色方块来积累分数,当玩家与蓝色方块发生碰撞时游戏结束,最后显示得分。

import pygame
import random

# 初始化游戏
pygame.init()

# 设置窗口尺寸
width, height = 800, 600
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption('图形游戏')

# 设置颜色
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)

# 玩家初始位置和速度
player_pos = [width/2, height-50]
player_speed = 10

# 创建敌人
enemy_size = 50
enemy_pos = [random.randint(0, width-enemy_size), 0]
enemy_list = [enemy_pos]

# 设置分数
score = 0

# 设置游戏结束标志
game_over = False

# 游戏主循环
clock = pygame.time.Clock()
while not game_over:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        if event.type == pygame.KEYDOWN:
            x = player_pos[0]
            if event.key == pygame.K_LEFT:
                x -= player_speed
            elif event.key == pygame.K_RIGHT:
                x += player_speed
            player_pos[0] = x

    # 更新玩家位置
    player_pos[0] += player_speed
    if player_pos[0] < 0:
        player_pos[0] = 0
    elif player_pos[0] > width - 50:
        player_pos[0] = width - 50

    # 更新敌人位置
    for idx, enemy_pos in enumerate(enemy_list):
        if enemy_pos[1] >= 0 and enemy_pos[1] < height:
            enemy_pos[1] += 10
        else:
            enemy_list.pop(idx)
            score += 1

    # 生成新敌人
    if len(enemy_list) < 10:
        x = random.randint(0, width-enemy_size)
        y = 0
        enemy_list.append([x, y])

    # 碰撞检测
    for enemy_pos in enemy_list:
        if enemy_pos[1] >= player_pos[1] and enemy_pos[1] <= player_pos[1]+50:
            if enemy_pos[0] >= player_pos[0] and enemy_pos[0] <= player_pos[0]+50:
                game_over = True

    # 绘制游戏界面
    screen.fill(BLACK)

    # 绘制玩家
    pygame.draw.rect(screen, RED, (player_pos[0], player_pos[1], 50, 50))

    # 绘制敌人
    for enemy_pos in enemy_list:
        pygame.draw.rect(screen, BLUE, (enemy_pos[0], enemy_pos[1], enemy_size, enemy_size))

    # 显示分数
    font = pygame.font.Font(None, 36)
    text = font.render('Score: ' + str(score), True, WHITE)
    screen.blit(text, (10, 10))

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

    # 设置游戏帧率
    clock.tick(30)

# 游戏结束后显示得分
font = pygame.font.Font(None, 72)
text = font.render('Game Over', True, WHITE)
screen.blit(text, (width/2 - text.get_width()/2, height/2 - text.get_height()/2))
text = font.render('Score: ' + str(score), True, WHITE)
screen.blit(text, (width/2 - text.get_width()/2, height/2 - text.get_height()/2 + 100))
pygame.display.update()

# 游戏结束,等待用户退出
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()

这个游戏非常简单,但它是一个很好的起点,你可以通过添加更多的功能来扩展它,例如:

  • 添加更多种类的敌人
  • 添加障碍物
  • 添加音效和音乐
  • 添加排行榜
  • 添加多人游戏模式

希望这个教程对你有帮助,祝你玩得开心!

Python 图形游戏:躲避方块

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

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