APP下载

Scratch制作升级版计算器

2020-01-13

电脑报 2020年46期
关键词:计算器小数点列表

我们之前曾经用Scratch编写过一个计算器,但是那个计算器数字显示使用Scratch的变量显示过于简陋,这次我们使用新的思路制作一个显示效果优秀、加减乘除、有小数点、连续运算等功能的升级版计算器。由于我们之前已经介绍过一种计算器程序,本文中仅对升级版重难点和不同之处做介绍,其他部分可以扫码下载源代码自行研究。

一、界面准备

首先用图片编辑软件对一张手机计算器截图进行修改,保留需要的功能按钮,保存图片高度为360像素,导入作为舞台背景。

自行绘制白色的数字角色,这个角色中包含11个造型,依次是1到9、0、小数点和负号,并修改这些造型的命名。根据显示效果调整好角色的大小(图1)。

二、 按键定位和输入

对舞台背景编程。我们需要通过侦测鼠标的位置来确定用户点击了哪里,并利用“二维数组”为按钮定位,首先根据按钮将界面分为5行4列,比如数字5就在3行2列、数字9在4行3列。测量每个行列X、Y坐标的范围(如图1),重复监测鼠标的XY坐标,并据此修改变量“计算机-行”和“计算机-列”的值(图2)。

再将鼠标位置的行列位置转换对应的变量“键值”,就可以让程序知道用户点击了计算器的哪个按键了。比如当“计算器-行=2,计算器-列=4”时,变量键值设为‘+(含单引号),表示点击了加号,用单引号是将数字键和其他功能键区别开。用“if参数1”(監控坐标)、“if参数2”(监控行列)、“if参数3”(鼠标按下)来表示当前的输入状态,当值为1时表示有输入,为0时表示目前没有输入(图3)。

当侦测到鼠标点击的动作时,表示输入了数字或运算符,根据此时的键值判读执行相应的自定义积木(函数)。比如当键值=‘退格时调用退格积木。通过观察,我们还可以把功能相同的按键归为一组。比如说数字键0~9为一组,当按下数字键时,判断“键值>-1”,调用“数字键”;运算符加减乘除为一组,“if参数3=0”调用相应积木进入后续的判断。

比如收到小数点的键值,就执行小数点的积木(函数)(图4)。

为了实现连加操作(不按清除就在结果上继续运算),加减乘除和等号的操作几乎一样,不同在于加减乘除时要先清空一次列表,判断运算符不是等号,完成时清空运算符变量(图5)。

三、 数字显示

对数字角色编程。输入的数字和计算结果依次保存在列表“字符串”中,为了在计算器的液晶屏中显示出多个漂亮的数字,从列表中依次提取数值用来控制角色造型的变换,改变数字角色的造型后再克隆,并用计算公式根据数字的位数调整克隆体的放置位置。(图6)。

在计算器的显示屏上每个字符宽20,显示屏上最多可以容纳12个。用计算公式调整每个克隆体的位置。当接收到清除命令——清除数字=Yes时就可删除克隆体表现出清屏的效果(图7)。

四、 数值的存入、取出和分解

通过对“字符串”列表的操作完成数字的这些操作。当点击鼠标时,首先进行状态判断,如果条件符合就将“键值”加入“字符串”列表,这里使用“字符串”列表存储输入的数值,每个位单独存放。当需要参与运算时,要把列表中临时存放的各位数转换回可计算的数字。运算符之前输入的数字依次赋值给操作数1,运算符之后的数字赋值给操作数2,然后根据运算符进行运算即可。注意每次更新字符串列表后需要把变量“清除数字=Yes”和“广播显示字符串”配合使用,清屏后显示新的数字(图8、图9)。

当需要从列表中取出数值用于计算时,依次取出第1项(最高位)后乘10加上第2项(次高位),直到全部取出存入变量操作数。遇到小数点时需要做一个很精巧的特别处理,变量i就是用来记录小数点的位置,遇到小数点时i归零,之后i记录的数字就是小数点后的数位了,当i=j时表示没有小数点,当不相等时根据i的数值将操作数除以10的i次方即可得到含小数点的正确数值了(图10)。

五、 运算

运算部分比较简单,直接根据运算符对输入的变量“操作数1”和“操作数2”计算即可。其中“运算符2”设为键值的第二个字符是因为运算符第一个字符是单引号(图11)。

当计算位数结果超出11位时或在已有运算符的情况下输入新的运算符时,需要刷新列表或截取有效部分重新顯示。这里使用自定义积木“分解显示的数字”完成这些需求(图12)。

以上就是升级版计算器的重难点,受篇幅所限其他功能的实现请见33版 扫码下载后自行研究,注意看程序是如何处理运算符和等号的,以及如何处理小数点问题和运算结果超出显示屏宽度的问题,非常值得学习借鉴。(本程序源代码参考自冉爸学堂特此感谢!)

猜你喜欢

计算器小数点列表
扩列吧
[计算器不是万能的]
列表法解分式方程问题探索
一个损坏的计算器
列表画树状图各有所长
计算器游戏
小数点移到哪去了
计算器
2011年《小说月刊》转载列表
超级小数点