- UID
- 343
- 帖子
- 987
- 精华
- 13
- 积分
- 7771
- 阅读权限
- 101
- 来自
- 哈尔滨工程大学
- 在线时间
- 124 小时
- 注册时间
- 2004-12-17
- 最后登录
- 2008-7-11
|
2楼
发表于 2005-11-26 21:49
| 只看该作者
- Stage.scaleMode = "noScale";
- _root.createEmptyMovieClip("rootmc", 0);
- _root.createEmptyMovieClip("movemc", 1);
- rootmc._x = 10;
- rootmc._y = 10;
- movemc._x = 10;
- movemc._y = 10;
- _global.zl = 0;
- _global.mcx = 3;
- _global.mcy = 0;
- _global.zl = 0;
- _global.stack = new Array(9);
- _global.m = new Array(16);
- _global.er = 0;
- _global.score = 0;
- _global.hard = 500;
- _global.cl = new Array(0xFFFFFF, 0xFF0000, 0xFF8000, 0xFFFF00, 0x00FF00, 0x0000FF, 0x8000FF, 0xFF00FF,0xFFFFFF);
- //定义底层方块数组。(10*20)
- var roots = new Array(10);
- for (var i = 0; i<10; i++) {
- roots[i] = new Array(20);
- }
- //定义活动方块数组。(4*4)
- var moves = new Array(4);
- for (var i = 0; i<4; i++) {
- moves[i] = new Array(4);
- }
- //定义画方块函数1。
- squaredraw = function (mc, x, y) {
- x = 30*x;
- y = 30*y;
- var x1 = x+4;
- var x2 = x+27;
- var y1 = y+4;
- var y2 = y+27;
- with (mc) {
- lineStyle(4, cl[zl+1], 100);
- moveTo(x1, y1);
- lineTo(x1, y2);
- lineTo(x2, y2);
- lineTo(x2, y1);
- lineTo(x1, y1);
- }
- };
- //定义画方块函数2。
- squaredraw2 = function (mc, x, y) {
- var m = x;
- var n = y;
- x = 30*x;
- y = 30*y;
- var x1 = x+4;
- var x2 = x+27;
- var y1 = y+4;
- var y2 = y+27;
- with (mc) {
- lineStyle(4, cl[roots[m][n]], 100);
- moveTo(x1, y1);
- lineTo(x1, y2);
- lineTo(x2, y2);
- lineTo(x2, y1);
- lineTo(x1, y1);
- }
- };
- //定义底层画方块的函数。
- rtmcdr = function () {
- rootmc.clear();
- for (var i = 0; i<10; i++) {
- for (var j = 0; j<20; j++) {
- if (roots[i][j]>0) {
- squaredraw2(rootmc, i, j);
- }
- }
- }
- };
- //产生随机方块的函数。
- movmcrand = function () {
- for (var i = 0; i<4; i++) {
- for (var j = 0; j<4; j++) {
- moves[i][j] = 0;
- }
- }
- zl = random(7);
- switch (zl) {
- case 0 :
- // 棒子
- moves[0][1] = 1;
- moves[1][1] = 1;
- moves[2][1] = 1;
- moves[3][1] = 1;
- break;
- case 1 :
- // 左L
- moves[0][1] = 2;
- moves[1][1] = 2;
- moves[2][1] = 2;
- moves[0][0] = 2;
- break;
- case 2 :
- // 右L
- moves[0][1] = 3;
- moves[1][1] = 3;
- moves[2][1] = 3;
- moves[2][0] = 3;
- break;
- case 3 :
- // 左之
- moves[0][0] = 4;
- moves[1][0] = 4;
- moves[1][1] = 4;
- moves[2][1] = 4;
- break;
- case 4 :
- // 右之
- moves[0][1] = 5;
- moves[1][1] = 5;
- moves[1][0] = 5;
- moves[2][0] = 5;
- break;
- case 5 :
- // T
- moves[0][1] = 6;
- moves[1][1] = 6;
- moves[2][1] = 6;
- moves[1][0] = 6;
- break;
- case 6 :
- // 方块
- moves[0][0] = 7;
- moves[0][1] = 7;
- moves[1][1] = 7;
- moves[1][0] = 7;
- break;
- default :
- trace("Error!!!"+" "+zl);
- break;
- }
- if (movebl() == false && er == 4) {
- gmo();
- }
- };
- //定义画移动方块的方法。
- movmcdr = function () {
- movemc.clear();
- for (var i = 0; i<4; i++) {
- for (var j = 0; j<4; j++) {
- if (moves[i][j]>0) {
- squaredraw(movemc, i+mcx, j+mcy);
- }
- }
- }
- };
- //定义下落的函数。
- xl = function () {
- mcy++;
- if (movebl() == false) {
- mcy--;
- for (var i = 0; i<4; i++) {
- for (var j = 0; j<4; j++) {
- if (moves[i][j]>0) {
- roots[i+mcx][j+mcy] = moves[i][j];
- }
- }
- }
- mcclean();
- rtmcdr();
- mcx = 3;
- mcy = 0;
- movmcrand();
- }
- movmcdr();
- };
- //定义判断方块是否能移动的函数。
- movebl = function () {
- var ebl = true;
- er = 0;
- for (var i = 0; i<4; i++) {
- for (var j = 0; j<4; j++) {
- if (moves[i][j]>0) {
- var x = i+mcx;
- var y = j+mcy;
- if (y>19) {
- ebl = false;
- er = 8;
- }
- if (x<0) {
- ebl = false;
- er = 1;
- }
- if (x>9) {
- ebl = false;
- er = 2;
- }
- if (roots[x][y]>0) {
- ebl = false;
- er = 4;
- }
- }
- }
- }
- return (ebl);
- };
- //定义方块旋转的函数。
- movmcrot = function () {
- var p = mcx;
- var q = mcy;
- for (var i = 0; i<4; i++) {
- for (var j = 0; j<4; j++) {
- m[i*4+j] = moves[i][j];
- }
- }
- if (zl == 0) {
- for (var i = 0; i<4; i++) {
- for (var j = i; j<4; j++) {
- var z = moves[i][j];
- moves[i][j] = moves[j][i];
- moves[j][i] = z;
- }
- }
- }
- if (zl>0 && zl<6) {
- for (var i = 0; i<3; i++) {
- for (var j = 0; j<3; j++) {
- stack.push(moves[j][i]);
- }
- }
- for (var i = 0; i<3; i++) {
- for (var j = 2; j>=0; j--) {
- moves[i][j] = stack.pop();
- }
- }
- }
- while (not (movebl())) {
- // trace(er);
- switch (er) {
- case 1 :
- mcx++;
- break;
- case 2 :
- mcx--;
- break;
- default :
- mcx = p;
- mcy = q;
- for (var i = 0; i<4; i++) {
- for (var j = 0; j<4; j++) {
- moves[i][j] = m[i*4+j];
- }
- }
- break;
- }
- }
- };
- //定义判断消方块的函数。
- mcclean = function () {
- for (var j = mcy; j<mcy+4; j++) {
- var mcf = true;
- for (var i = 0; i<10; i++) {
- if (not (roots[i][j]>0)) {
- mcf = false;
- continue;
- }
- }
- // trace(j+" "+mcy+" "+mcf);
- if (mcf) {
- for (var l = j; l>0; l--) {
- for (var k = 0; k<10; k++) {
- roots[k][l] = roots[k][l-1];
- }
- }
- }
- }
- };
- //定义判断游戏结束的函数。
- gmo = function () {
- clearInterval(timer);
- zt = -1;
- for (var i = 0; i<4; i++) {
- for (var j = 0; j<4; j++) {
- moves[i][j] = 0;
- }
- }
- my_cm.customItems[2].enabled = true;
- // trace("Game Over!");
- };
- //定义按键函数。
- keys = new Object();
- keys.onKeyDown = function() {
- //trace(Key.getCode())
- if (Key.isDown(Key.RIGHT) && zt>=0) {
- mcx++;
- if (movebl() == false) {
- mcx--;
- }
- movmcdr();
- }
- if (Key.isDown(Key.LEFT) && zt>=0) {
- mcx--;
- if (movebl() == false) {
- mcx++;
- }
- movmcdr();
- }
- if (Key.isDown(Key.DOWN) && zt>=0) {
- mcy++;
- if (movebl() == false) {
- mcy--;
- }
- movmcdr();
- }
- if (Key.isDown(Key.SPACE) && zt>=0) {
- while (movebl()) {
- mcy++;
- }
- mcy--;
- movmcdr();
- }
- if (Key.isDown(Key.UP) && zt>=0) {
- movmcrot();
- movmcdr();
- }
- if (Key.isDown(Key.CONTROL)) {
- if (zt>=0) {
- clearInterval(timer);
- info.txt = "Pause";
- zt = -1;
- } else {
- timer = setInterval(xl, lv[level]);
- info.txt = score;
- zt = 0;
- }
- }
- };
- //产生N行随机方块的函数。
- rtran = function (n) {
- for (var j = 19; j>=(20-n); j--) {
- var m = random(7)+3;
- for (var i = 0; i<m; i++) {
- do {
- k = random(10);
- } while (roots[k][j]>0);
- roots[k][j] = 8;
- }
- }
- };
- //定义右键菜单。
- my_cm = new ContextMenu();
- my_cm.customItems.push(new ContextMenuItem("作者主站——流星Flash", opensite));
- my_cm.customItems.push(new ContextMenuItem("关于作者——紫色流星", aboutme, false));
- my_cm.customItems.push(new ContextMenuItem("重新开始", reset, true));
- function opensite() {
- _root.getURL("http://ilovelassie.tengyi.cn/index.htm");
- }
- function aboutme() {
- _root.getURL("http://ilovelassie.tengyi.cn/about.htm");
- }
- function reset() {
- my_cm.customItems[2].enabled = false;
- zl = random(7);
- mcx = 3;
- mcy = 0;
- er = 0;
- zt = 0;
- for (var i = 0; i<10; i++) {
- for (var j = 0; j<20; j++) {
- roots[i][j] = 0;
- }
- }
- timer = setInterval(xl, 1000);
- rtran(12);
- rtmcdr();
- movmcrand();
- }
- my_cm.customItems[2].enabled = false;
- my_cm.hideBuiltInItems();
- _root.menu = my_cm;
- Key.addListener(keys);
- timer = setInterval(xl, 1000);
- rtran(12);
- rtmcdr();
- movmcrand();
复制代码 |
|