Python 小游戏—加农炮送特朗普上太阳
美股熔断历史上只发生过4次,上上次熔断和上一次熔断,还要追溯到2020年3月9日和2020年3月13日,那两天我的记忆很深刻,那感觉,仿佛就在几天前。
话又说回来了,特朗普可是说过狠话的:
这是在2015年竞选期间他发过的一条推特:“如果有一天道琼斯指数单日狂跌超过1000点,那当时的总统就应该被装进加农炮里,以极快的速度被射向太阳。不能找任何借口!”
嘻嘻,见过骗吃骗喝的,还第一次见骗太空游的。而且还骗了3次,这招高明。 不过,各大媒体很快辟谣,推特实际上是网友的p图,特朗普本人可没有立过这样的flag。
不过这真的是一个有趣的话题,今天我们就来用Python模拟一下,制作一个太空小游戏。
1.准备
开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。
Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。
当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端装依赖模块,多舒服的一件事啊:Python 编程的最好搭档—VSCode 详细指南。
输入以下命令安装我们所需要的依赖模块:
pip install freegames
pip install turtle
看到 Successfully installed xxx 则说明安装成功。你可以在Python实用宝典公众号后台回复:加农炮的特朗普 获得本文完整数据和代码。
2.编写代码
原理很简单,就是用到了张特朗普的漫画图和freegames模块,以及turtle画图模块。turtle画图模块我们以前也写过不少文章,大家不了解可以看看:
1.Python turtle 画雪花
2.Python turtle 深入理解递归
2.1 模块加载与设定图像
首先,引入turtle模块,和freegames模块,我们这一次实验需要用到freegames模块里的向量vector(用于表示坐标)。
import turtle
from random import randrange
from freegames import vector# 设定screen
screen = turtle.Screen()
screen.setup(420, 420, 370, 0)# 加载trump图,并设为默认turtle
trump = '3.gif'
screen.addshape(trump)
turtle.shape(trump)
2.2 准备画图
在开始画图之前,由于需要用特朗普头像作为移动点,我们需要隐藏原有的turtle对象,并设置不显示tracer,即特朗普移动的时候不画线。
最后设定当用户点击画布的时候,执行tap函数。
turtle.hideturtle()
turtle.up()
turtle.tracer(False)
turtle.onscreenclick(tap)
tap函数如下,即设定球体的位置和初始速度。
def tap(x, y):"""回应屏幕点击:param x: x轴位置:param y: y轴位置"""if not inside(ball):ball.x = -199ball.y = -199speed.x = (x + 200) / 25speed.y = (y + 200) / 25
2.3 开始画图
这一部分的核心是move函数,不过在说道move函数前,我们要重点讲一下如何将原有端点换成特朗普的头像,那就是draw函数的功能:
def draw():"""绘画出太阳和trump"""turtle.hideturtle()turtle.clear()for target in targets:turtle.goto(target.x, target.y)turtle.dot(20, 'red')if inside(ball):turtle.showturtle()turtle.goto(ball.x, ball.y)turtle.update()
还记得我们在一开始就将特朗普的头像设定为turtle的shape了吗?然后在move函数运行之前,又将turtle的点隐藏了起来,其实这个时候隐藏的就是特朗普的头像。而在开始移动的时候,我们仅需要将turtle重新show回来即可。因此核心语句便是:
turtle.showturtle()
turtle.goto(ball.x, ball.y)
这两句控制了头像的移动。
接下来看看move函数主体:
def move():"""移动太阳和trump:return:"""# 生成“太阳”球体if randrange(40) == 0:y = randrange(-150, 150)target = vector(200, y)targets.append(target)# 移动太阳for target in targets:target.x -= 0.5# 如果Trump在屏幕内,减速并移动if inside(ball):speed.y -= 0.35ball.move(speed)# 重新渲染“太阳”位置dupe = targets.copy()targets.clear()# 和Trump距离太近,则消去球体for target in dupe:if abs(target - ball) > 13:targets.append(target)# 渲染画布draw()# 没有目标了则终止游戏for target in targets:if not inside(target):return# 每隔50毫秒递归调用本函数turtle.ontimer(move, 50)
其实注释写的挺清楚的,但是这里我们还是详细解释一下:
1.首先需要生成“太阳”球体,这里用到了vector,是一个用于生成坐标的函数,y是随机产生的,所以球体初始位置都在最右边(200, y)。
2.平移所有的太阳,包括新增的。
3.如果屏幕内存在Trump头像,令其移动。
4.重新渲染太阳位置,用新坐标代替,若和Trump距离过近,则消去该球体。
5.渲染所有的球体和Trump的新位置。
6.如果没有球体了,则终止游戏,否则每50毫秒重新调用本函数。
基于这个逻辑大家也可以写一个属于自己的游戏哦。
3.玩笑终归玩笑
当然,这只是个游戏,Trump其实没说过加农炮送上太阳的那句话,不过近期美股的形式确实令人担忧。即使在美联储将利息降为0、大放水7000亿美元的情况下,依然无法挽回局势,不容乐观。
金融市场雪崩在劫难逃,站在金融周期的角度看,十年一次的洗盘即将到来,普通人如何保护好自己?那当然就是学习更多的本领啦!欢迎关注下方的Python实用宝典,优质的Python教程将源源不断奉出。
我们的文章到此就结束啦,如果你喜欢我们今天的Python 实战教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦,有任何问题都可以在下方留言区留言,我们都会耐心解答的!
Python实用宝典
不只是一个宝典
欢迎关注公众号:Python实用宝典
原文来自Python实用宝典:Python 小游戏—加农炮送特朗普上太阳
Python 小游戏—加农炮送特朗普上太阳相关推荐
- Python小游戏——王校长的S8冠军奖杯【上】
[前情提要] 1.pygame的安装:https://blog.csdn.net/Xiaomo_haa/article/details/83962300 2.Python小游戏--王校长的S8冠军奖杯 ...
- 视频教程-Python小游戏-宇宙激战-Python
Python小游戏-宇宙激战 计算机应用专业研究生硕士,教学10余年,现关注于移动互联网.大数据和人工智能研究方向. 朱松 ¥12.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术 ...
- python小游戏系列井字棋,儿时的回忆
hello大家好,今天我又发现了个有趣的小玩意.我是专写有趣小玩意的老诗. 相信大家对于井字棋都并不陌生.现在也能找到各种各样的井字棋小游戏玩.那么你们自己是否会编写呢?接下来老诗用python教大家 ...
- python编的俄罗斯方块游戏_手把手制作Python小游戏:俄罗斯方块(一)
手把手制作Python小游戏:俄罗斯方块1 大家好,新手第一次写文章,请多多指教 A.准备工作: 这里我们运用的是Pygame库,因为Python没有内置,所以需要下载 如果没有pygame,可以到官 ...
- python hist函数_虎哥的python小技巧放送之绘制统计图(2)
先放出第一期让大家回顾一下上次的内容 虎哥的python小技巧放送之绘制统计图(1) 第一期主要给大家讲了一些图形设置的东西.这一次开始正式带大家画图~ 折线图:折线图可以通过matplotlib中的 ...
- python图形小游戏代码_手把手制作Python小游戏:俄罗斯方块(一)
手把手制作Python小游戏:俄罗斯方块1 大家好,新手第一次写文章,请多多指教 A.准备工作: 这里我们运用的是Pygame库,因为Python没有内置,所以需要下载 如果没有pygame,可以到官 ...
- Python小游戏——王校长的S8冠军奖杯【下】
[前情提要] 1.pygame的安装:https://blog.csdn.net/Xiaomo_haa/article/details/83962300 2.Python小游戏--王校长的S8冠军奖杯 ...
- 树莓派开箱+上手python小游戏
树莓派开箱&上手python小游戏 树莓派开箱&上手python小游戏 安装所需设备 烧录系统 使用NOOBS方式烧录失败 下载官方系统镜像文件烧录成功 配置WiFi和SSH 一.Wi ...
- 边玩边学,13个 Python 小游戏真有趣啊(含源码)
经常听到有朋友说,学习编程是一件非常枯燥无味的事情.其实,大家有没有认真想过,可能是我们的学习方法不对? 比方说,你有没有想过,可以通过打游戏来学编程? 今天我想跟大家分享几个Python小游戏,教你 ...
最新文章
- BERT论文阅读(二): CG-BERT:Conditional Text Generation with BERT for Generalized Few-shot Intent Detection
- 在Chrome 中调试Javascript
- Effective_STL 学习笔记(八) 永不建立 auto_ptr 的容器
- 重磅!阿里巴巴和全球最大奢侈品电商YNAP成立合资公司
- COM_TEXT_TIMESTAMP_SET
- html如何去掉有无标题点,HTML中,如何去掉某个元素下的一些特殊标签?
- ndnsim r语言 ubuntu_Python语言---数据库
- SAP漏洞:为什么补丁没有发挥作用?
- 前端工具Gulp的学习
- 2017 计蒜之道 初赛 第五场 A. UCloud 机房的网络搭建
- VOC2007.annotation文件解读
- html加减乘除除数不能为零,如何用正则表达式表示除数不为0 呢
- launch参数JAVA_javafx主要方法launch(args)如何工作? - java
- 什么是知识库,怎么制作知识库?
- Mongodb安装篇(CentOS7,Mongodb4.0.1)
- ctfshow_萌新_萌新隐藏题
- 闲置的华为悦盒搭建海思NASUbuntu系统(二)
- 微信小程序打印小票详解
- 知否大学-大学课后习题答案
- Linux常用命令(入口)
热门文章
- 1124:成语接龙 dfs+一维数组保存结果
- iOS查看手机app本地存储的文件
- Python爬虫自学笔记(五)Scrapy框架
- 中职计算机英语教学大纲,中职英语教学大纲与教学计划
- 玩转树莓派(一):树莓派更换国内源、设置中文显示及输入法
- 36.html-弹性盒子基础
- QQProtect遇到错误,给您带来不便,我们深表歉意。
- php mysql_num_rows函数_使用PHP mysqli_num_rows函数方法
- python restful django_Python构建RESTful网络服务[Django篇:使用PostgreSQL替代SQLite]
- 端午安康,使用祝福话语生成词云吧