入门教程、案例源码、学习资料、读者群
(资料图)
请访问: python666.cn
大家好,欢迎来到 Crossin的编程教室 !
最近有个小伙儿因为在比赛中冲进场地拥抱梅西而出名了。
这种行为当然不可取,他也为此付出了代价。但要说我没有一丁点羡慕和佩服那是不可能的。
于是,我也尬蹭一下这个热点,用Python写了一个「拥抱梅西」的小游戏。
游戏效果是这样的:
游戏规则很简单:
不要被拦截的工作人员追上
抱到梅西(接触一定时长)
定时会增加拦截的工作人员
可以反复拥抱
被追上后游戏结束,显示坚持的时间和拥抱的次数
代码已上传,获取请访问:python666.cn/c/9
或在号内回复关键字:梅西
运行说明
代码使用了游戏框架 pygame-zero 进行开发。之前我们也有发过基于这个框架的游戏:
羊了个羊,但是Python简(li)单(pu)版
如果你对于此框架还不熟悉,可以看下这篇介绍:
PONG - 100行代码写一个弹球游戏
因此运行代码前需先安装模块:
pip install pgzero
用此框架代码看起来与一般代码稍有不同,它更像一个配置脚本,其中会出现很多未定义的方法和变量,因此在很多编辑器里会提示有错,但其实是可以运行的,无需手动增加 import。这也是为什么你会看到我视频里的代码截图有大量的下划线。
pgzero有两种方式运行,一种是通过命令行的 pgzrun 命令;另一种是直接在编辑器中运行。参见官方文档:
https://pygame-zero.readthedocs.io/zh_CN/latest/ide-mode.html
本代码用的是第二种直接运行的方式(需新版pgzero),可直接在IDE中执行。
有部分读者反馈此代码在spyder等一些编辑器中无法运行,类似情况可以尝试第一种传统方法,即把最后一行代码 pgzrun.go() 去掉,然后直接在命令行该目录下运行:
pgzrun iMessi.py
代码简介
如果你对代码的核心逻辑其实比较容易理解。
对于「玩家」来说,就是根据上下左右按键,变换位置坐标;
对于「工作人员」来说,就是根据自身和玩家的相对位置算出移动的方向,不断靠近,如果碰上了就游戏结束
对于「梅西」来说,就是判断是否与玩家碰上,并记录碰上的持续时间
判断是否“碰上”很简单,就是计算一下两个坐标的距离是否小于一定值。
至于角色的移动,粗略的做法是,计算出x轴方向和y轴方向上的速度,然后在update函数中,将原坐标位置加上速度值,得到新的坐标位置。
但在我这次的代码中,为了让跑动更“丝滑”,没有选择直接改变速度,而是根据玩家的按键计算出加速度,然后在update函数中,将原速度值加上加速度值,得到新的速度,再用新的速度去计算新的坐标位置。
# 加速self.speedx += self.fx * self.accself.speedy += self.fy * self.acc# 限制最高速度d = (self.speedx**2 + self.speedy**2)**0.5 / self.speed_maxif d >1:self.speedx /= dself.speedy /= d# 更新坐标self.x += self.speedxself.y += self.speedy
有了这样的设定之后,还有个好处就是可以增加游戏的可玩性,比如你可以设定一种最高速度比玩家快,但是加速度比较小的「工作人员」,玩家就需要通过不停地变换方向来摆脱。
代码中另一个比较复杂的地方是“转向”的细节处理。同样为了更加丝滑,我没有选择直接根据计算出的方向来改变角色贴图方向,而是将计算出的方向作为“目标方向”,然后根据角色当前实际方向与目标方向的偏差,决定是向顺时针还是逆时针方向旋转,直到两个方向小于一定阈值。
# 跑动方向if keyboard.left:self.fx = -1elif keyboard.right:self.fx = 1else:self.fx = 0if keyboard.up:self.fy = -1elif keyboard.down:self.fy = 1else:self.fy = 0# 计算目标方向角度directs = ((135, 180, -135), (90, None, -90), (45, 0, -45))direct = directs[self.fx + 1][self.fy + 1]if direct is None:self.angle_dest = self.angleelse:self.angle_dest = direct # 贴图旋转if abs(self.angle - self.angle_dest) < 5 or abs(self.angle - self.angle_dest) >355:self.angle = self.angle_destelse:if (0 < self.angle - self.angle_dest < 180) or (self.angle - self.angle_dest < -180):self.angle -= 500 * dtelse:self.angle += 500 * dt
这段会牵扯一点初中几何的知识,想要理清的话建议在纸上画一画。
最后,是关于这个游戏的一个小视频,给大家图一乐:
欢迎大家关注+三连~
代码已上传,获取请访问:python666.cn/c/9
或在号内回复关键字:梅西
公众号的读者朋友们购买后可在后台联系我,加入读者交流群,Crossin会为你开启陪读模式,解答你在阅读本书时的一切疑问。
感谢转发和点赞的各位~
_往期文章推荐_
英语不好能不能学编程?如需了解付费精品课程及教学答疑服务请在Crossin的编程教室内回复: 666-
用Python写了一个「拥抱梅西」的小游戏入门教程、案例源码、学习资料、读者群请访问: python666 cn大家好,
-
我国我国目前有多少部刑法修正案_我国有多少刑法修正案-当前快播1、截至2017年底,我国刑法修正案有10个。2、最后一个刑法修正案是2017
-
美男十二宫_男色后宫太妖娆1、这本书我看过就是时间长了忘了名字。2、原来有人和我一样好这口不过
-
每日精选:包装纸板(包装纸板)当前大家对于包装纸板都是颇为感兴趣的,大家都想要了解一下包装纸板,
-
2023-06-21 11:02甘肃高速公路最新路况实时播报-世界今热点在我们出行前一定要把自己所去的地方的路况弄清楚,避免在出行过程当中
-
屋顶防水施工方案实例_屋顶防水施工方案想必现在有很多小伙伴对于屋顶防水施工方案方面的知识都比较想要了解,
-
环球观热点:第二套人民币大全套价格(2023年6月21日)第二套人民币大全套价格(2023年6月21日)
-
观速讯丨延伸服务触角,宝山这个镇为居民幸福“加码”顾村镇开展共富菜场及周边环境治理行动为巩固市容环境满意度工作成果,
-
天天热头条丨揽金超712亿,北京2023年首轮集中土拍收官!6月20日,北京再次出让7宗宅地,这是6月以来北京第4场土地拍卖,不过,
-
预定跟预定有什么不同 预定和预订区别_全球热议1、定金作为合同履行的一种担保。2、订金并非一个规范的法律概念,实际
-
【当前独家】朱琳晋级伯明翰网球赛16强新华社伦敦6月20日电(记者张薇)中国选手朱琳20日在女子网球协会(WTA
-
uu249单号登录系统_uu单号登录系统1、楼同行吧恶意我保证uu单号网骗提现内账。本文就为大家分享到这里,
-
快讯:点支式玻璃幕墙图片大全_点支式玻璃幕墙1、点支式玻璃幕墙由装饰面玻璃,驳接组件支承结构组成。2、按外立面装
-
vivoroot失败解决办法_root失败解决办法-焦点热闻你们好,最近小活发现有诸多的小伙伴们对于vivoroot失败解决办法,root
-
广东2023实际种粮农民一次性补贴标准:每亩发放多少钱?近日,广东多地政府发布消息,公布今年实际种粮农民一次性补贴标发放标
-
飞龙股份今日跌7.58% 二机构净买入9315.73万元飞龙股份今日跌7 58%,成交额17 72亿元,换手率25 09%,盘后龙虎榜数据
-
沪指收跌0.47% 机器人概念掀涨停潮上证报中国证券网讯(记者费天元)6月20日,A股三大股指走势分化,深证
-
涉嫌受贿罪,中国人民银行原副行长范一飞被逮捕记者从最高人民检察院获悉,中国人民银行原党委委员、副行长范一飞涉嫌
-
猫和老鼠四川方言123集_四川方言网站1、笑话一:麻雀和乌鸦一起摆龙门阵。2、 麻雀说:你是啥子鸟哦? 乌
-
深度合作!中国工商银行双APP同时入驻云闪付网络支付平台为深入贯彻中央经济工作会议关于扩大内需、促进消费的工作部署,落实人
-
等差数列前n项和公式-等比数列通项公式1、(1)观察归纳法这个方法需要学生很强的反应能力!(2)累差法和累
-
河北丰南:玩“转”端午 乐享邻里情 重点聚焦唐山市丰南区新兴社区居民制作的香囊。陈军摄唐山市丰南区新兴社区居民
-
电脑升级怎么升级配置_电脑升级怎么升级|全球新消息1、【问题描述】:系统重装的解决方案【简易步骤】:安装最新版本360安
-
北斗七星的名字和传说_北斗七星的名字1、按照你举例的说法,应该是按照下面的书中的命名方法:《太上玄灵北
-
拉法基豪瑞_拉法_环球消息1、拉法是法拉利的一款车,其英文名为LaFerrari。2、并无表面意思,LaF
-
第八届福建省优秀科技工作者评选启动_实时日前,福建省科协下发通知,决定开展第八届福建省优秀科技工作者评选工
-
国家移民管理局:端午假期日出入境人数预计超140万人次|环球观天下南方网讯据国家移民管理局微信公众号消息,国家移民管理局分析评估,预
-
全球新动态:2023绿色低碳发展暨全国垃圾处理行业高质量发展研讨会召开6月16日—17日,以“探索垃圾处理行业绿色升级路径”为主题的2023绿色
-
从海创会看福建产业发展趋势:巩固支柱产业 激活创新动能 前沿热点三明展厅的深瑞墨烯科技(福建)有限公司工作人员向观众展示石墨烯导热
-
格里昂讲师的职业发展建议 天天头条格里昂职业服务和行业关系(CareerServices&IndustryRelations)团队为在校生提供