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

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

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

项目地址

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

代码运行效果:

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

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

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

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

直接上代码

在这里插入图片描述

代码解析

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

打砖块的游戏规则

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

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

数据结构抽象

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

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

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

# 砖块的代码就是普通的rectangle
小球的移动

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

计算小球和砖块的碰撞

在这里插入图片描述

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

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

当停止按键时,挡板就会停止移动
在这里插入图片描述

总结

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

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

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

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

交流

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

入群学习

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

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

最后希望大家多学习多锻炼,提高自己的编程能力,加油!🎉

实战编程交流群:
入群学习

  • 25
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值