用Java,javascript等写过俄罗斯方块游戏的请进,小弟遇到一个问题

一种形状在下落的过程中是有多个线程的,一个线程(设为线程1)在循环的往下移动,移动之前判断是否可以向下移动,手按向下箭头往下走一步是另外的线程(设为线程2),假设某一时刻线程1判断下面没障碍,可以向下走,可是这时线程1停了,cpu在处理线程2,使形状向下走了一步,导致下面有障碍了,这时再切回线程1,就直接向下走了,我看过一些人写的源码,也没有处理这的逻辑,也没有出现问题,怎么回事儿?更令我费解的是用javascript写的俄罗斯方块,js是单线程的,根本没有锁的概念,一个setInterval在循环下移,还有游戏面板在监听按键事件,我写过一个js版的,没有出现问题,为什么呀

第1个回答  推荐于2017-09-19
我也用js写过俄罗斯方块 就简单点说吧
线程问题确实会有 但是几率特别特别小 当你把下降一格的间隔设置的非常短时才会很偶尔出现一次.
我写的逻辑是先走一步 再判断有没有障碍物 若有 则回退一步
道理其实一样, 在自动下降完之后 没有走到判断有没有障碍物这一步之前 这段时间(下降-判断)短暂到几乎可以忽略不计 而你又刚刚好在这段时间点里按了向下箭头 这得要多么偶然才会出现这种情况 又不是什么特别高大上的游戏 何必那么麻烦本回答被提问者和网友采纳
第2个回答  2015-08-28
障碍?移动都是根据坐标计算的吧,两者都是操作坐标,只要坐标在允许范围内就行,然后配个speed控制坐标增量就直下了。1s其实真的很长,按键只是很短的瞬间,中断处理也快,你是没感觉的。
第3个回答  2017-01-14
初始化是类加载机制的最后一步,这个时候才正真开始执行类中定义的JAVA程序代码。
在前面准备阶段,类变量已经赋过一次系统要求的初始值,在初始化阶段最重要的事情就是对类变量进行初始化,关注的重点是父子类之间各类资源初始化的顺序。
第4个回答  2015-08-28
谁告诉你一种形状在下落的过程中是多个线程的????
相似回答