A10_赤橙黄绿青蓝紫(落笔抬笔打点)_Python教学视频

A10_赤橙黄绿青蓝紫(落笔抬笔打点)_Python教学视频

python画笔打圆点落笔抬笔dot命令教程

这是风火轮编程Python初级教程的第十课,下面是用python制作的学习大纲。

python画笔打圆点落笔抬笔dot命令教程

python画笔打圆点落笔抬笔dot命令教程


用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资源。)

李兴球

李兴球的博客是Python创意编程原创博客

评论已关闭。