当前位置: 首页 > news >正文

Kivy 乒乓游戏教程 基于Minconda或Anconda 运行

文章目录

    • Kivy 乒乓游戏教程 基于Minconda或Anconda 运行
      • 为什么写这篇笔记
        • 扩展阅读
      • 笔者环境
      • 安装`Kivy`
        • 参考
      • 运行演示
      • 乒乓球游戏教程
        • main.py
        • pong.kv

Kivy 乒乓游戏教程 基于Minconda或Anconda 运行

为什么写这篇笔记

Python部署Android软件apk或者aak早有耳闻,而Kivy就是其中最臭名昭著的(开玩笑),所以有了这篇用于展示 乒乓游戏教程 的文章

不过这篇文章 不会讲解具体的代码 逻辑以及意义,只是单纯的测试与演示 ,有望在其他文章中编写

扩展阅读

Kivy应用程序

笔者环境

  • 系统环境: Fedora Linux 42 (Workstation Edition)
  • Python环境: Python 3.13.X
  • Conda/Minconda环境:conda 25.7.0

安装Kivy

因为笔者的环境是 Linux上的Minconda所以使用如下命令

conda install kivy -c conda-forge
参考

Anconda安装Kivy

其他各种平台安装

运行演示

PingPongGame

乒乓球游戏教程

下面的俩个文件要在同一文件夹下

main.py
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import (NumericProperty, ReferenceListProperty, ObjectProperty
)
from kivy.vector import Vector
from kivy.clock import Clockclass PongPaddle(Widget):score = NumericProperty(0)def bounce_ball(self, ball):if self.collide_widget(ball):vx, vy = ball.velocityoffset = (ball.center_y - self.center_y) / (self.height / 2)bounced = Vector(-1 * vx, vy)vel = bounced * 1.1ball.velocity = vel.x, vel.y + offsetclass PongBall(Widget):velocity_x = NumericProperty(0)velocity_y = NumericProperty(0)velocity = ReferenceListProperty(velocity_x, velocity_y)def move(self):self.pos = Vector(*self.velocity) + self.posclass PongGame(Widget):ball = ObjectProperty(None)player1 = ObjectProperty(None)player2 = ObjectProperty(None)def serve_ball(self, vel=(4, 0)):self.ball.center = self.centerself.ball.velocity = veldef update(self, dt):self.ball.move()# bounce off paddlesself.player1.bounce_ball(self.ball)self.player2.bounce_ball(self.ball)# bounce ball off bottom or topif (self.ball.y < self.y) or (self.ball.top > self.top):self.ball.velocity_y *= -1# went off to a side to score point?if self.ball.x < self.x:self.player2.score += 1self.serve_ball(vel=(4, 0))if self.ball.right > self.width:self.player1.score += 1self.serve_ball(vel=(-4, 0))def on_touch_move(self, touch):if touch.x < self.width / 3:self.player1.center_y = touch.yif touch.x > self.width - self.width / 3:self.player2.center_y = touch.yclass PongApp(App):def build(self):game = PongGame()game.serve_ball()Clock.schedule_interval(game.update, 1.0 / 60.0)return gameif __name__ == '__main__':PongApp().run()
pong.kv
#:kivy 1.0.9<PongBall>:size: 50, 50 canvas:Ellipse:pos: self.possize: self.size          <PongPaddle>:size: 25, 200canvas:Rectangle:pos: self.possize: self.size<PongGame>:ball: pong_ballplayer1: player_leftplayer2: player_rightcanvas:Rectangle:pos: self.center_x - 5, 0size: 10, self.heightLabel:font_size: 70  center_x: root.width / 4top: root.top - 50text: str(root.player1.score)Label:font_size: 70  center_x: root.width * 3 / 4top: root.top - 50text: str(root.player2.score)PongBall:id: pong_ballcenter: self.parent.centerPongPaddle:id: player_leftx: root.xcenter_y: root.center_yPongPaddle:id: player_rightx: root.width - self.widthcenter_y: root.center_y
http://www.dtcms.com/a/523817.html

相关文章:

  • 摄影的网站设计特点同城发广告的平台有哪些
  • 【Python高级编程】类和实例化
  • 徐州市建设局交易网站网站设计的公司运营接单
  • 虹科亮相2025嵌入式会议 | 解读CAN XL与TSN如何驱动下一代E/E架构创新
  • VxWorks系统下龙芯平台的PCI驱动与硬件配置
  • 【2026计算机毕业设计】基于Django的新闻资讯平台的设计与实现
  • Linux小课堂: 基于 SSH 的安全文件传输与增量同步机制深度解析之从 wget 到 rsync 的全流程实战
  • 使用ffmpeg裁剪视频
  • 凡科建站网站西安全网推广公司
  • 免费网站建设程序下载建站用什么工具
  • 香港科技大学工学院2026/2027年度研究生课程招生宣讲会-重庆大学专场
  • Qualcomm SNPE(Neural Processing SDK)集成到 OpenWRT + QCS6490 的完整配置指南
  • LangGraph 官方教程:聊天机器人之一
  • Git与Gitee使用中的几个问题
  • 关于淘宝店网站建设的可行性报告网站建设的公司
  • Flink DatastreamAPI详解(四)
  • 线性代数直觉(四):找到特征向量
  • iis网站服务器 建立出现问题微信小程序制作费用是多少
  • 亚马逊云代理商:2025 AWS 服务器配置趋势走向怎么样?
  • 建设银行网站修改手机号湖南省和城乡住房建设厅网站
  • 云电脑与云手机的关系
  • 加性高斯白噪声和码间串扰的信道中Ungerboeck和Forney接收机的区别
  • 厨房电子秤芯片方案:SIC8833
  • 2025MathorCup大数据竞赛A题B题选题建议与分析,思路模型
  • 做网站的公司属于什么行业工商银行手机银行app下载
  • FastGateway 容器化部署与安全集成实践:技术架构与生态融合
  • 流媒体网站建设规划 所需设备网站建设方案500字
  • 非视距城市合成孔径雷达中的多径利用——论文阅读
  • 蓝牙 nRF52732 最简操作
  • 如何做简单视频网站wordpress云服务器配置