小学基础计算机绘图软件,「小喵科技」图形化编程软件:基础绘图

原标题:「小喵科技」图形化编程软件:基础绘图

基础绘图

LOGO语言

Logo语言跟scratch一样,来自于美国麻省理工学院。它的初衷是教会儿童基本的计算机技能和思想,但是后面随着scratch的出现慢慢淡出了大家的视野。 而且logo语言并不是针对生产的语言,也就是学完它之后你并不能直接将它应用到实际工作中,而python就没有这个问题。而且经过kittenblock的整合,将python语言的特点和scratch简易上手的图形化界面很好地结合到一起,让python的代码学习变得更加有趣。

这一系列教程主要目的是向大家传授python相关的基本知识,并且结合scratch引擎得到更加直观和友好的表现。因此大部分时间是鼓励大家使用python代码进行编辑,当然图形化方块也能完成系列教程中的大部分功能。

让bug动起来

我们重新打开上一节的示例项目,程序最后一行penDown就为整个海龟作图的环境做好了准备,并且在其移动的路径中留下画笔的轨迹。

# -*- coding: utf-8 -*-

import _env, time, random

from scratch3 import *

Beetle = Sprite("Beetle")

x = 0

Beetle.gotoXY(0, 0)

Beetle.direction(90)

Beetle.clear()

Beetle.setPenSize(3)

Beetle.setColor("#ff0000")

Beetle.penDown()

在左侧的运动目录中有各种各样的运动控制方块,理论上任意运动方式都会留下其对应的轨迹。

我们从左侧拖一个移动10步的方块到python代码区域,并且将其中的10改为100

Beetle.move(100)

点击绿旗帜后可以看到bug精准的停在了x=100的坐标轴上:

2d0e2bc42c719a02a16c0c88c96cd184.png

整个scratch的舞台大小是宽480个像素,也就是x轴最大运动范围是-240到240。舞台高360像素,运动范围就是-180到180。

让bug转弯

除了让bug直线前进,我们还可以让bug转弯。从左侧拖一个左转15度的方块到python代码区,并将参数改为90度。之后让它继续前进

Beetle.move(100)

Beetle.turnLeft(90)

Beetle.move(100)

2d5ed05e6aa8591dcf82771a8c958e75.png

让bug写字

我们学会了移动和转弯两条基本指令就可以做很多事情了,首先让bug在舞台上写一个Z字吧。

这里我们首先需要思考的是我们的bug初始化位置是(0,0),如果要写一个Z字需要先让它移动到(0,100)作为笔画的初始位置。

向前移动100个像素后我们需要让它掉头45度指向(0,0)坐标

根据勾股定理我们知道(100,100)到(0,0)的直线距离是141个像素

当bug回到了(0,0)后我们又需要让bug掉头45度并重新指向x正方向,并向前移动Z的最后一笔

完整的代码如下:

# -*- coding: utf-8 -*-

import _env, time, random

from scratch3 import *

Beetle = Sprite("Beetle")

x = 0

Beetle.gotoXY(0, 100)

Beetle.direction(90)

Beetle.clear()

Beetle.setPenSize(3)

Beetle.setColor("#ff0000")

Beetle.move(100)

Beetle.turnRight(180-45)

Beetle.move(141)

Beetle.turnLeft(180-45)

Beetle.move(100)

b90adb9675b12afc7631be726c744433.png

坐标系与对象的思考

是不是觉得上面的过程异常麻烦呢?实际上我们一直以bug的视角来思考,如果我们以整个坐标系的视角来思考的话,实际上我们的目的变得很简单。就是让bug从(0,100)分别移动到(100,100)、(0,0)最后(100,0)这几个点.

实际上scratch3也有类似的方块实现:

11bee2091f9156712a34ae31fc89c50b.png

大家可以将下面的方块拖到代码区,并修改相对应的参数。

Beetle.gotoXY(0, 100)

Beetle.direction(90)

Beetle.clear()

Beetle.setPenSize(3)

Beetle.setColor("#ff0000")

Beetle.gotoXY(100, 100)

Beetle.gotoXY(0, 0)

Beetle.gotoXY(100, 0)

看看是不是简洁了很多呢?

注意编程中大部分问题都不是唯一解,会有各种各样的实现方法。这就是算法所在的地方了,当然日常工作并不会用到很高深和生涩的算法,除非你碰到了1%的效率就有几百万上下差距的场景。

当然我们鼓励大家从开始就培养严谨的逻辑和最优实现的思维,去思考和探索怎样才可以做的更好,但是作为刚刚入门的初学者也可以不需要太在意这些细节。返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值