萌新求助,scratch颜色触碰问题
scratch吧
全部回复
仅看楼主
level 2
刚学了一下scratch尝试写一个俄罗斯方块的游戏,希望底部在触碰到某些颜色的时候停止下落,图是自己画的,如图 在红色长条的程序里面如果遇到绿色会停,但是位置很尴尬啊...叠上去了..怎么能让底部碰到停呢...是和图形的中心点有关,还是怎么样呢? 求大神帮帮忙,没有玩这个的朋友
2019年03月20日 10点03分 1
level 2
另外关于凑满正行,之后消掉一条,也没什么思路,求教
2019年03月20日 10点03分 2
level 1
仔细观察了一下楼主的背景
提供一下个人的思路,整体就是以链表代替坐标:
可以用一下画笔和链表俩系统,
可以用画笔去读取链表中的数字来画方块,加入链表x(后面叫做x)可以设计成数据储存那种,
原理差不多就是:首先要定义每种方块的在链表x中的代号,链表x中的每一项中的每个0相当于一个格子,当读取到链表x当中对应格子有特殊字符时,画笔就转移到链表项对应的坐标去画个数字对应方块,我建议先创个变量“读取”,做成:重复执行,内容是 变量读取+1 ,如果 链表x 的第 读取 项 不等于 0,就在这个位置绘画对应方块。这是拿来绘制方块位置的,全部绘制完毕后,侦测可否消除,然后再彻底清空(画笔)一次。
生成方块时,得先区别开每种方块自己的代号,类似于:
L字 方块叫L,方块 方块叫B,首先生成一个随机数(当然,你可以用数字来代替字母,或者说,你可以弄成:如果随机数=1,那就生成L方块),根据随机数来向链表添加内容,类似于:(我想办法用链表帮你简化,这里我介绍一个,你也可以用比较麻烦但是简单的)加个链表y(方便计算储存用的),再加个变量 计数,用来计数,将y第长度项设定为LLL,将计数设为y第长度项长度加1,重复执行直到y第长度项字符长度=12,将y第长度项设为( y链表第长度项 和 x链表第一项第 计数 个字符),理论上说,循环结束之后,一个崭新的第一行就出现在y里了,当然因为有的格子占据2,3,4行,可以依据他的高度,来决定y链表在计算的时候带入的x链表项目数(就得重复执行,得在y计算时放入更多项。)。也许这就很麻烦,但是为了做个好游戏,你需要加油对吧——或者说,再加个链表,用来记录每个方块对应的旋转角度,用1,2,3,4,来代表上下左右,然后,根据方块对应形状,你需要把上方的LLL改成其他的,再将记录变量加1,
将链表展开就像:
1[ L L L 0 0 0 0 0 0 B B 0] (当然这是为了好看,正常情况下,空格不打更好)
2[ L 0 0 0 0 0 0 0 0 B B 0]
3[ 0 0 0 0 0 0 0 0 0 0 0 0] ←这是链表x
4[ 0 0 0 0 0 0 0 0 0 0 0 0]
....转向之后
1[ L L 0 0 0 0 0 0 0 B B 0] (很累,对吗?)
2[ L 0 0 0 0 0 0 0 0 B B 0]
3[ L 0 0 0 0 0 0 0 0 0 0 0]
4[ 0 0 0 0 0 0 0 0 0 0 0 0]
之后,就得运用到上方的系统。
移动感觉可能不是太难,主要是转向,像上头那样
这里又需要一个链表,用来记录正在移动的方块坐标,生成完毕方块后
每隔几秒,将正在控制的方块代号记录到一个(新记录)变量中,并将正在运动的方块代号设定为特殊的一个字符,用来说明在绘制时,这种方块是运动的,同时也可以进行上面的那种翻转,这个链表的作用是,只腾出正在运动的方块的位置,
彻底的执行完一次绘画方格模块后,这里举个例子:侦测 链表x中的每一行的12(个代数)是否都不为0(这里也许又得创建一个变量,需要弄 [如果 链表x 第x项 的 第变量个 字符不等于0,那么变量+1,如果这个变量到了12,证明这一行都有方块;否则侦测下一项),假如第8项当中全都不是0,就让链表x第8项全部清空(指的是将第八项内容改成12个0)然后加分,每次清空后,需要将第8项上的所有行列向下一项进行复制,用 将链表x的第x项替换为链表x的x-1项,将最后一项(第一项)刷新为12个0。
因为懒的原因,只能明天继续回复点,嫌麻烦的话我自己抽空试试看
2019年03月20日 13点03分 3
吧务
level 15
不用这样,你只要把方格编号,状态(是否有方块)存链表里,然后检测下一行是否有方块
2019年03月20日 13点03分 4
level 5
楼主这个图片做的真好
2019年03月29日 05点03分 5
1