Python 图形游戏:躲避方块
下面是一个用 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()
这个游戏非常简单,但它是一个很好的起点,你可以通过添加更多的功能来扩展它,例如:
- 添加更多种类的敌人
- 添加障碍物
- 添加音效和音乐
- 添加排行榜
- 添加多人游戏模式
希望这个教程对你有帮助,祝你玩得开心!
原文地址: https://www.cveoy.top/t/topic/qbHo 著作权归作者所有。请勿转载和采集!