俄罗斯方块原本是前苏联(俄罗斯)科学家阿列克谢·帕基特诺夫(Алексей Леонидович Пажитнов)在1984年6月利用空闲时间所编写的游戏程序 ,据说游戏的作者最喜欢网球(Tennis)运动,于是,他把来源于希腊语的tetra(意为“四”)与其结合,造了“tetris”一词,之后开始提供授权给各个游戏公司。在那个时代,游戏机甚至于计算机的运算能力普遍较低(当时盛行传说中的640KB内存……),游戏堪称匮乏之极,因此简单易写的俄罗斯方块迅速普及, 造成各平台上软件大量发行的“恐怖”现象。
传说中Game Boy版的俄罗斯方块层在日本大卖424万套,是Game Boy史上卖得最好的游戏。海湾战争时,也是前线美军最常拿来消磨时间的游戏之一(如果鄙人没记错的话,GB是美军当时的标准装备之一|||,传说美军是一边玩着口袋妖怪,一边战胜了伊拉克~~~)。
俄罗斯方块的游戏规则:
* 俄罗斯方块是由下面这几种常见方块构成,全部为四点组成:
o 长条:一次最多消除四层
o 7(左右):最多消除三层,或消除二层
o 田:消除一至二层
o S(左右):最多二层,容易造成孔洞
o T:最多二层
o 部分游戏有单格方块,可以穿透固定的方块到达最下层空位。其他的改版中出现更多特别的造型。
游戏方式:
* 方块会从区域上方开始缓慢继续落下。
* 玩家可以做的操作有:以90度为单位旋转方块,以格子为单位左右移动方块,让方块加速落下。
* 方块移到区域最下方或是着地到其他方块上无法移动时,就会固定在该处,而新的方块出现在区域上方开始落下。
* 当区域中某一列横向格子全部由方块填满,则该列会消失并成为玩家的得分。同时删除的列数越多,得分指数上升。
* 当固定的方块堆到区域最上方而无法消除层数时,则游戏结束。
一般来说,游戏还会提示下一个要落下的方块,熟练的玩家会计算到下一个方块,评估现在要如何进行。由于游戏能不断进行下去,对商业用游戏不太理想,所以一般还会随着游戏的进行而加速提高难度,通常打到最后时,多眨一次眼就可能牺牲掉……
PS:另外补充一点,俄罗斯方块事实上是有知识产权的。最初的俄罗斯方块知识产权由前苏联外国贸易协会(ELORG)持有,在苏联over之后,由The Tetris Company继承,但由于“非法”使用者数量过大,事实上陷入了无法收取任何使用费的窘态中。自1990年代初期开始,全世界大量流行的小型游戏机,多半都有类似于俄罗斯方块的游戏,不过——9成9都不是授权产品。
闲话少说,既然是如此简单的东东,今天我们也用Java写两个俄罗斯方块好了。
示例源码下载地址: http://code.google.com/p/loon-simple/downloads/list
与往常一样,一个例子写两台平台的,首先是PC版的实现,源码如下:
然后,是Android版的(TetrisField部分除Image与Graphics2D外完全一致,故不再粘贴):
示例源码下载地址: http://code.google.com/p/loon-simple/downloads/list
与前面的实例一样,都是先在PC上通过LGame-Simple调好,而后做函数替换移植到Android,写PC版用了一个小时,移植过去5分钟不到,吼吼吼……