猫史档案馆


【Python作品分享】打砖块(由文心大模型4.0创作)

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


【作品展示】

center_image

 

【作品介绍】

文件在本地,请确保电脑中有这些素材,代码由文心大模型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


回复

上一页1 页 / 共 0下一页