![6bdb0d082f7ddbf9db46a6dcdf2fe5e3.png](https://i-blog.csdnimg.cn/blog_migrate/38a168195f3f733edf9ac44729d08337.jpeg)
本文介绍的作品是全国青少年创意编程与智能设计大赛创意编程比赛一等奖获得者周逸城同学的参赛作品。
作品说明
(衷心提醒)如计算质数,请开加速模式(Shift+绿旗)
(开始界面)有普通计算器、质数计算器
(普通计算器)按数字键输入数字,运算符号键改变运算模式,=键计算,AC清零,控制键为白色,数字键为绿色,运算符为红色,变量为黄色,复杂运算符为蓝色,常数为紫色。
(质数计算器)按数字键输入数字,计算键计算所有比输入数字小的质数,查询键查询此数是否是质数,AC清零
![78f7cf56bb764e9effe733b8169eac54.png](https://i-blog.csdnimg.cn/blog_migrate/383d04684e65110e7ec8fdfa6e08c694.png)
正文
说起计算器大家一定不陌生,每个人都用过,最常用的就是各样的实体计算器,像这样最普通的:
![bb35900fdfe027ba48c6515b7cc4c69a.png](https://i-blog.csdnimg.cn/blog_migrate/c853a8eabf28ac39d3417a88be1e2062.jpeg)
还有电脑或手机上的计算器:
![5682893a1a4416d5414790f760f82d1b.png](https://i-blog.csdnimg.cn/blog_migrate/a2e6f19e3258f023e4d13b6e087fe670.png)
今天,我们就在Scratch软件中用代码实现一个计算器,最终的效果是这样的:
![23bd304f364a75d1b457376a2ef34c27.gif](https://i-blog.csdnimg.cn/blog_migrate/cb8ab87c6d7254aba3b23a7261dcdb36.gif)
别看这个计算器其貌不扬,它可比我们之前使用过的计算器都要强大,因为它除了可以实现基础的计算功能外,还可以进行科学计算甚至质数计算哦。相信周逸城同学的数学课程学习的非常棒,因为要实现计算器的所有功能,就必须对每一种运算符背后的计算逻辑都了如指掌。否则,计算出来的数字就是错的,那谁还会用这个计算器呢?
在解析计算器的代码之前,我们有必要先看一看Scratch软件中的运算模块:
![cd68241857783839352e4206d5388f36.png](https://i-blog.csdnimg.cn/blog_migrate/71b1d213e2093b5d6ca05f3f62ed3c80.png)
这个模块其中有六条语句,它们支撑起了计算器背后所有的运算逻辑。
![07202e9449e104f95a2e3268bba7d3cf.png](https://i-blog.csdnimg.cn/blog_migrate/5dcdddf25c57ab18a92795d709274b85.png)
前四条语句就不用多介绍了,它们就是数学计算中最最基本的加减乘除运算。
第五条语句的作用是获取第一个数字除以第二个数字后的余数部分。
第六条语句表示数学中的函数运算,绝对值后面跟一个空白格子,意思是对空白格子中输入的数字进行绝对值函数计算,计算的结果就是这条语句所代表的值。如果我们点击绝对值几个字后面的三角符号会弹出一个下拉框:
![2650de50e005602135a9ba2e9adb44aa.png](https://i-blog.csdnimg.cn/blog_migrate/ec04d949aeed647130bc6fdae6a87df1.png)
下拉框里面有很多各种各样的数学函数,我们选择其中一个,就可以对输入的数字做相应的函数计算,计算器中所有科学计算的逻辑都是由这条语句实现的。
好了,了解了这些数学运算语句后,我们就开始解析计算器的代码吧。
![06020cd0dd4f526985f84bd829f86dd4.png](https://i-blog.csdnimg.cn/blog_migrate/701f151179b6e4f81e89fd56288ac1c0.png)
点击绿旗
![86a91064cf8b6c9cd90b52adbe62e7b6.png](https://i-blog.csdnimg.cn/blog_migrate/f26a2d0103316ec951cb37a535f4ddde.png)
在计算器的首页正式显示之前,周逸城同学给它的作品添加了一个小小的Booting启动动画,让这个多功能计算器就像电脑启动一样,看上去很强大。
![da3cfbd8559ef6b833c00b3dd01e9467.png](https://i-blog.csdnimg.cn/blog_migrate/3788c76a3d4fa8dea0c31d6740056aba.png)
实现这个小动画的角色就是它,boot角色:
![689c98ec78a8720908c8a02340b5fb29.png](https://i-blog.csdnimg.cn/blog_migrate/3852c10860cae4c1481d1b56312fd0b1.png)
它一共有两个造型,在代码中不停的切换这两个造型就可以实现小齿轮转动的效果。
![e36f353c85f57a88400da0236f0dab01.png](https://i-blog.csdnimg.cn/blog_migrate/cc09393458f6c2833281e69093c7ca51.jpeg)
这个动画还有一个逐渐透明并消失的效果,它是由虚像特效实现的,代码一开始将角色的虚像特效初始化为0,表示动画完全可见,接着使用重复执行语句重复25次,每次将角色的虚像特效值增加4,这样重复执行的过程完成之后,虚像特效的值就是25×4=100,相对应的,动画就完全透明看不见了。
接着,角色会发送Go的广播,计算器正式的首页就该显示出来了。
![06020cd0dd4f526985f84bd829f86dd4.png](https://i-blog.csdnimg.cn/blog_migrate/701f151179b6e4f81e89fd56288ac1c0.png)
Go
![86a91064cf8b6c9cd90b52adbe62e7b6.png](https://i-blog.csdnimg.cn/blog_migrate/f26a2d0103316ec951cb37a535f4ddde.png)
计算器首页的显示也是有一个过渡动画的:
![57592080825ab4db2ce9018698ff89e1.png](https://i-blog.csdnimg.cn/blog_migrate/55424c6c195f837a7dd5e2801f3cc1e7.png)
这个动画非常像果冻老师小时候玩的红白游戏机的游戏动画,在那时,游戏机的硬件配置远远达不到处理精细动画的要求,所以就通过这种像素式的渐变动画来实现游戏中不同场景的切换,这种效果在Scratch中可以通过像素化特效和虚像特效结合起来实现。
计算器的首页上一共有三个文字按钮和一个背景:
![55b88693649c5e1da3432631a5ae6733.png](https://i-blog.csdnimg.cn/blog_migrate/cbc64c5cd17a4b76db4c431896d903cd.png)
所以,它们都会被加上像素式的渐变动画,就以“质数计算器”这个文字为例,当它接收到Go的广播后代码是这样的:
![1ee0c46a0200a45924042c08eb92a31a.png](https://i-blog.csdnimg.cn/blog_migrate/4bdeb292e3c19b1b57f2f0656e7fd652.jpeg)
点击绿旗之后,质数计算器文字的像素化特效和虚像特效都被初始化为200,虚像特效使得文字隐藏完全不可见,如果我们去掉这个效果,就可以看到文字被像素化的初始特效。
![e8f605e5d6e92d40cab49ea90fc12093.png](https://i-blog.csdnimg.cn/blog_migrate/88d046bd46ffcbe3b533555d6033cf26.png)
当接收到Go的广播后,文字的像素化特效和虚像特效同时发生改变,它们的值从200逐渐减小并变为0,文字最终就显示为正常的状态了。
其它两个文字按钮和背景与质数计算器文字的效果是相同的,所以代码也是一模一样的。
首页的过渡动画就是这样,很简单。接着我们就要看一看作品的核心内容:普通计算器与质数计算器。按照惯例,由简到难,我们先点击普通计算器吧。