首页 > 编程语言 >A008 《变形记》编程 源码

A008 《变形记》编程 源码

时间:2023-07-06 17:32:20浏览次数:49  
标签:turtle A008 变形记 gif shape 源码 forward 90 100


一、课程介绍

本节课将通过修改画笔的外形,创作一些有趣的作品。

A008 《变形记》编程 源码_一语


二、知识重难点解析

A008 《变形记》编程 源码_一语_02画笔外形

shape()

画笔调用 shape() 方法,可以设置画笔“外形”,默认是 classic ,其他形状如下:

A008 《变形记》编程 源码_添加画笔外形_03

如:

import turtle
p = turtle.Pen()

p.shape('circle')    # 画笔设置成“圆”外形

turtle.done()

A008 《变形记》编程 源码_《变形记》编程 源码_04

A008 《变形记》编程 源码_《变形记》编程 源码_05添加外形

addshape()

要将画笔设置成自己想要的外形,需要提供一张gif格式的图片,用 turtle 调用 addshape() 方法,将这张gif图片添加到 turtle 外形表中,画笔才能调用 shape() 方法将其外形设置成这张图片的模样。

import turtle turtle.addshape('fish.gif')    # 将“fish”添加到外形表
p = turtle.Pen() p.shape('fis.gif')    # 将画笔外形设成“fish”*
turtle.done()

A008 《变形记》编程 源码_《变形记》编程 源码_06显示&隐藏画笔


showturtle() 或 st():

显示画笔,使画笔变成可见状态。

showturtle() 方法可简写为 st()。

hideturtle() 或 ht():

隐藏画笔,使画笔不可见。

hideturtle() 方法可简写为 ht()。


三、单词卡

shape [ʃeɪp]   外形

show [ʃoʊ]   显示

fish [fɪʃ]   鱼

heart [hɑːrt]   心


四、小试牛刀

4.1 源码操作

编写代码实现小女孩奔月的效果。

A008 《变形记》编程 源码_《变形记》编程 源码_07

### 代码 ###

import turtle
p = turtle.Pen()
p.penup()

p.forward(250)
p.left(90)
p.forward(210)
p.dot(200, 'gold')

p.left(135)
p.forward(600)

turtle.addshape('facebook4.png')
p.shape('facebook4.png')

for i in range(600):
    p.forward(-1)

turtle.done()

4.2 源码操作

实现一个火柴人发射火球的效果。

A008 《变形记》编程 源码_《变形记》编程 源码_08

import turtle
p = turtle.Pen()

p.penup()
p.forward(-300)
p.pendown()
p.dot(100)
p.right(90)
p.forward(200)
p.right(45)
p.forward(100)
p.forward(-100)
p.left(90)
p.forward(100)
p.forward(-100)
p.right(45)
p.forward(-100)
p.left(90)
p.forward(100)
p.left(90)
p.forward(25)
p.forward(-50)

p.forward(25)
p.right(90)
p.penup()
p.forward(30)
turtle.addshape('fireball.gif')
p.shape('fireball.gif')
for i in range(500):
    p.forward(1)

turtle.done()

4.3 源码操作

实现一个火柴人不断发射火球和冰球的效果。

A008 《变形记》编程 源码_添加画笔外形_09

A008 《变形记》编程 源码_《变形记》编程 源码_10

提示:

  • 绘制时注意火球和冰球的发射间隔;
  • 火球:fireball.gif;
  • 冰球:iceball.gif。
### 代码~ ###

import turtle
p = turtle.Pen()

p.penup()
p.forward(-300)
p.pendown()
p.dot(100)
p.right(90)
p.forward(200)
p.right(45)
p.forward(100)
p.forward(-100)
p.left(90)
p.forward(100)
p.forward(-100)
p.right(45)
p.forward(-100)
p.left(90)
p.forward(100)
p.left(90)
p.forward(25)
p.forward(-50)

p.forward(25)
p.right(90)
p.penup()
p.forward(30)

for i in range(50):
    turtle.addshape('fireball.gif')
    p.shape('fireball.gif')
    p.forward(500)
    p.ht()
    p.forward(-500)
    turtle.addshape('iceball.gif')
    p.shape('iceball.gif')
    p.st()
    p.forward(500)
    p.ht()
    p.forward(-500)
    p.st()

turtle.done()


五、扩展练习

A008 《变形记》编程 源码_《变形记》编程 源码_11

### 代码 ###

import turtle
p=turtle.Pen()
turtle.bgpic("阿短和编程猫.gif")
turtle.addshape("heart.gif")

p.shape("heart.gif")
p.penup()

for i in range(10):
    p.forward(200)
    p.ht()
    p.forward(-200)
    p.st()

turtle.done()


六、自由发挥

画一只到处走的小乌龟吧~

A008 《变形记》编程 源码_《变形记》编程 源码_12

import turtle
p=turtle.Pen()

p.shape('turtle')
p.penup()
p.forward(300)
p.right(180)
p.forward(200)
p.right(90)
p.forward(50)

turtle.done()


标签:turtle,A008,变形记,gif,shape,源码,forward,90,100
From: https://blog.51cto.com/u_16173421/6643983

相关文章

  • RocketMq5.0 任意延迟时间 TimerMessageStore 源码解析
    TimerMessageStore简略介绍延迟队列rmq_sys_wheel_timer指定时间的延迟消息。会先投递到rmq_sys_wheel_timer队列中然后由TimerMessageStore消费队列数据,将数据消费到timerWheel使用时间轮算法,实现秒级任务TimerMessageStore操作的文件store\consumequeue\rmq_sy......
  • 直播平台源码,默认页面几秒后自动跳转另一页面
    直播平台源码,默认页面几秒后自动跳转另一页面publicclassMainActivityextendsAppCompatActivity{   privatestaticfinallongDELAY=1000;  privateTimerTasktask;   @Override  protectedvoidonCreate(BundlesavedInstanceState){    ......
  • GDAL源码剖析与开发指南 - 李民录 - 2014
    本书适合地理信息系统和遥感等相关专业应用的开发人员阅读参考。本书中大部分的示例代码都是使用C/C++语言编写,有一定C/C++语言基础的读者能够快速上手开发相关应用。目录第1章GDAL简介.................1第2章OGR空间参考.............42第3章OGR库说明........................
  • Red Hat 开始限制 RHEL 源码可得性
    导读RedHat宣布,其企业发行版RHEL(RedHatEnterprise Linux)相关源码现在只能通过CentOS Stream进行公开访问,但付费客户和合作伙伴仍可以通过RedHatCustomerPortal访问源代码。此举将加大社区发行版,如AlmaLinux、RockyLinux以及OracleLinux等提供1:1二进制兼容构建......
  • TensorRT源码编译
    目录1.参考资料2.源码编译2.1.下载TensorRT2.2.TensorRTOSS编译2.2.1.clone指定分支2.2.2.环境依赖2.2.3.编译附1.安装指定版本的cudatoolkit2.安装指定版本的cudnn1.参考资料tensorrt编译https://zhuanlan.zhihu.com/p/346307138tensorrt相关指南https://zhuanlan.zhihu.c......
  • 关于调试gmsh源码过程中产生的gmsh.dll和gmsh.pdb文件无法匹配,进而导致无法载入pdb文
    省流版由于ALL_BUILD会将对应于gmsh.exe的调试文件gmsh.pdb附在对应于gmsh.dll的调试文件gmsh.pdb文件,进而导致gmsh.pdb无法和gmsh.dll文件进行版本匹配,进而导致无法载入,进而导致无法调试gmsh源码;解决办法:将对应于gmsh.exe的gmsh.pdb改为其他任意命名即可;或者仅仅生成gms......
  • 直播源码开发,文字垂直滚动、纵向走马灯
    直播源码开发,文字垂直滚动、纵向走马灯方法一、使用系统控件ViewFlipper方式:布局文件: <ViewFlipper    android:id="@+id/view_flipper"    android:layout_width="300dp"    android:layout_height="35dp"    android:layout_centerInParen......
  • 直播商城源码,加载网页、html文件显示加载进度
    直播商城源码,加载网页、html文件显示加载进度新建加载WebViewActivity新建WebViewActivity加载网页html文件 classWebViewActivity:AppCompatActivity(){     overridefunonCreate(savedInstanceState:Bundle?){    super.onCreate(savedInstanceSta......
  • 我坚定的认为,这个源码肯定是有 BUG 的!
    你好呀,我是歪歪。上周我不是发了《我试图给你分享一种自适应的负载均衡。》这篇文章嘛,里面一种叫做“自适应负载均衡”的负载均衡策略,核心思路就是从多个服务提供者中随机选择两个出来,然后继续选择两者中“负载”最小的那个节点。前几天有读者看了文章后找到我,提出了两个问题。......
  • 语音直播源码知识分享:探索新的沟通方式
     语音直播是一种借助在线平台或应用程序进行实时语音传输的形式,它在互联网发展的背景下逐渐兴起,并受到越来越多人的关注和喜爱。 随着互联网的快速发展和社交媒体的普及,传统文字、图像的沟通方式已经无法满足人们日益增长的交流需求。在这个背景下,语音直播作为一种创新的沟通......