欢迎光临
我们一直在努力

Scratch第三十四讲:画一个漂亮的菜单

CC哥每次做帖子都是非常认真的,总希望在每次的帖子里帮助大家掌握一个小技巧或者一个编程的小知识,让大家的编程变得更生动。让更多的小朋友通过scratch掌握编程的一些知识和技巧,将来为自己将来真正学习编程打下良好的基础。CC哥不求回报,只求大家在学到知识的同时,帮助CC哥把帖子分享给更多的人,让更多的小朋友都能掌握编程知识。CC哥的理想就是在中国小朋友编程能力提升上尽一份小小的力量!

我经常去Scratch的官网上去看一些比较好的例子,我发现确实国外的很多Scratch的爱好者做的游戏非常精美,哪怕一个细节都处理的非常好。今天CC哥跟大家分享这样一个例子。这个程序比较复杂,CC哥会挑出有意思的部分跟大家分享,让大家通过一个程序可以学到更多的技巧和知识点。

这个程序里面有很多技术点,今天CC哥先从菜单跟大家来分析起。

程序进去以后有个开始界面,中间有一个按钮,点击后正式玩游戏。首先这个开始界面就非常有意思,这个界面包括中间的按钮都是作者程序启动后直接在背景上用程序画出来的。而不是大家之前经常使用的图片和角色的方式来做的。

让我们看看这每一步都是怎么画的。

1、球洞:

这个简单,就是设置好颜色,位置,画笔的粗细,然后落笔再抬笔,相当于点了一个点。

这里面的一个技巧就是画笔的颜色设置:

颜色设置有两条积木命令来设置画笔的颜色,第一个语句是选颜色,可以用鼠标来点击屏幕上的颜色进行选择。其实这个颜色可以用数值(RGBA格式)表示,不过因为这个参数不能直接放入数字和字符,我们只能通过把运算命令把数值放进去。这个程序里面放的其实是个0的数值(0在计算机RGB颜色里面对应的是黑色)。第二个命令是用一个数值代表颜色,大家注意这个数值不是平常我们熟悉的计算机颜色的RGB数值,而是Scratch自己定义的,比如0就代表红色,70代表绿色,130代表蓝色。

2、旗杆:

这个也简单,先设定好画笔的颜色,白色,粗细,从球洞开始,落笔,画一条直线。然后再画小红旗。第一步先用红笔画一个三角形,然后再把笔调粗一点,在三角形内部再画几笔,保证把三角形内部填成红色。

3:球杆和高尔夫球:

画法跟刚才差不多,这里不用讲了。

4、开始按钮:

画法也是一样,设定好颜色,位置,笔的粗细后先画个三角形。然后调整笔的粗细,调整好位置之后继续画,指导把这个图形涂满白色。

注意:Scratch里面画图的命令没有直接画图形的,就是一个抬笔和落笔。所以大家如果要花实心的图形的时候,就需要自己一笔一笔的涂。

整个界面画好了。等等,还漏掉一个关键的。屏幕的又下角还有个开关。

而且这个开关是可以动的,我们点一下,开关就转向另一个方向。这个是怎么实现的?CC哥一开始还以为这是由一个角色的两个造型来实现的,结果认真看了程序才发现,这个开关也是在背景上画出来的。让我们来看看作者怎么画的,以及开关的控制程序。

这一段是画开关的程序。前面在菜单主程序中有一段是检测鼠标的命令,如果鼠标点击了开关按钮后,#volume的变量会在0,1之间变化,点一次变0,再点一次变1。然后根据这个变量是1还是0,来决定画开关在左边还是在右边。

这个程序最有意思的是画笔的颜色设定。刚才我们有提过,这个命令本来是要我们指定一种具体的颜色的。但是刚才我们说了,实际上我们可以通过用运算命令,将颜色的数值放进去。那么在这里我们讲一下这个数值跟颜色的关系。

我们知道所有的颜色都是由红绿蓝三色组成的。

那么在计算机用数字表示颜色的时候,就用2进制来代表颜色,RGB就代表三种颜色。red,green,blue。每种颜色用8位二进制数字构成,也就是每种颜色可以有256个阶度。所以总共是24位2进制数字。24位色被称为真彩色,它可以达到人眼分辨的极限,发色数是色,也就是2的24次方。

Scratch里面的颜色是32位真彩色,但是32位色就并非是2的32次方的发色数,它其实也是色,不过它增加了256阶颜色的灰度也就是8位透明度,发色数其实2的24次方,但是增加了8位透明度,就规定它为32位色。

所以Scratch的颜色的数字,可以用下面的公式去写:

Color=B+G*256+R*65536+A*65536*256  A是透明度

有了这个知识,大家就看懂作者在这个开关画笔的颜色的算法了。

所以在这里面,作者设置了半透明的画笔颜色,然后在落笔时就画了一个点,再向右画了一笔,那么左边起点其实画了两次,就显得象是一个左边的开关。如果从右向左画,右边第起到也是画了两次,就显得象是一个右边的开关。(CC哥也是学到了,厉害!)

菜单主程序:

在这里面大家注意几个要点:

1:菜单不是画上去之后就不动了,而是通过循环不断在刷新,也就是不断的清空再画一遍。作者这么做主要是为了检测是否点击了鼠标。(其实也可以不用不断的重画,不过那样的话,程序会复杂一点)

2:在鼠标被按下时要检测鼠标的位置,如果在三角形区域,那么就是开始程序,如果在开关区域,就是拨动开关。

其中这两条语句大家可以学习一下:

第一条:大家看,这个条语句的小算法,就是可以让每次鼠标点击的时候,#volume的值会在0和1之间变换,象一个开关一样。

第二条:这条语句是保证了在鼠标按键抬起时,开关才会变化,而不是一按下去就发生变化。我们之前一直讲过,鼠标和键盘的按下都会有干扰的,如果没有这句命令,那么在你按鼠标的时候可能手指的轻微抖动就会被计算机检测到几次的鼠标按下。那么开关就会在一瞬间变换了几次。而这条语句是保证了你鼠标按下时不会执行,一直等到你鼠标抬起时才会执行。大家要熟记这种用法。

总结一下:

本节课还是学了几个重要的小知识和技巧:

1、计算机颜色如何用数值表示,以及在Scratch里如何用标准的计算机颜色数值数值代替颜色选择。

2、如何去通过程序去画图。

3、开关的编程技巧。

4、鼠标按键抬起时才执行下一步程序。

超乎想象的使用体验

历史课程:

赞(29)
分享到: 更多

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址