让海龟来帮助我们画小汽车

让海龟来帮助我们画小汽车

首页休闲益智画个车更新时间:2024-06-01

我们已经学会了指令,变量和函数。接下来我们要学会如何设计和实现函数。

现实世界的问题是复杂的,多变的。如何将问题分析清楚,分解出相应的函数,并将其组织起来变得越来越困难。在介绍LOGO语言的分支与循环语句之前,先来学习面向过程语言的设计。

接下来考虑我们这次的任务,画一辆小汽车,现实的汽车是很复杂的,为了降低难度,我们对他进行简化,目标定为如下的小汽车。

海龟画小汽车

初一看图像,我们会毫无头绪,先不要着急,我们将问题分解。

观察图形可知,小汽车由两个轮子,两个窗体,一个外边框组成。

为此,我们将问题自上而下分解为以下步骤:

  1. 画左轮
  2. 画右轮
  3. 画左窗口
  4. 画右窗口
  5. 画边框,并填充颜色。

这种自上而下的分解问题是最自然的一种设计哲学,在项目管理里也称为工作分解结构(WBS)。

为了更好的团体之间交流,我们引入软件设计工具,流程图(DFD),将我们的思路文档化。

流程图有三大结构,分别是顺序结构、选择结构和循环结构。

这里我们的目标比较简单,直接用顺序结构就可以了。

流程图

流程图画好了,只是帮我们理清楚了思路,实际问题还是没有解决。

为了解决这一问题,我们引入数学工具,以中心点为原点,建立坐标系,分别求出几个起始点的坐标。

建立坐标系

运用简单的几何学知识,可以知道五个点的坐标如下:

A (-150, -70)

B (150, -70)

C (-80,30)

D (30,30)

E (150, 0)

接下来实现五个函数就简单了。

先来画两个汽车轮子,由于他们只是坐标不同,我们先定义一个画轮子的函数。

TO carwheel :radius :color arc 360 :radius setcolor :color fill END

函数carwheel负责画轮子。

接下来分别描画左轮和右轮

TO carleftwheel pu setxy -150 -70 pd carwheel 30 "black END

TO carrightwheel pu setxy 150 -70 pd carwheel 30 "black END

其中pu是让海龟举起画笔,setxy 150 -70表示移动到坐标点A,这样移动过程中它不会画出行走线。pd是放下画笔,这样海龟就可以继续画了。

同样,画车窗也可以抽象出一个共同函数

TO carwin :size :color filled :color [repeat 4 [fd :size rt 90]] END

接下来分别描画左窗和右窗

TO carleftwin pu setxy -80 30 pd carwin 50 "yellow END

TO carrightwin pu setxy 30 30 pd carwin 50 "yellow END

最后实现车轮廓,并填充颜色。

TO carbody pu setxy 150 0 pd fd 100 lt 90 fd 300 lt 90 fd 100 rt 90 fd 70 lt 90 fd 70 lt 90 fd 440 lt 90 fd 70 lt 90 fd 70 pu fd 150 rt 90 setcolor "red fill ht END

其中ht是将海龟隐藏的指令。

上面的函数全部实现以后,我们就可以定义主函数

TO car carleftwheel carrightwheel carleftwin carrightwin carbody END

然后调用car,我们就可以看到一辆汽车被画出来了。



查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved