这是风火轮编程Python初级教程的第十课,下面是用python制作的学习大纲。
用Python制作的幻灯片类型的作品,本课程主要学习如何用python的海龟模块制作漂亮的简单图形。我们把它命名为赤橙黄绿青蓝紫光。以下是完整源代码。
本程序需要sprites模块支持,安装方法为在命令提示符下输入以下命令安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sprites –upgrade
""" 第十课 赤橙黄绿青蓝紫(落笔抬笔打点) """ from sprites import * s = '第十课 赤橙黄绿青蓝紫(落笔抬笔打点)' screen = Screen() screen.bgcolor('blue') screen.titlebar(False) root = screen._root # 窗口对象 root.wm_attributes('-alpha',0.7) # 设置窗口为全透明(0到1.0) screen.setup(800,800) screen.tracer(0,0) # 下面的代码让窗口可以拖动. oldx = 0 oldy = 0 def startmove(event): global oldx,oldy oldx = event.x oldy = event.y def stopmove(event): global oldx,oldy oldx = 0 oldy = 0 def movewindow(event): global oldx,oldy dx = event.x - oldx dy = event.y - oldy root.move(dx,dy) screen.cv.bind("", startmove) screen.cv.bind(" ", stopmove) screen.cv.bind(" ",movewindow) # 下面的代码按方向箭头则窗口能上下左右移动 screen.onkeypress(lambda:root.move(10),'Right') screen.onkeypress(lambda:root.move(-10),'Left') screen.onkeypress(lambda:root.move(0,-10),'Up') screen.onkeypress(lambda:root.move(0,10),'Down') screen.listen() ft_title = ('楷体',30,'bold') ft_context = ('宋体',18,'normal') t = Sprite(visible=False,pos=(-500,100)) t.color('magenta') clock = Clock() for x in range(100): t.clear() t.write(s,align='center',font=ft_title) t.wait() t.fd(5) clock.tick(60) spacekey = Key('space') # 空格键 m1 = Mouse() # 鼠标左键 while not spacekey.down():screen.update() # 简介 brief =""" 本节课,我们主要学习倒退命令、抬笔与落笔和打点命令。 然后运用所学过的知识用程序的顺序结构画一个简单的彩色图形。 在这个课程中,我们把画的步骤描述了一下,大家在观看视频的时候 可以暂停一下,看看能不能自己先画出来。 """ if brief!='': # 如果有课程简介,则生成一个角色, ftx = ('宋体',18,'normal') 简介 = Sprite(visible=False,pos=(0,-100)) 简介.color('white') 简介.write(brief,align='center',font=ftx) while spacekey.down():screen.update() while not spacekey.down():screen.update() for x in range(66): # 标题向右消失 t.clear() t.write(s,align='center',font=ft_title) t.fd(10) if brief!='': 简介.clear() 简介.write(brief,align='center',font=ftx) 简介.bk(10) clock.tick(60) 简介.clear() #以下是显示学习的内容段 studycontent = """ 主要学习内容 1、关于参数 2、倒退命令 3、落笔与抬笔 4、dot打圆点命令 5、编程画图形 6、练习与作业 """ t.color('white') t.clear() t.sety(-260) # 这里修改菜单的显示y坐标 ft = ('楷体',24,'bold') s = studycontent while not spacekey.down():screen.update() # 下面的代码显示主菜单 for x in range(130): t.clear() t.write(s,align='center',font=ft) t.bk(5) clock.tick(60) def slow_write(t,string): """ t:角色,string:要显示的字 本函数慢慢的显示字。 """ string = string.split('\n') # 换成列表 oldxy = t.position() # 记录老的坐标 t.goto(-360,330) # 定位到标题的坐标 # 显示标题,注意string[0]是一个空行 t.write(string[1],font=ft_title) t.addy(-50) for line in string[2:]: # 每一行字 for char in line: # 每一个字符 t.write(char,align='center',font=ft_context) t.wait(0.1) cd = len(bytes(char,'gb2312')) if cd == 1: t.addx(16) else: t.addx(24) t.setx(-360) t.addy(-30) t.goto(oldxy) s1 = """ 1、关于参数 所谓参数,它可能是一个数据,也可能是一个变量, 关于参数我们以后还会讲解。在这里把它理解为写 到命令小括号中的数据。如turtle.fd(100), 那么100就是参数。而在print(32,76)这句代码中, print命令有两个参数,它们以逗号进行隔开。 """ def press1(): t.clear() slow_write(t,s1) while not spacekey.down():screen.update() t.clear() t.write(s,align='center',font=ft) screen.onkeypress(press1,'1') s2 = """ 2、倒退命令 如果要让海龟倒退的话,我们可以在forward命令中用负数。 当然,也可以直接用海龟画图提供的backward、back和bk命令。 它们都是能让海龟往后退。 如turtle.backward(100)就能让海龟倒退100个单位了。 当然,我们写成turtle.back(100)或者turtle.bk(10) 都是完全没有问题的。 """ def press2(): t.clear() slow_write(t,s2) while not spacekey.down():screen.update() t.clear() t.write(s,align='center',font=ft) screen.onkeypress(press2,'2') s3 = """ 3、落笔与抬笔 海龟默认就是落笔的,当我们移动它时,它就会留下轨迹。 如果不希望它留下轨迹,那么我们可以用抬笔命令让它抬笔。 pendown,pd,down这三个是落笔命令,没有参数。 penup,pu,up这三个是抬笔命令,没有参数。 isdown命令判断是否是落笔还是抬笔状态。 """ def press3(): t.clear() slow_write(t,s3) while not spacekey.down():screen.update() t.clear() t.write(s,align='center',font=ft) screen.onkeypress(press3,'3') s4 = """ 4、dot命令 dot命令能打圆点,它有两个参数,第一个表示直径,第二个表示颜色。 如果不写颜色,则以海龟的颜色为圆点的颜色。 假设海龟的颜色为红色,那么dot(100)会打一个直径为100的红圆。 dot(100,'blue')则不管海龟什么颜色,海龟都会在屏幕上 会打一个直径为100的蓝色的圆。 """ def press4(): t.clear() slow_write(t,s4) while not spacekey.down():screen.update() t.clear() t.write(s,align='center',font=ft) screen.onkeypress(press4,'4') s5 = """ 5、编程画图形 现在来练习编程,让海龟从屏幕的左边到右边打不同颜色的圆点。 颜色依次是赤、橙、黄、绿、青、蓝、紫。 由于黑色的背景能更加衬托出彩色的效果,所以当导入海龟模块后, 我们获取了屏幕,把它命名为screen,然后把屏幕的背景色设为黑色。 接着,为了让海龟在移动的过程中不留下轨迹,所以让它抬笔了。 我们希望海龟从左边到右边打圆点,所以让海龟倒退了300个单位。 最后,我们不断地打一个不同颜色的圆点,然后前进100个单位, 一共打了7个点。 """ def press5(): t.clear() slow_write(t,s5) while not spacekey.down():screen.update() t.clear() t.write(s,align='center',font=ft) screen.onkeypress(press5,'5') s6 = """ 6、练习与作业 ★ 画两条并排的竖线条,长度为100,隔50个单位 ★ 打两行甚至更多行的赤橙黄绿青蓝紫圆点图形。 ★ 打点时只写直径这个参数,重新编制赤橙黄绿青蓝紫图形。 """ def press6(): t.clear() slow_write(t,s6) while not spacekey.down():screen.update() t.clear() t.write(s,align='center',font=ft) screen.onkeypress(press6,'6') byebye = """ 下次再见! """ def pressq(): t.clear() t.color('cyan') t.home() t.write(byebye,align='center',font=('宋体',38,'bold')) while not spacekey.down():screen.update() screen.bye() screen.onkeypress(pressq,'q') screen.mainloop()
以下是付费内容,包括播放视频、python源代码及素材等等。
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)