之前小帅b分享过这个


Python除了做ai,还能干啥?

其中放了张 Kivy 的图



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java


什么是 Kivy 呢
简单点说它就是一个 Python 库
你可以使用它开发 APP


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_02


像你常看到的用户界面程序多点触控程序都可以使用它来实现
而且在不同的操作系统中的APP都可以使用它来实现

使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_03

刚好有 b 友问起
“怎么玩呢”
那么接下来就是

学习 Python 的正确姿势

使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_04


(此处应该刷一波:爷青回

今天
咱们来玩下官方的一个小例子
使用 Kivy 创建一个游戏

使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_05



在你的项目中
创建一个 main.py
然后导入 Kivy 
创建一个 App 实例



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_06




这样就是最简单的使用
不过现在运行起来啥也没有就一个黑乎乎的界面


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_07





使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_08


我们来添加一下组件导入 UI 库 Widget
创建一个组件 Widget 实例类然后在 MyAPP 中调用它



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_09




这样我们就可以在MyGame中写界面了
一般来说UI分离出来写会好一点
我们可以创建一个 kv 文件分离出来专门写 UI
比如我们想在 MyGame 中画一条白色金箍棒
那么就可以这样
创建一个 my.kv在里面定义 MyGame然后画一个 canvas定义好位置和大小



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_10




运行起来就是这样铛铛档



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_11




接着在两边添加分数
可以使用 Label 组件来定义文本


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_12




默认为 0 分



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_13




接下来添加个球
可以创建一个球类


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_14




同样的在 kv 文件中添加组件
可以在 MyGame 中添加 MyBall



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_15




这样就可以在当前对象画球了~


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_16




看,球


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_17




那怎么让它动起来呢
我们知道要让球动起来
就是以一定的速度不停的改变球的位置


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_18




可以先在 x 和 y 轴定义它的速度


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_19


那么要让球动起来就是要不停的去改变球的位置我们可以使用 Clock 来创建定时调用
比如我们要一秒调用 60 次 update就可以这样


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_20



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_21




好爽啊



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_22




那么我们在 update 方法中不断改变球的位置就可以了

在 kv 文件中定义 ball 对象 id绑定好



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_23




这样我们就可以在 py 中
拿到球对象了

使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_24



然后就可以在 update 方法中让球运动起来
如果碰到边边角角就让它反向操作


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_25




我们还可以定义一个发球方法
也就是让它从中间随机发球


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_26




方法写好了那么现在就可以让它跑起来啦


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_27





走起



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_28





使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_29

接下来把左右两个玩家的棒棒画出来

同样的我们可以创建一个棒棒对象






接着在 kv 中定义
棒棒的大小




接着在 MyGame 中定义这个对象


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_30




这样左边的棒棒就出来啦



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_31





棒棒对象可以共用
右边的棒棒只需要修改下位置就可以了


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_32




这样就都有两根棒棒了


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_33




有了棒棒之后
就要来控制它了
我们要去拖动棒棒
就要知道拖动的位置
可以使用 on_touch_move来监听拖动的位置


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_34




这样我们就可以拿到用户触发的坐标位置






我们只需要让棒棒上下移动就可以了


所以可以通过判断用户点击位置如果是左边就改变左边棒棒的位置 y如果是右边就改变右边棒棒的位置 y





像这样





那么接下来就是接球了我们主要判断的是
球是不是和棒棒碰撞了
如果是
我们让球反弹和改变速度可以使用 collide_widget 方法判断





这里主要是当它们碰撞了那就拿到球的速度然后每次反弹的时候就让球加速
这样如果两个用户一直接到球那么球的移动速度就起飞
我们在 update 方法中
不断的调用它进行判断


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_35




这时候运行起来是这样的



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_36




使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_37

接下来就是记分了
没接到的就对方加分然后重新发球

可以定义一个 score 变量



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_38




然后在 kv 中绑定这个变量



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_39





接着我们在 update 方法中
判断一下
没接到就对方加一分然后重新发球


使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_40




运行一波



使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_41




哈哈
一个简单的游戏就完成啦过程是不是挺好玩的你也去试试吧





关于 Kivy
有时间我会继续给你讲解那么我们下回见啦peace!

更多happy进入小帅b公众号

使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_42




使用 Python Kivy 开发 APP 之:创建一个小游戏玩玩_java_43