python小游戏:打砖块完整代码

news2024/11/18 17:28:47

在这里插入图片描述代码如下

import pygame
import sys

# 初始化Pygame
pygame.init()

# 游戏窗口尺寸
WIDTH, HEIGHT = 800, 600

# 颜色定义
WHITE = (255, 255, 255)
BLUE = (0, 0, 255)
GREEN = (0, 255, 0)

# 创建游戏窗口
win = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("打砖块游戏")

# 定义板和球的初始位置
paddle_x = 350
paddle_y = 550
ball_x = 400
ball_y = 400

# 定义板和球的移动速度
paddle_speed = 15
ball_x_speed = 7
ball_y_speed = 7

# 定义板的尺寸
paddle_width = 100
paddle_height = 10

# 定义球的尺寸
ball_radius = 10

# 初始化砖块
bricks = []
brick_width = 70
brick_height = 20
brick_color = BLUE
brick_spacing = 5

for i in range(8):
    for j in range(10):
        brick = pygame.Rect(j * (brick_width + brick_spacing), i * (brick_height + brick_spacing), brick_width, brick_height)
        bricks.append(brick)

# 游戏主循环
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]:
        paddle_x -= paddle_speed
    if keys[pygame.K_RIGHT]:
        paddle_x += paddle_speed

    # 更新球的位置
    ball_x += ball_x_speed
    ball_y += ball_y_speed

    # 球碰到窗口边界时反弹
    if ball_x <= 0 or ball_x >= WIDTH:
        ball_x_speed *= -1
    if ball_y <= 0:
        ball_y_speed *= -1

    # 球碰到板时反弹
    if ball_y >= paddle_y - ball_radius and paddle_x <= ball_x <= paddle_x + paddle_width:
        ball_y_speed *= -1

    # 检查球是否碰到砖块
    for brick in bricks:
        if brick.colliderect(ball_x - ball_radius, ball_y - ball_radius, ball_radius * 2, ball_radius * 2):
            ball_y_speed *= -1
            bricks.remove(brick)

    # 清空屏幕
    win.fill(WHITE)

    # 绘制板
    pygame.draw.rect(win, GREEN, (paddle_x, paddle_y, paddle_width, paddle_height))

    # 绘制球
    pygame.draw.circle(win, GREEN, (ball_x, ball_y), ball_radius)

    # 绘制砖块
    for brick in bricks:
        pygame.draw.rect(win, brick_color, brick)

    # 更新屏幕
    pygame.display.flip()

    # 控制帧率
    pygame.time.delay(20)

# 游戏结束,关闭Pygame
pygame.quit()
sys.exit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1109883.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年高校大数据实验室建设及大数据实训平台整体解决方案

大数据实验室作为支撑高校人培方案实施的核心设施&#xff0c;大数据实训实验室的建设一定要与学科建设、人才培养充分融合&#xff0c;是一个包含物理空间硬件资源软件资源课程内容的系统化工程。高校大数据实验室建设&#xff0c;除了考虑物理空间与硬件资源外&#xff0c;重…

实验室超声波清洗机的作用

实验室超声波清洗机的作用是什么&#xff1f;顾名思义&#xff0c;其主要作用是清洗。超声波清洗机是实验室中必不可少的清洗装置&#xff0c;利用超声波在液体中的空化效应&#xff0c;产生空化气泡&#xff0c;由于正负压的作用下&#xff0c;空化气泡会在短时间内生成并爆破…

移动协同办公系统,让工作更轻松,生活更美好!

在今天这个信息化、数字化的时代&#xff0c;人们对于工作效率的需求越来越高。随着移动互联网的普及&#xff0c;越来越多的人开始将工作与生活的界限模糊化。在这个背景下&#xff0c;移动协同办公系统应运而生&#xff0c;它打破了传统办公模式的束缚&#xff0c;让工作更轻…

通讯协议学习之路:QSPI协议理论

通讯协议之路主要分为两部分&#xff0c;第一部分从理论上面讲解各类协议的通讯原理以及通讯格式&#xff0c;第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN&#xff1b;视频会发布在bilibili(UID:399951374) 一、…

【动态规划】392. 判断子序列、115. 不同的子序列

提示&#xff1a;努力生活&#xff0c;开心、快乐的一天 文章目录 392. 判断子序列&#x1f4a1;解题思路&#x1f914;遇到的问题&#x1f4bb;代码实现&#x1f3af;题目总结 115. 不同的子序列&#x1f4a1;解题思路&#x1f914;遇到的问题&#x1f4bb;代码实现&#x1f3…

进程地址空间初识

进程地址空间&#xff1a; 空间布局图&#xff1a; 下面来看这样一段代码&#xff1a; 对应执行的结果如下&#xff1a; 可以看到一个很奇怪的现象&#xff1a; g_val的值不同&#xff0c;却用的是同一块地址 这是为什么&#xff1f; 说明对应的地址一定不是物理地址&#…

EF执行迁移时提示provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的

ef在执行时提示provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的。 只需要在数据库链接字符串后增加EncryptTrue;TrustServerCertificateTrue;即可 再次执行

c++生成随机数(猜数字游戏)

如果之前学过python的小伙伴看到随机数这个知识点肯定会觉得很简单&#xff0c;但是c的随机数就需要注意一些小细节了~ 先来给大家展示一下python的随机数&#xff1a; import random #导入随机数库 arandom.randint(100,200)#随机100-200之间的数字 以下是c的&a…

【黑夜送书第一期】好书来袭,AI时代程序员/项目经理开发之道送3本~

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师…

Elasticsearch:生成式人工智能带来的社会转变

作者&#xff1a;JEFF VESTAL 了解 Elastic 如何走在大型语言模型革命的最前沿 – 通过提供实时信息并将 LLM 集成到数据分析的搜索、可观察性和安全系统中&#xff0c;帮助用户将 LLM 提升到新的高度。 iPhone 社会转变&#xff1a;新时代的黎明 曾几何时&#xff0c;不久前…

毫米波雷达2-雷达的工作模式

文章目录 flash mode: 用于烧写functional mode: Power off the board and remove the jumper from only header SOP2 (this puts the board back in functional mode) flash mode: 用于烧写 functional mode: Power off the board and remove the jumper from only header SOP…

配电房环境智能监控系统:守护电力设施,保障安全运行

随着电力系统的日益复杂化&#xff0c;配电房的环境监控显得尤为重要。传统的监控方式已经无法满足现代配电房的需求&#xff0c;因此&#xff0c;配电房环境智能监控系统应运而生。 一、系统概述 力安科技电易云配电房环境智能监控系统是一款集成了环境参数监测、设备运行…

当AI遇上3D建模:一场创意与技术的完美碰撞!

在这个充满无限可能的时代&#xff0c;科技的发展日新月异&#xff0c;让我们见证了一场创意与技术的完美碰撞——AI与3D建模的结合。这种结合为我们开辟了一个全新的领域&#xff0c;让我们在虚拟世界中自由挥洒创意&#xff0c;为现实世界创造更多的可能性。 3D建模AI生成是…

Windows下定时下载Linux服务器的数据库备份文件(pscp+bat脚本+定时任务)

下载传输软件pscp Download PuTTY: latest release (0.79) 创建bat执行脚本 echo 删除旧的备份文件 del D:\db_bk\*.dbecho 下载新的备份文件 D:\Programs\pscp -P 22 -pw youPassword youName192.168.1.1:/home/backup/test.db D:\db_bk\ 设置定时任务 1.使用任务计划程…

2023年【天津市安全员C证】报名考试及天津市安全员C证操作证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 天津市安全员C证报名考试是安全生产模拟考试一点通生成的&#xff0c;天津市安全员C证证模拟考试题库是根据天津市安全员C证最新版教材汇编出天津市安全员C证仿真模拟考试。2023年【天津市安全员C证】报名考试及天津市…

代码与细节(一)

在用到 Java17的新特性 Unmodifiable Lists 时不知道你是否和我有同样的惊讶 为什么弄了这么多重载方法&#xff1f; 先说结论&#xff1a;为了性能。 其实一细想&#xff0c;都能想明白&#xff1a;varargs(可变参数) 的背后是数组的内存分配和初始化&#xff0c;相比正常的…

36张图详解网络基础知识

下午好&#xff0c;我的网工朋友。 在网工这行&#xff0c;只要是面试&#xff0c;一般都难逃网络协议相关的问题吧。 不管是OSI还是TCP/IP&#xff0c;这都是非常重要、基础的知识&#xff0c;很多知识点都是以它们为基础去串联的。 作为网络世界的底层技术&#xff0c;掌握…

外贸行业常用英文邮件模板分享

外贸邮件营销可以帮助企业扩大客户群、提高客户忠诚度、降低营销成本、提高营销效果、增强客户沟通和提高客户满意度等方面具有重要作用和优势&#xff0c;U-Mail邮件营销平台给大家分享一些外贸企业常用的英文邮件模板 以下是一些英文邮件模板案例&#xff0c;供您参考&#x…

使用Axure RP和内网穿透技术制作静态站点并实现公网访问

文章目录 前言1.在AxureRP中生成HTML文件2.配置IIS服务3.添加防火墙安全策略4.使用cpolar内网穿透实现公网访问4.1 登录cpolar web ui管理界面4.2 启动website隧道4.3 获取公网URL地址4.4. 公网远程访问内网web站点4.5 配置固定二级子域名公网访问内网web站点4.5.1创建一条固定…

【LeetCode:1726. 同积元组 | 哈希表】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…