项目地址

直接上代码

代码解析

打砖块的游戏规则

数据结构抽象

小球的移动

计算小球和砖块的碰撞

挡板的移动

总结

交流

100行Python代码实现打砖块游戏,无需第三方依赖

本文发表于入职啦(公众号: ruzhila) 大家可以访问入职啦学习更多的编程实战。

🎉 完全用Python的tkinter实现打砖块游戏,无需第三方依赖👏 🎉

项目地址

代码已经开源, breakout-py 👏 欢迎Star

代码运行效果:

所有的项目都在github上开源:100-line-code 欢迎Star 👏

用100行代码的不同语言(Java、Python、Go、Javascript、Rust)实现项目,通过讲解项目的实现,帮助大家学习编程

我们会定期在群里分享最新的项目实战代码,包括不同语言的实现

老师还会详细讲解代码优化的思路,扫码加入实战群:

入群学习

直接上代码

code

代码解析

打砖块是经典的游戏,我们用100行代码实现了这个游戏,这次仍然使用tkinter库,这个库是Python自带的,无需安装

打砖块的游戏规则

游戏分为3个部分:挡板、小球、砖块

  • 挡板:用来接住小球,防止小球掉落,通过键盘的左右键控制挡板的移动
  • 小球:用来击打砖块,当小球击打到砖块时,砖块消失,小球碰到砖块、挡板、墙壁时会反弹
  • 砖块:用来被小球击打,固定位置

数据结构抽象

根据游戏规则,我们把游戏中的元素抽象成类,挡板、小球、砖块都是游戏中的元素,我们可以把它们抽象成类

class Ball:
    # 对应小球的位置、速度、半径

class Paddle:
    # 对应挡板的位置、速度、宽度

# 砖块的代码就是普通的rectangle

小球的移动

小球的移动通过self.canvas.move这个方法来移动,不同于其他的游戏引擎,这个方法是直接移动画布上的元素 这样可以减少很多的计算,提高性能

计算小球和砖块的碰撞

hint

  • 27-34行 代码通过计算小球的外型,来判断小球是否碰到了墙壁,如果碰到了,就反弹
  • 第5行 两个物体是否碰撞其实就是两个包围盒是否出现了重叠,这里我们通过计算两个包围盒的位置来判断是否碰撞

挡板的移动

挡板的移动通过键盘事件来控制,通过self.canvas.bind_all方法来绑定键盘事件

当停止按键时,挡板就会停止移动 paddle

总结

打砖块游戏是一个经典的游戏,通过这个项目,我们学习了如何使用Python的tkinter库实现一个游戏

tkinter是虽然很丑,但是好用哈哈哈哈

之所以不选择pygame, 是因为小游戏对性能要求很低,要选择学习门槛比较低的代码,对游戏的主要流程了解才是我们学习的重点

写小型的跨平台的UI程序,tkinter是一个不错的选择

交流

我们构建了一个100行代码项目的实战群,大家可以扫码加入,一起学习编程

入群学习

也可以访问入职啦学习更多的编程实战

所有的代码都在github上开源:100-line-code 欢迎Star 👏

最后祝大家5.1劳动节快乐,多学习多锻炼,提高自己的编程能力,加油!🎉

入职啦

心仪的工作马上入职啦

友情链接:

Copyright© 2024 杭州园中葵科技有限公司 版权所有