码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Pygame游戏实战四:打砖块


     介绍模块

    本游戏使用的是由Pycharm中的pygame模块来实现的,也可以在python中运行。通过Pygame制作一个打砖块,通过击打砖块来得到更多的分数,看看这个是你小时候玩的游戏吗?

    最小开发框架

    详情请看此文章:
    Pygame游戏模块介绍二:最小开发框架代码_pygame最小开发框架_牧子川的博客-CSDN博客

    Pygame和sys模块

    1. import pygame # 制作游戏时要使用的模块
    2. import sys # python的标准库,对内部各功能模块进行初始化创建,系统模块

    random模块

    需要在屏幕上随机生成食物的位置,通过随机一个位置来表示食物的位置

    from random import randint

    详情请看此文章:Pygame游戏模块介绍一:random模块简介_random 范围_牧子川的博客-CSDN博客

    相关功能  

    【童年游戏】打砖块

    砖块设定

    每次游戏出现的砖块数量、位置、大小均不同

    1. for row in range(brick_rows):
    2. for col in range(brick_cols):
    3. brick_x = col * (brick_width + 5) + 5 # +5 是为了增加砖块之间的间隔
    4. brick_y = row * (brick_height + 5) + 50
    5. brick_width = random.randint(40, 80) # 随机砖块的宽度
    6. bricks.append(pygame.Rect(brick_x, brick_y, brick_width, brick_height))

    小球设置

    1. ball_x = random.randint(ball_radius, WINDOW_WIDTH - ball_radius)
    2. ball_y = random.randint(ball_radius, WINDOW_HEIGHT // 2)
    3. ball_speed_x = 5
    4. ball_speed_y = 5

    碰撞检测

    1. # 碰撞检测和游戏逻辑
    2. if ball_x < ball_radius or ball_x > WINDOW_WIDTH - ball_radius:
    3. ball_speed_x *= -1
    4. if ball_y < ball_radius:
    5. ball_speed_y *= -1
    6. elif ball_y > WINDOW_HEIGHT - ball_radius:
    7. initialize_game() # 重新初始化游戏
    8. game_over = True # 游戏结束

    键盘移动

    1. keys = pygame.key.get_pressed()
    2. if keys[pygame.K_LEFT] and paddle_x > 0:
    3. paddle_x -= paddle_speed
    4. if keys[pygame.K_RIGHT] and paddle_x < WINDOW_WIDTH - paddle_width:
    5. paddle_x += paddle_speed

    游戏结束

    1. game_over_text = font.render("Game Over!", True, BRICK_COLOR)
    2. window.blit(game_over_text, (WINDOW_WIDTH // 2 - 100, WINDOW_HEIGHT // 2 - 20))

    挡板与小球

    1. # 绘制板
    2. pygame.draw.rect(window, BRICK_COLOR, (paddle_x, paddle_y, paddle_width, paddle_height))
    3. # 绘制弹球
    4. pygame.draw.circle(window, BRICK_COLOR, (ball_x, ball_y), ball_radius)

    图片界面  

    扩展可添加功能

    1.砖块改变,打击砖块出现不同的分数

    2.增加鼠标控制

    3.小球移动速度改变

    4.添加背景音乐

    5.砖块需要击打多次才能得分

    源码获取

    GitHub 打砖块

     欢迎关注我的公众号:@AI算法与电子竞赛    

    ​

    硬性的标准其实限制不了无限可能的我们,所以啊!少年们加油吧!

  • 相关阅读:
    Redis 分布式锁一步步优化过程
    欧拉函数——可见的点
    力扣438:找到字符串中所有字母异位词
    已解决javax.transaction.InvalidTransactionException:事务无效的正确解决方法,亲测有效!!!
    C++vector模拟实现
    直播预告|OceanBase 社区版 4.0 全解析
    巯基功能化相思子毒素;Thiol-Abrin Rhodamine Conjugate(AT);SH-AT
    SpringBoot——静态资源及原理
    外包干了2个月,技术退步明显...
    LeetCode,回溯算法
  • 原文地址:https://blog.csdn.net/qq_48764574/article/details/133893883
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号