手机版
位置:筑能财经 > 社区 >

环球观天下!用Python写了一个「拥抱梅西」的小游戏

来源:程序员客栈 | 2023-06-21 20:35:57

入门教程、案例源码、学习资料、读者群

请访问: 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的新书《码上行动:零基础学会PYTHON编程(CHATGPT版)》已经上市了。

本书力求做到浅显易懂,让完全没有编程经验的零基础“小白”也能学会Python。内容从环境搭建这种最基础的步骤开始讲起,逐渐深入到常见的实际应用当中。在讲解知识点的同时配有相应的代码示例,让读者可以边学边练加深理解。书中还创新地使用 ChatGPT 作为编程学习的辅助,带领读者探索AI时代下学习编程的新模式。

公众号的读者朋友们购买后可在后台联系我,加入读者交流群,Crossin会为你开启陪读模式,解答你在阅读本书时的一切疑问。

感谢转发和点赞的各位~

_往期文章推荐_

英语不好能不能学编程?如需了解付费精品课程及教学答疑服务请在Crossin的编程教室内回复: 666

标签:

精彩放送

新闻资讯

  1. 沉痛悼念!57岁民警倒在岗位上,生命最后一刻他还念着工作-世界资讯
  1. 嘉兴市首单消费类基础设施CMBS成功发行 规模13.61亿元、利率3.68%|全球视点
  1. 【天天时快讯】深厚覆盖层勘察关键技术(关于深厚覆盖层勘察关键技术介绍)
  1. 2023西安建国门老菜场端午节活动
  1. 苹果手机很烫怎么解决_苹果手机很烫怎么回事 环球热议
  1. 世纪金花出售西安物业予孙巧云 代价1200万元_每日速读
  1. 《2022湖南省生态环境状况公报》发布:生态环境状况总体稳定,稳中向好-资讯推荐
  1. 八字喜财但无财怎么办 八字命运无财特征
  1. 稳步前进!紫光股份旗下新华三连续22个季度位居中国存储市场前二
  1. 增速品类第一!飞鹤星飞帆卓睿月销量近4亿 全球热头条
  1. 家庭教育:家长如何更好地培养孩子养成良好的心理素质?
  1. 贵阳市国家生态文明建设示范区规划来了!附图解+部门解读-全球时快讯
  1. 【全球快播报】广西崇左市市场监管局开展节令食品专项检查
  1. 北京昌平争创科创金融示范区 北交所昌平服务基地揭牌
  1. 德龙激光(688170)6月20日主力资金净买入233.15万元|环球微头条
  1. 扬科维奇:中国人学习速度领先其他国家 对明天很抱歉 环球头条
  1. 【全球报资讯】一季度全国人均持有银行卡6.78张
  1. 【环球报资讯】黑色家电板块6月20日涨2.22%,四川长虹领涨,主力资金净流入1.04亿元
  1. 环球视点!智动力(300686):该股换手率大于8%(06-21)
  1. 国内商品期货开盘 沪银跌超2%|焦点报道
  1. 中远海能(01138.HK):6月20日南向资金增持312.2万股|环球消息
  1. 锋尚文化(300860)创意,呈现中国之美
  1. 当前视点!十大公认最差的专业是什么 本科专科红牌专业
  1. 同星科技(301252.SZ):公司产品提供给客户用于储能温控领域
  1. 全球速读:ch3cooh是酸性还是碱性_ch3cho属于弱酸吗
  1. 梦幻西游账号修复几次都失败_梦幻西游账号修复
  1. 富瀚微6月21日盘中跌幅达5%
  1. 天天快看:希望布林肯给拜登总统带三句话
  1. 美方炒作所谓中国化学品流入墨西哥,国家禁毒办回应:均为普通商品|全球速看
  1. u盘坏了去哪里修_u盘坏了
  1. ps重复复制快捷键是什么(ps重复复制快捷键)
  1. 越南战争时间的起止日期(越南战争时间)
  1. 【独家焦点】此刻,阳光正好
  1. 奋飞新时代的空中铁拳——空军航空兵某团飞行二大队
  1. 热议:麻雀是几级保护动物
  1. 天天热讯:兑宅文昌位在哪个方位_兑宅
  1. 端午假期将至 请收好这份安全出行提示→|世界热推荐
  1. 已有2600位招生人受影响!你,会不会是下一位?_实时
  1. 看热讯:外交部美大司司长介绍中美双方达成的五项共识
  1. 上交所新增受理芯旺微科创板上市申请
  1. 福建:谱写民营经济发展新篇章
  1. 浪花福利社:六月杨梅红抽奖第三弹来袭_世界热推荐
  1. 天天热消息:高通中国区董事长孟樸:技术乐观主义者眼中的连接、智能、革新|36氪专访
  1. 天天热门:乡村之美丨为什么绿水青山就是金山银山?“千万工程”给你答案
  1. 皮肤科专家:银屑病不再是“老大难” 生物制剂带来治疗新突破 每日观点
  1. 速读:网易号「7*24h财经报道团」征文活动开启!
  1. 世界百事通!市民注意!收到陌生快递千万要小心 温州一市民因此损失11万多元
  1. 世界快消息!dnf神枪手飞燕_dnf神枪手飞燕
  1. 新能源ETF(516160)获资金连续净流入,恩捷股份、璞泰来、融捷股份盘中涨幅居前
  1. 银行ETF基金(512700)一度涨0.96%,建设银行、交通银行、中国银行、民生银行涨幅居前 当前热点
  1. 世界要闻:世界男排联赛 | 中国男排无奈四连败
  1. 国乒开展“当粉丝遇见偶像”专题培训 呼吁球迷理性关注运动员
  1. 武磊追平国足队史头号射手进球纪录 全球聚看点
  1. 5年2.95亿留布朗值不值? 环球快看
  1. 扬科维奇:武磊让队友变得更好
  1. 什么基金适合定投?关键看这两点 环球报道
  1. 本市发布端午小长假热点河湖点位-环球今热点
  1. 全球微速讯:首届北京中华民族文化周开幕
  1. 莫让商业利益干扰少儿节目-天天短讯
  1. 全球即时看!大学生求职技能跨入AI纪元
  1. 北京市场监管部门检查粽子过度包装-世界快看点
  1. 回撤超60% 净值惨遭腰斩 私募大佬林园怎么了?还有投资者喊话但斌 什么情况?
  1. 【报资讯】公募论市:修复市场误判 A股蓄势期渐近
  1. 速看:重仓AI板块 逾60只基金净值月涨超20%
  1. 公募基金派发约八百亿元“红包雨” 债基占比超八成 当前热闻
  1. 世界观察:广汕高铁上的“钢轨打磨师”:冒着高温酷暑 争分夺秒完成任务
  1. 做翻译、开发游戏、用AI编程……仅两根手指能动的他“玩”出多彩人生|环球新视野
  1. “庄采芳·庄重文奖学金”36年激励7761名福建优秀学子
  1. 我把茶叶卖到非洲-全球热资讯
  1. 世界观热点:苗寨里的“禁毒课”
  1. 乡村之美丨为什么绿水青山就是金山银山?“千万工程”给你答案
  1. 速看:“双柜台模式”如何助推人民币国际化?专家解读
  1. 每日焦点!明星经理业绩“褪色” 百亿规模级基金产品收益分化
  1. 世界观天下!互联互通ETF突破百只 双创、港股通等表现活跃
  1. 全球观焦点:交钱就能办理“提前退休”?警惕新型养老诈骗
  1. 世界快播:动力电池产业迎多重利好 锂电池ETF(159840)回暖
  1. 好消息!这些线路,有高铁了!
  1. 智慧田园引客来(千万工程 一线探访)
  1. 上半年阿克苏地区发放各项社保待遇26.89亿元-天天热推荐
  1. 环球观点:燕之屋转战港股IPO,3年广告宣传费超8亿,研发费不足1亿
  1. 景区、酒店持续下跌,锦江酒店、天目湖跌幅居前
  1. 天天热议:正宁公路段开展“安全生产月”宣传咨询日活动
  1. 房贷降息!算算你每月能省多少:贷款100万元、还款期30年的购房者,每月省下的钱大概可以买20斤大米
  1. 新房装修墙面用什么材料好些_新房装修墙面用什么材料好 世界信息
  1. 宝盛银行:新加坡超过上海香港 首次成全球高端生活成本最贵城市
  1. 手游倩女幽魂哪个职业适合平民 手游倩女幽魂
  1. (8/4/4.O.4)欧陆总代江疏影晒出街拍,身穿提花流苏开衫搭配牛仔裤,时尚简约清新-环球快播
  1. 每日播报!成人女星:我跟锡安的爱爱视频即将释出!
  1. 环球热点评!二本预科班是什么意思 二本预科
  1. 当前看点!港股内房股集体下挫 合景泰富集团跌超12%
  1. 中国铁路7月1日起实行新的列车运行图
  1. Undawn 说大便对僵尸生存至关重要
  1. 《战锤西格玛时代:毁灭之国》雷铸神军阵营介绍 7月7日公测开始
  1. 华安基金:美联储加息或将持续,黄金进入震荡区间_世界热点评
  1. 北约秘书长称北约武器弹药库存已耗尽_今日热文
  1. 新增1.5T车型,星瑞推出扶摇版和昆仑版 每日快看
  1. 开封市通许县咸平街道:建立“四项”机制扎实开展 应急管理工作
  1. 环球微动态丨梦江南兰烬落(兰烬落)
  1. 从这里看见未来乡村的模样——浙江美丽乡村调研走笔
  1. 桂东农商银行:金融服务“新脚步” 打通百姓“致富路”-每日看点