火箭发射pythonturtle好玩又可以学习编程
1 说明
=====
1.1 火箭发射嫦娥五号已经正在月球上"挖土"了,培养自己和孩子的计算机知识和科学素养刻不容缓![笑哭]
1.2 我就用python的turtle来画火箭发射。
1.3 效果图
1.3 牵涉到的知识
=============
1.3.1 python-turtle画火箭=rocket和尾部的火焰。
1.3.2 截图png的图片修改透明背景,用PIL,生成png,本机直接再修改为gif,适合做动画使用。
1.3.3 turtle图片的gif的动画设计编程。
图片来自今日头条
2 画火箭和火焰
============
2.1 rocket-draw0.py
===============
2.1.1 效果图
rocket0.png图片
2.1.2 代码:from turtle import * import math title("rocket0") shape("turtle") color("blue") speed(1) pu() goto(0,300) pd() #画头 def head(): begin_fill() fillcolor("red") left(120) forward(100) left(120) forward(100) left(120) forward(100) end_fill() #画体 def body(): begin_fill() fillcolor("pink") right(90) forward(300) right(90) forward(100) right(90) forward(300) right(90) forward(100) right(90) forward(300) end_fill() #画底 def bottom(): begin_fill() fillcolor("green") pu() goto(0,0) pd() left(45) forward(70) right(135) forward(200) right(135) forward(70) end_fill() #画火箭体左侧耳朵 def ear_left(): begin_fill() fillcolor("blue") pu() goto(-100,200) left(180) pd() fd(70) left(135) fd(50) end_fill() #画火箭体右侧耳朵 def ear_right(): pu() goto(0,200) begin_fill() fillcolor("blue") right(45) pd() fd(70) right(135) fd(50) right(90) fd(50) end_fill() def main(): head() body() bottom() ear_left() ear_right() ht() done() main()
2.2 rocket-draw1.py
==============
2.2.1 效果图
rocket1.png图片
2.2.2 注意与代码相同部分折叠起来
2.2.3 代码:from turtle import * import math title("rocket1") shape("turtle") color("blue") speed(1) pu() goto(0,300) pd() """ #与上面相同部分,暂时折叠和省略 #画头 def head(): #画体 def body(): #画底 def bottom(): #画火箭体左侧耳朵 def ear_left(): #画火箭体右侧耳朵 def ear_right(): """ #黄色内火焰 def huangse(): pencolor("yellow") pu() goto(-50,-50) left(180) pd() for i in range(20): fd(10) pensize(i+30) for i in range(10): fd(10) pensize(40-i*2) pencolor("black") penup() home() pendown() def main(): head() body() bottom() ear_left() ear_right() huangse() ht() done() main()
2.3 rocket-draw2.py
==============
2.3.1 效果图
rocket2.png图片
2.3.2 同上面,代码from turtle import * import math title("rocket2") shape("turtle") color("blue") speed(1) pu() goto(0,300) pd() """ #相同部分已经折叠和省略 #画头 def head(): #画体 def body(): #画底 def bottom(): #画火箭体左侧耳朵 def ear_left(): #画火箭体右侧耳朵 def ear_right(): """ def waiyan(): pu() goto(0,-45) pd() fillcolor("#FF4500") pencolor("#FF4500") pensize(5) begin_fill() circle(50,-180) for i in range(4): right(35-7*i) fd(100+10*i) left(155+3*i) fd(40+i**2) seth(270) seth(228) penup() goto(0,-45) pendown() seth(0) for i in range(4): right(75+7*i) fd(100+10*i) right(155+3*i) fd(40+i**2) seth(0) seth(42) goto(0,-45) end_fill() pencolor("white") penup() home() pendown() def main(): head() body() bottom() ear_left() ear_right() waiyan() ht() done() main()
3 图片背景透明
============
3.1 代码import PIL.Image as Image # 以第一个像素为准,相同色改为透明 def transparent_back(img): img = img.convert("RGBA") L, H = img.size color_0 = img.getpixel((0,0)) for h in range(H): for l in range(L): dot = (l,h) color_1 = img.getpixel(dot) if color_1 == color_0: color_1 = color_1[:-1] + (0,) img.putpixel(dot,color_1) return img if __name__ == "__main__": #3张图片逐个修改 img=Image.open("/home/xgj/Desktop/rocket-fly/rocket2.png") img=transparent_back(img) img.save("/home/xgj/Desktop/rocket-fly/rocket22.png")
3.2 将图片复制后重新命名:
rocket00.png改为rocketfly0.gif
rocket11.png改为rocketfly1.gif
rocket22.png改为rocketfly2.gif
3.3 文件夹下图
4 火箭发射
========
4.1 rocket-fly.py代码#在该文件夹打开终端,输入 #python3.8 rocket-fly.py #第1步:导入模块 from turtle import * from time import time import sys import glob #第2步:窗口的初始化设置 #窗口的标题名 title("rocket fly in sky") #背景颜色 bgcolor("black") #输出文字颜色和内容等设置 pu() pencolor("white") goto(-500,400) pd() write("操作说明: 按空格键开始和发射!", align="left", font=("楷体", 16, "bold")) #地平线位置 ground_line =-132 #第3步:动画设置 #读取动画 for f in glob.glob("*.gif"): addshape(f) #定义动画 def GIFTurtle(fname): t = Turtle(fname + ".gif") t.speed(0) t.up() return t #动画,初始化第一张图 rocket = GIFTurtle("rocketfly0") #第4步:游戏类 class Game: state = "end" best = 0 game = Game() #定义游戏开始 def start_game(game): game.hit_t, game.hit_y = 0, 0 game.state = "alive" game.start_time = time() update_game(game) #计算y坐标轴,可变 def compute_y(t, game): return game.hit_y - 100 * (t - game.hit_t) * (t - game.hit_t - 1) #游戏更新 def update_game(game): if game.state == "dead": game.state = "end" return t = time() - game.start_time rocket_y = compute_y(t, game) if rocket_y <= ground_line: rocket_y = ground_line game.state = "dead" rocket.shape("rocketfly%d.gif" % abs(int(t * 4) % 4 - 1)) #说明是垂直上下运动 rocket.goto(0, rocket_y) update() ontimer(lambda: update_game(game), 10) #第5步:起飞和发射 def fly(game=game): if game.state == "end": start_game(game) return t = time() - game.start_time rocket_y = compute_y(t, game) if rocket_y > ground_line: game.hit_t, game.hit_y = t, rocket_y #第6步:最后设置 #总起和调用 #按空格键==space起飞 onkey(fly, "space") listen() mainloop() sys.exit(1)
4.2 效果图
在游戏中学习python编程,分享处理。
怀孕多少天有恶心的感觉?怀孕多久会恶心早孕反应一般出现在停经6周左右。表现为头晕乏力嗜睡食欲不振喜食酸物或厌恶油腻恶心呕吐等,呕吐在清晨最为明显,多于妊娠12周左右自行消失。轻者仅感到不适,影响进食,严重
332天破水保胎能保多久?我365破水的,医生都没有保一天,37w是可以算正常生产,当天破水当天就给我破腹产了。因为早产孩子还在新生儿室呆了一周多,期间也不许探望,那种滋味太难受了,最后我出院了,孩子还没有
虎宝宝来了!想给女儿添手足,妈妈圆梦了长江日报大武汉客户端2月1日讯(记者王春岚通讯员高琛琛摄影记者史伟)怀孕38周提前发作,因为有过生产经验,淡定的二宝妈妈熊女士坐地铁到医院,初一早晨生下虎宝宝,一个体重近6斤的男孩
宁愿生两个儿子,也不愿生一个女儿,一位年轻妈妈的想法很真实随着二胎政策的开放,大部分家庭都希望自己家的孩子是一男一女,或者两个女儿,很多家庭都不希望要两个男孩,普遍认为有两个男孩的话无形中会带来很大的压力。而我的朋友晓晓是一位90后的宝妈
打工族的好消息生三胎奖9万1年产假生育后代一直是人关注的话题,尤其是女性,按照之前的惯例,生孩子就意味着失业,至于孩子的教育以及往后的支出,就是家长的事情,但问题是,最近的一些消息让人很吃惊,比如去年甘肃就出台新政
冬日滋补,你需要这道爆炒指甲贝(指甲螺)孩子开启用嘴认识世界的过程,最近忽然很喜欢吃海鲜,只有联系开发学做了两道适合孩子吃的菜。By等待青梅用料指甲贝(指甲螺)1斤大蒜适量生姜适量耗油3勺生抽3勺水适量香葱4根做法步骤1
蹊跷这半年我承认,刚摔倒时,看到孩子被压在电车下面,崩溃了。使劲扯起挡风被,拼命把电车抬起来。抱起金金,顾不得小水儿了。可是金金睁着眼睛,浑身瘫软,没有任何意识那一刻,脑子里只有,要不是这工
冷知识关于女性怀孕的6个奇怪而又真实的事实对于哺乳动物来说,怀孕是很正常的事情,这是生命繁衍的一个常规过程。因为人类想要获得更为优质的后代,人们会利用自己所了解的知识来应对怀孕。有一些知识可能来自于网络,有一些则来自于传闻
当预产期遇上新春佳节,这份攻略请收好临近新春佳节,有不少孕妈妈的预产期和中国传统春节撞了个满怀,她们随时都有可能在过年期间生产,怎样既能享受幸福的天伦之乐,又能保证孕妈妈们的安全呢?长沙市第四医院产科专家为大家提供了
怎么控制打骂孩子?怎样才能控制自己的情绪不对孩子打骂?我们先来看一个规律在遇到问题时,很冷静的人往往能很好地解决问题,而放大问题的往往是气急败坏的人。所以管理自己的情绪,对处理好亲子关系非常的重要。
生长在什么样的家庭孩子会更幸福?关于幸福的话题,人们对它的定义各不相同。总之,幸福的含义应该就是人们对自己生存的环境,物质,精神,经济,各种人际关系和谐相处等各方面都感到特别满足,满意,知足吧。那么生长在什么样家