用户:
迷人的树毛蛹jP5x查看:0 回复:0 评论:0 创建时间:2024-03-16T12:19:08
【作品展示】

【作品介绍】
文件在本地,请确保电脑中有这些素材,代码由文心大模型4.0创作
【作品源代码】
import pygame
import sys
# 初始化pygame
pygame.init()
# 设置游戏窗口大小
screen_width = 800
screen_height = 600
screen = pygame.display.set_mode((screen_width, screen_height))
# 设置标题
pygame.display.set_caption("打砖块游戏")
# 加载图片素材
ball_image = pygame.image.load('D:\\素材\\ball.png') # 加载球的图片
paddle_image = pygame.image.load('D:\\素材\\paddle.png') # 加载挡板的图片
brick_image = pygame.image.load('D:\\素材\\brick.png') # 加载砖块的图片
# 设置颜色
WHITE = (255, 255, 255)
# 设置球和挡板的初始位置和速度
ball_x = screen_width // 2
ball_y = screen_height // 2
ball_speed_x = 5
ball_speed_y = 5
paddle_x = screen_width // 2
paddle_y = screen_height - 70 # 根据挡板图片的高度调整
paddle_speed = 10
# 砖块设置
brick_width = brick_image.get_width()
brick_height = brick_image.get_height()
brick_padding = 10 # 砖块之间的间距
brick_offset = 50 # 砖块距离顶部的间距
screen_half_height = screen_height // 2 # 屏幕高度的一半
# 只在上半侧生成砖块
bricks = [] # 存储砖块的列表
for y in range(brick_offset, screen_half_height - brick_height, brick_height + brick_padding):
for x in range(0, screen_width - brick_width, brick_width + brick_padding):
bricks.append(pygame.Rect(x, y, brick_width,
brick_height)) # 直接创建Rect对象存储
# 游戏循环
running = True
while running:
# 处理事件
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 获取按键状态
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] and paddle_x > 0:
paddle_x -= paddle_speed
if keys[pygame.K_RIGHT] and paddle_x < screen_width - paddle_image.get_width():
paddle_x += paddle_speed
# 更新球的位置
ball_x += ball_speed_x
ball_y += ball_speed_y
# 碰撞检测
if ball_x < 0 or ball_x > screen_width - ball_image.get_width():
ball_speed_x *= -1 # 水平速度反向
if ball_y < 0 or ball_y > screen_height - ball_image.get_height():
ball_speed_y *= -1 # 垂直速度反向
# 检测球与挡板的碰撞
paddle_rect = pygame.Rect(
paddle_x, paddle_y, paddle_image.get_width(), paddle_image.get_height())
ball_rect = pygame.Rect(
ball_x, ball_y, ball_image.get_width(), ball_image.get_height())
if paddle_rect.colliderect(ball_rect):
ball_speed_y *= -1 # 垂直速度反向
# 检测球与砖块的碰撞
for brick in bricks[:]: # 使用切片来避免在迭代时修改列表
if brick.colliderect(ball_rect):
bricks.remove(brick) # 移除被击中的砖块
ball_speed_y *= -1 # 垂直速度反向
break # 一次碰撞后跳出循环
# 渲染画面
screen.fill(WHITE) # 清空屏幕并填充背景色
screen.blit(paddle_image, (paddle_x, paddle_y)) # 绘制挡板
screen.blit(ball_image, (ball_x, ball_y)) # 绘制球
for brick in bricks: # 绘制砖块
screen.blit(brick_image, brick)
pygame.display.flip() # 更新屏幕显示
pygame.time.Clock().tick(60) # 控制帧率为60FPS
# 退出pygame
pygame.quit()
sys.exit()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn