用Python写了一个「拥抱梅西」的小游戏
入门教程、案例源码、学习资料、读者群
(资料图)
请访问: 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写了一个「拥抱梅西」的小游戏
- 怎么打开cookie文件(怎么打开cookie)
- 全球短讯!新华·黄石转型发展指数发布 为全国老工业城市焕发新活力提供参考
- GGII:2022年中国锂电机器视觉市场规模达21亿元 同比增长60% 环球今热点
- OPPO K10 Pro查看电池健康教程介绍
- 晚上6点到12点兼职可以吗_晚上6点到12点兼职 当前热讯
- 拉肚子喝盐水管用吗女性_拉肚子喝盐水管用吗-每日短讯
- 涂改液的种类(涂改液的成分简介介绍)_天天热资讯
- 每日观点:王浚楼船下益州金陵王气黯然收千寻铁锁沉江底
- 拜托了老铁回家怪谈官网在哪下载 最新官方下载安装地址
- 鹤壁:“守好钱袋子 护好幸福家”黎阳路街道平安护航暖阳服务队开展处非宣传-世界热文
- 【全球聚看点】名将之弈怎么升级武器 名将之弈武器升级方法
- 当时尚玩起跨界,会擦出怎样的火花?
- 360浏览器广告拦截插件下载 360浏览器广告拦截|全球头条
- 意媒:纽卡已6500万欧正式报价托纳利,米兰正在评估
- 曲阜储备停车位5100余个 缓解端午假期游客停车难问题 快资讯
- 北京市未成年人保护宣教联盟成立
- 补气血鸡汤怎么炖好喝又营养_补气血鸡汤怎么炖好喝 每日看点
- adobe photoshop激活码使用步骤(谁能告诉我AdobePhotoshop9.0的授权号码,急用.谢谢GGJJ们了!)
- 今日螺纹钢期货价格行情查询(2023年6月20日)_天天热点评
- 焦点消息!opporeno10怎么关闭横屏
- 每日短讯:特斯拉又涨价了,想买Model Y的不如看看极狐阿尔法T
- 昊铂发布超充到家“当日达”
- 天天微动态丨火星教育怎么样?
- 焦点速讯:2023天津融媒体中高考助力行动——权威访谈《美丽高校巡礼》走进中国人民大学、中国农业大学
- 广东多地遭遇暴雨 最大降雨量超百毫米
- 世界球精选!河南灵宝:剪纸里的端午民俗
- 当前通讯!昵配网oe号码查询 昵配网
- 水浒武松血溅鸳鸯楼搜狐视频(水浒武松血溅鸳鸯楼)_天天信息
- 乡村振兴要摆脱流量误区
- 环球微资讯!1906 名玩家请愿:让《星空》成为 PS5 独占游戏
- 世界关注:保障端午出行 成都地铁21日、24日将延时运营
- 柔性直驱式转向架_关于柔性直驱式转向架概略
- 红粿皮用什么粉做的_红粿|热点评
- 英雄联盟段位查询_LOL怎么查看段位
- 群青绿色流行要会搭,4种冬季搭配示范,总有一款适合你_环球简讯
- filename546解决步骤(filename546)-精选
- 国货美妆在海外“出圈”|世界速讯
- 计算机丢失libcef.dll怎么解决(计算机丢失libcef dll)|天天观察
- 世界今日讯!志特新材(300986):6月19日北向资金增持3万股
- 有壶社区qiezip 有壶社区
- 《八角笼中》映后 “唐探”剧组重聚为王宝强庆生|天天看点
- 氯化钠在纯水中的溶解度(氯化钠在水中的溶解度简介介绍) 环球热议
- 明日新股提示:海看股份、智翔金泰上市 天天热门
- 东方财富证券:给予罗博特科增持评级 全球讯息
- 刘涛被指变脸难认,生图憔悴蜡黄没精神,网友称不如“农村涛姐”
- 环球时讯:巨龙的召唤——是谁?
- 两部门联合发布黄色山洪灾害气象预警:湖南东北部等地发生山洪灾害可能性较大-焦点信息
- 电视剧《长风渡》火热开播,白敬亭宋轶演绎少年夫妻“反套路”养成
- 玉龙股份(601028.SH)2022年度每10股派0.35元 股权登记日为6月29日_世界热门
- 世界看热讯:国家药监局5月批准注册175个医疗器械产品
- 粽香四溢传承文明 开封示范区梁苑街道新时代文明实践所开展端午节系列活动 每日快报
- 世界看热讯:中国科学家公布十项新生代化石研究世界之最
- 半月谈:有些地方以美观为名浇筑水泥,古树不得“寿终正寝”
X 关闭
最新资讯
- 微软Win11预览版取消集成Teams Chat按钮
- 一篮子货币是什么意思 什么是一篮子货币-世界热议
- 人民币大消息!阿里、腾讯可以直接买了,这些A股公司或受益… 全球头条
- 世界热推荐:如何将图片压缩至指定大小(如何将图片压缩至指定大小不变)
- 有关谦虚的名人名言_关于谦虚的名人名言
- 中兴和努比亚618战报出炉:最高增长220% 环球讯息
- 2023年玉溪悦购红塔消费券第二期消费券种类及面额 世界快消息
- 公主连结S40巨蟹座部分ABC面可用轴-全球百事通
- 小家电消费会一直热下去吗
- 23069期大乐透晒票,要改变命运,首先要改变自己的心
- 苏皖合作示范区建发集团20亿元私募债项目更新至“已受理” 全球今日报
- EltaMD安妍科氨基酸泡沫洁面乳好用吗?
- 秦刚同美国国务卿布林肯举行会谈 全球热推荐
- 安顺古城墙
- 中条山战役百度百科_中条山战役全记录
- “618”剧透小家电消费新趋势 企业打造多元化产品矩阵
- 南京女孩为什么找不到对象_南京女孩为什么叫潘西 每日时讯
- 通知!事关临沂房地产市场_当前资讯
- 焦点滚动:金融“活水”灌溉农业产业 科技创新企业将获上市及再融资支持
- 每日热点:仙鹤股份董秘回复: 公司运营正常,不存在资金问题
- 崩铁开服玩家!三个号全60级了!谈一下感受和避坑经验!|环球看热讯
- 每日视点!电商风云观后感 电商风
- 世界今日报丨2023年可能成为有记录以来最热的一年
- 全球快报:香港学生及家长体验包粽子等端午民俗活动
- 速看:春风450NK、450SR-S赛道试驾,街车比仿赛更猛?
- 今日最新!“全闵健身e起来”闵行区第九套广播体操培训及推广火热进行
- 共圆两岸光影梦想!第十五届海峡影视季开幕
- 安徽铜陵:古铜都焕发新生机
- 当前讯息:电信光猫连接路由器设置步骤
- 【环球报资讯】山东师范大学:优质教育资源服务带动地方基础教育发展
- 全球快看:降血糖的蔬菜有哪些品种_降血糖蔬菜是什么
- 全球热消息:亿晶光电6月6日盘中跌幅达5%
- 当前关注:鸿海董事长刘扬伟:电动车生产在地化是趋势 很快将在印度设立电动车制造产线
- 11朵黄玫瑰的花语是什么意思_21朵玫瑰花语
- 斗罗大陆完整版放出,两大名场面已经补上,千仞雪神格确定破碎-通讯
- 极目锐评|广州一龙舟队全是富婆?当地坦然承认,但关注身家不如关注性别!
- “在民族复兴伟业中,也有我的一份贡献”——第十五届海峡论坛大会侧记 全球快资讯
- 8个表现证明双子喜欢你 每一个点都很"双子"!
- 今日起G22青兰高速巉柳段定远收费站段至榆中收费站段实行半幅封闭施工
- 环球观速讯丨马来西亚国旗图片_马来西亚国旗
- 端午将至,漕河泾社区喊你包粽子啦!-世界观天下
- 如果鸣人出事,佐助、卡卡西不能当火影,小樱有机会成为火影吗? 信息
- 快报:水晶摆台制作视频教程(水晶摆台)
- 今日要闻!华为手机左上角的图标怎么关闭(华为手机左上角图标大全)
- 【环球热闻】黄河九曲第一湾迎来客流高峰
- 尽享多彩夏日!“你好天津·宝坻国潮文化嘉年华”活动等你来打卡!
- 环球时讯:预计年内上市 奇瑞TJ-1官方定名探索06
- 【环球速看料】俄罗斯乌克兰局势最新消息今天_乌克兰少女
- 全球视点!柄果崖爬藤_关于柄果崖爬藤概略
- 《重返未来1999》丽莎路易斯角色技能强度介绍
X 关闭