Scratch

状课网-少儿编程网课专业平台

Scratch 跟我学scratch编程:简易文本编辑器

发布时间:2021-11-29 11:51:16 浏览 0

  设计初衷CC哥始终觉得scratch在输入信息这部分,命令很少,就只有一个询问命令,那么在设计程序的时候,这种输入风格,明显跟Scratch的动画风格很不相同。

跟我学scratch编程:简易文本编辑器

  CC哥就想做一个随着键盘输入,在屏幕上就显示输入内容的小程序。后来Scratch3.0推出后,又增加了文字朗读的插件,支持很多语言的朗读。就更想做一个简单的文本编辑小程序了。

  设计思路一开始的思路想法很简单,就是每敲入一个按键,屏幕就显示对应的字符。这个用图章就可以做了。后面想既然是编辑器,那光标是必不可少的。有了光标,又想到,当文字输错了怎么办,需要可以删除才行。

  所以做程序,要尽可能先想好你所要做的效果,否则边做边想,就会发现会越编写越复杂,连优化都很困难,而且往往会陷入沉默成本的怪圈。把程序设计的复杂难懂不说,甚至偏离你的初衷。

  总结功能:

  1:当按下字母键(暂不支持大小写)和标点符号键时(仅包括,和 . 这两个标点),屏幕上会出现对应的字符。

  2:光标会不断在文字后闪烁,当光标到行末后会自动切换下一行,或检测到输入句号时,切换至下一行。

  3:设计单字符的删除功能,可以随着光标回退,删除文章的最后一个文字。

  4:每输完一句话,程序把输入的内容播放一遍。

  看上去也并不复杂,让我们看看程序怎么设计吧。

 

  如果想免费获得CC哥的讲座中的程序代码以及游戏素材,可以通过扫描二维码关注《跟我学Scratch编程》,然后点击获取代码即可。

  程序设计先看看角色:

跟我学scratch编程:简易文本编辑器

  并不复杂,一个角色是字符集,一个角色是光标,一个是删除按钮。

跟我学scratch编程:简易文本编辑器

  字符集里的字符是CC哥就地取材,直接从自带的角色库里选的。逗号和句号是用造型工具画的。

  另外两个造型也是CC哥用造型工具画的。

  输入字母在屏幕上显示这个关键技术点就是侦测命令了,但是这里面明显符号不够,没有逗号和句号。当然还有其他一些符号。但是经过CC哥的测试发现,只要是键盘输入能够一个键输入的字符,还是可以用这个侦测命令的,我们只需要通过变量赋值,把我们想侦测的符号放进去就行。

跟我学scratch编程:简易文本编辑器

跟我学scratch编程:简易文本编辑器

  看到没,这是个小技巧,有了这个方法,有些符号你就可以放进去侦测了,但是想回车,后退这些功能符号,目前Scratch3.0还是没法侦测的。暂时先不用想了。

  所以这部分程序的思路就是用按键侦测的方法,将所有的字符集装在一个列表里面,如果我们按下的按键的正好在列表里面,那么屏幕就显示列表里对应的变量。

跟我学scratch编程:简易文本编辑器

  CC哥就先创建了一个字符表的列表,然后把26个英文字母和空格以及逗号和句号都放进去了。(强调一下,这个侦测命令是不能区分大小写的)

  然后就做一个不停的循环,每次按键,程序就把所有字符集检测一遍,检测是不是字符集里对应的按键被按下。如果有,就显示这个字符。

跟我学scratch编程:简易文本编辑器

  用这样的方法就可以检测出按键是哪个。(注意,按键检测一定是要配对使用,比如:按下,和按下不成立)

  让我们看看正式的程序:

跟我学scratch编程:简易文本编辑器

  1:用刚才的方法检测按键的具体值。

  2:按键如果是句号,那么就把这句话存到段落的列表里面。

  3:将输入的字符显示出来。(通过自定义命令)

  3:显示光标的位置。(每写入一个字符,光标就移动一下,如果移动到最右边,光标自动换行。)光标这个变量在程序里面永远对应了最后一个字符的位置信息。

  5:将该句子写入paragraph的列表中。

  到此输入并显示的部分就做完了,输入的全部内容都会存在段落这个列表中和当前语句这个变量中(如果最后一句话还没用句号结尾)。

跟我学scratch编程:简易文本编辑器

  显示字母这个比较简单,主要是用图章来在舞台上显示,关键的一点还有要计算出该字符在屏幕中对应的位置。(根据光标的数字可以计算出来。每行20个字符位)

 

  如果想免费获得CC哥的讲座中的程序代码以及游戏素材,可以通过扫描二维码关注《跟我学Scratch编程》,然后点击获取代码即可。

  光标显示

跟我学scratch编程:简易文本编辑器

  这段程序就是根据光标位置这个变量的值,计算出光标角色在舞台上的位置,然后不断闪烁。

  回退删除输入错误CC哥试了一下,确实会经常输错,所以对于输错的要修改,那么修改的逻辑和方法是什么?很简单,因为你是用图章做的,所以对于已经画上去的内容改变,就只有全部擦除后,重新画一遍。大家牢记这个方法。(我们因为已经记录了输入的全文,所以重新画一遍是没问题的)

  因为键盘没办法检测回退键,所以CC哥还是用了箭头按钮来代表回退删除,其实大家也可以用←来代替。

  按钮的功能是:

  每次按回退删除按钮,

  1:光标向左移动一格。

  2:同时最后一个字符被删除。

 

  看着简单,其实还有点复杂。其实CC哥一开始对于算法没想太细,就直接开始写程序了,这个坏习惯还是要改改。

  复杂的原因是对所有情况的处理。比如光标每次回退一步,但是当从一句跳到上一句时,或者从一句的换行处跳回上一行时,情况都不同。需要一一区别。

CC哥学习体会

key learning

  编程是一个很锻炼逻辑严谨的工具,因为处理一个问题都会有很多种情况,对于每种情况你都需要预先想到,并且做好处理应对的方法,如果没有预想到,那么程序就会有bug。而你解bug的时候,又会产生更多新的情况,如果又没有预见完全,那么解bug的同时又在产生新的bug。

  删除字符的代码是放在字符集的角色中的。当收到删除字符的消息,首先检测当前语句中是否还有内容,如果有,就把这个句子的最后一个字符删掉,如果没有,就从段落列表中把最后一项对应的句子取到当前语句变量中。

跟我学scratch编程:简易文本编辑器

  删除句子最后一个字符的自定义命令。

跟我学scratch编程:简易文本编辑器

  这个光标位置的代码放在Bar角色里。

  这段程序就是要思考什么情况下光标退一步,什么情况下光标要多退几步(当一句话不是正好为整行数的时候就会出现要多退几步情况,正好退到这句话的最后一位字符后面。)

跟我学scratch编程:简易文本编辑器

  简化后的判断条件:当光标要退到上一行时,要判断当前语句这个变量上面一行后面有没有空格,如果没有,就退一步,如果有空格,就把空格跳过去。

 

  如果想免费获得CC哥的讲座中的程序代码以及游戏素材,可以通过扫描二维码关注《跟我学Scratch编程》,然后点击获取代码即可。

  每删除一个字,屏幕都要刷新一遍,也就是重新画一遍,下面就是程序,大家可以自己看,怎么保证这种刷新屏幕不出现屏幕的抖动,之前的讲座很多次都讲过了。

跟我学scratch编程:简易文本编辑器

跟我学scratch编程:简易文本编辑器

  今天这个程序不算复杂,但是如果以后大家在做动画里面的对话时,这里面的一些方法都可以用到。

  ★

  另外要抱歉一下,因为CC哥平常的工作比较忙,所以除了每周尽量做一个帖子跟大家交流外,很少能找到时间来回答各位提出的问题,和对学员的程序提供指导,万分见谅。★

  文章来源:跟我学scratch编程

本文链接:https://www.ascratch.com/news/17670.html

上一篇:跟我学scratch编程:自动生成迷宫 下一篇:返回列表