美股熔断历史上只发生过4次,上上次熔断和上一次熔断,还要追溯到2020年3月9日和2020年3月13日,那两天我的记忆很深刻,那感觉,仿佛就在几天前。
话又说回来了,特朗普可是说过狠话的:
这是在2015年竞选期间他发过的一条推特:“如果有一天道琼斯指数单日狂跌超过1000点,那当时的总统就应该被装进加农炮里,以极快的速度被射向太阳。不能找任何借口!”
嘻嘻,见过骗吃骗喝的,还第一次见骗太空游的。而且还骗了3次,这招高明。 不过,各大媒体很快辟谣,推特实际上是网友的p图,特朗普本人可没有立过这样的flag。
不过这真的是一个有趣的话题,今天我们就来用Python模拟一下,制作一个太空小游戏。
开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章:超详细Python安装指南 进行安装。
Windows环境下打开Cmd(开始—运行—CMD),苹果系统环境下请打开Terminal(command+空格输入Terminal),准备开始输入命令安装依赖。
当然,我更推荐大家用VSCode编辑器,把本文代码Copy下来,在编辑器下方的终端装依赖模块,多舒服的一件事啊:Python 编程的最好搭档—VSCode 详细指南。
输入以下命令安装我们所需要的依赖模块:
pip install freegames
pip install turtle
看到 Successfully installed xxx 则说明安装成功。你可以在Python实用宝典公众号后台回复:加农炮的特朗普 获得本文完整数据和代码。
原理很简单,就是用到了张特朗普的漫画图和freegames模块,以及turtle画图模块。turtle画图模块我们以前也写过不少文章,大家不了解可以看看:
1.Python turtle 画雪花
2.Python turtle 深入理解递归
首先,引入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)
在开始画图之前,由于需要用特朗普头像作为移动点,我们需要隐藏原有的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 = -199
ball.y = -199
speed.x = (x + 200) / 25
speed.y = (y + 200) / 25
这一部分的核心是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.35
ball.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毫秒重新调用本函数。
基于这个逻辑大家也可以写一个属于自己的游戏哦。
当然,这只是个游戏,Trump其实没说过加农炮送上太阳的那句话,不过近期美股的形式确实令人担忧。即使在美联储将利息降为0、大放水7000亿美元的情况下,依然无法挽回局势,不容乐观。
金融市场雪崩在劫难逃,站在金融周期的角度看,十年一次的洗盘即将到来,普通人如何保护好自己?那当然就是学习更多的本领啦!欢迎关注下方的Python实用宝典,优质的Python教程将源源不断奉出。
我们的文章到此就结束啦,如果你喜欢我们今天的Python 实战教程,请持续关注我们,如果对你有帮助,麻烦在下面点一个赞/在看哦,有任何问题都可以在下方留言区留言,我们都会耐心解答的!
Python实用宝典
不只是一个宝典
欢迎关注公众号:Python实用宝典
原文来自Python实用宝典:Python 小游戏—加农炮送特朗普上太阳