怎么删除特定的克隆体(连连看)
scratch吧
全部回复
仅看楼主
level 2
本人小白一个,前日看一个用scratch做连连看的游戏的文章,但作者截图时不全,漏掉了一部分脚本,所以一直做不出来。这是我做的代码
黑框内的部分是作者脚本截图时漏掉的部分,我自己瞎写的。程序运行界面是这样
因为是第一次接触到克隆体的事后删除问题(以前都是在“当克隆体启时”模块里进行删除)。我个人对这个连连看的脚本思路理解是这样的:
1,在克隆时为每个克隆体生成序号,即脚本中的序号和我的编号,但是都是用的变量来存储,为什么不是用链表,到后期怎么去调用和删除每个克隆体呢?
2,通过点击来对比,如果造型相同则删除本身,并发出一个清除的通知去删除上一次的点击对象。这里也不理解的地方,所点击对象的造型可以通过外观模块中的“造型#”来获取,并把它存入“上一造型”这个变量与下一个点击对象的造型进行比较。它的编号怎么获得?作者似乎没有调用编号,而是把它的坐标存入到链表中,而且这个坐标好像只是为了判断两次点击是否在同一个对象上,如果不是点击的同一对象,就比较造型,造型相同就删除自己,并发出清除通知删除上一个克隆体,清除模块里面的脚本还是看不懂,它是如何做到删除上一个克隆体的?
大侠出来解释一下吧,谢谢。
2018年05月10日 01点05分 1
level 2
其实还有一个问题,程序运行时,要保证每个造型的数量都是偶数,不然出现奇数个的时候,没法配对就消除不完了。
2018年05月10日 02点05分 2
level 10
变量即可。[滑稽]
每个克隆体一种编号。[滑稽]
然后,选中的两个克隆体把自己的编号发送到全局,比较,相同就触发消除,不同就不动。[滑稽]
2018年05月10日 04点05分 4
回复
lxe121976
:当克隆体被点击时,如果(全局变量)比较1为0,把(全局变量)比较1设为“我的编号”,在比较2不为0之前等待,(判断)。如果(全局变量)”比较1“不为0,吧(全局变量)比较2设为“我的编号”,并比较编号。因为一种造型一种编号,所以如果编号相同就删除克隆体。
2018年05月10日 11点05分
回复
lxe121976
:为什么非要只用一个变量呢?两个变量就可以实现了
2018年05月10日 11点05分
回复
lxe121976
:克隆体是可以把自带的变量赋值给全局变量的啊[开心]
2018年05月10日 11点05分
回复
lxe121976
:我的sc已经删了,现在网不好,所以不加qq了,抱歉[委屈]
2018年05月10日 11点05分
level 12
还是用clip cc比较好。
2018年05月10日 09点05分 5
level 9
给角色建立一个局部变量,每个克隆体就会拥有这个单独的变量,互不影响,在生成克隆体的时候把这个变量设定成固定的编号,这样每个克隆体的这个变量的值就可以不同了,就是他这个程序里的序号了,然后就是他还弄了个造型编号,这个其实是多余的,因为自带的那个造型编号变量就是局部变量,可以直接拿来用的
克隆体这个东西,有些地方很好用,有些地方就难用了,比如克隆体不能互相检测碰撞
2018年05月10日 16点05分 6
你说的这个克隆体私有变量,是不是这样的:代码中本体有一个私有变量“我的编号 ”,所有克隆体在启动时都继承了这个变量,但是每个克隆体中的“我的变量”属于克隆体自己私有,虽然变量名是一样,但却是只属于每个克隆体私有,其中存储的值也是不一样的,其他克隆体和本体都不能访问,对吗
2018年05月11日 00点05分
然后点击某个克隆体的时候,检测“我的编号”,其实只是在访问这个克隆体私有的这个变量”我的编号“,而非其他克隆体或本体中的同名变量。
2018年05月11日 00点05分
回复
lxe121976
:对的,看起来是一个变量,其实是每个个体都有了一个同名变量
2018年05月11日 01点05分
回复
王者楚湘客
:在点击克隆体的时候,跟上一次进行比较,如果造型相同就删除本克隆体,但怎么发出指令让上一个被点击的克隆体删除呢?删除只能针对当前的这个克隆体啊,如果象其他语言能提供一点删除的方法就好了,比如”上一个克隆体.delete“[吐舌]
2018年05月11日 01点05分
level 9
就这样了,吃完饭抽空做了一下,应该跟你的有点区别,而且我这个还不完整,不是随机生成的,只是照你说的,解决了一下消除的问题
2018年05月11日 05点05分 7
确实可行。我再仔细地理解一下。非常感谢
2018年05月11日 06点05分
观察了一下。发现”清除“块里的"分身编号”居然是指的本体和所有克隆体的那个同名变量“分身编号”,这是我没有想到的,我一直以为它是当前被点击的这个克隆体的私有变量“分身编号”。有个问题,难道我们可以在任何地方通过“分身编号”来调用所用同名变量内的数据吗。
2018年05月11日 06点05分
level 2
测试了一下午,发现:如果已经生成了一堆克隆体,然后在其他位置(不是本克隆体的事件内,包括本克隆体的点击事件)要删除某个克隆体,必须通过广播的方式进行。举个例子,一个小猫的角色,生成了10个克隆体,每个小猫会说出自己的编号;点击另一个角色帅哥,他会问你“你想删除第几只小猫”,通过你的回答来删除某个克隆的小猫。以下依次是小猫的代码、帅哥的代码,最后是回答8时删除了第8只小猫:
在这里,要感谢@王者楚湘客,给出了一个例子让我完全明白了克隆机制。另外也感谢@初秋夜落 的帮助
2018年05月11日 08点05分 8
回复
lxe121976
:客气了,大家互相探讨!
2018年05月11日 08点05分
回复
lxe121976
:[滑稽]
2018年05月12日 03点05分
回复
lxe121976
:不过在克隆体脚本里面直接加一个判断也可以,有广播的作用。
2018年05月12日 03点05分
吧务
level 15
坟贴勿回
2022年06月27日 05点06分 11
1