//***************************************************游戏说明**************************************//
//游戏名称:俄罗斯方块
//作者:李鹏(James.Li)
//日期:2004.3.16
//游戏规则:通过方向键控制左侧的下落方块,使得左侧方块积累尽可能得少;
//游戏简介:在游戏开始时,可以设置难度和速度,分别为(0-9)个等级;在游戏中间可以按空格键暂停或者继续游戏;
//    本款游戏只提供顺时针旋转方式,不做方向的选择控制;
///**************************************************程序入口**************************************//
init();
//***************************************************初始化部分************************************//
////////初始化函数////////////
function init() {
 ////定义变量//
 createValues();
 ////程序绘图//
 createBg();
 ////定义方块儿形状数组//
 initArrays();
 ////建立选择区域逻辑//
 setOpt();
 ////初始化控制键//
 keyCtrl();
 ////初始化选择键//
 option();
 ////键盘跟踪开始,初始化为选择状态//
 Key.removeListener(keyListener);
 Key.addListener(keyListener_opt);
}
////////定义变量////////////
function createValues() {
 ////是否为暂停状态标签,初始化为否//
 pause = false;
 ////是否为优先下落标签,初始化为是//
 isDroped = true;
 ////进入状态初始化为“开始游戏”//
 isFirst = "start";
 ////内部记分初始化为0//
 tempScore = 0;
 ////难度等级初始化为0//
 levelValue = 0;
 ////速度等级初始化为0//
 speedValue = 0;
 ////得分表初始化为0//
 scoreValue = 0;
}
/////////为mc建立方块显示函数/////
function createUnit(mc) {
 ////建立方块存储空间//
 mc.createEmptyMovieClip("unit", 0);
 ////绘制方块//
 with (mc.unit) {
  moveTo(0, 0);
  lineStyle(0, "0x000000", 100);
  lineTo(10, 0);
  lineTo(10, 10);
  lineTo(0, 10);
  lineTo(0, 0);
  lineTo(2, 2);
  lineTo(8, 2);
  lineTo(8, 8);
  lineTo(2, 8);
  lineTo(2, 2);
  moveTo(8, 2);
  lineTo(10, 0);
  moveTo(8, 8);
  lineTo(10, 10);
  moveTo(2, 8);
  lineTo(0, 10);
 }
}
////////建立方块显示区域(主要区域)//
function createElems() {
 ////建立显示平台(bg)//
 this.createEmptyMovieClip("bg", 0);
 ////存放层变量初始化为0//
 depth = 0;
 ////建立15行10列的方块显示区域//
 for (var i = 0; i<10; i++) {
  for (var j = 0; j<16; j++) {
   this.bg.createEmptyMovieClip("elem_"+i+"_"+j, depth++);
   eval("this.bg.elem_"+i+"_"+j)._x = 5+i*10;
   eval("this.bg.elem_"+i+"_"+j)._y = 5+j*10;
   //为每个单元绘制方块//
   createUnit(eval("this.bg.elem_"+i+"_"+j));
   //隐藏单元//
   eval("this.bg.elem_"+i+"_"+j)._visible = false;
  }
 }
}
////////绘制平台的区域分割线////
function createBgLines() {
 ////开始绘制////
 with (this.bg) {
  moveTo(0, 0);
  lineStyle(0, "0x000000", 100);
  lineTo(210, 0);
  lineTo(210, 170);
  lineTo(0, 170);
  lineTo(0, 0);
  moveTo(5, 5);
  lineTo(105, 5);
  lineTo(105, 165);
  lineTo(5, 165);
  lineTo(5, 5);
 }
}
////////绘制预览区域//////////
function createViews() {
 /////建立平台///
 this.bg.panel.createEmptyMovieClip("nextView", 1);
 ////层变量初始化为0//
 var tempDepth = 0;
 ////建立预览区域(次要区域)//
 for (var i = 0; i<4; i++) {
  for (var j = 0; j<4; j++) {
   //建立单元//
   this.bg.panel.nextView.createEmptyMovieClip("elem_"+i+"_"+j, tempDepth++);
   eval("this.bg.panel.nextView.elem_"+i+"_"+j)._x = 5+i*10;
   eval("this.bg.panel.nextView.elem_"+i+"_"+j)._y = 5+j*10;
   //为每个单元绘制方块//
   createUnit(eval("this.bg.panel.nextView.elem_"+i+"_"+j));
   //隐藏单元//
   eval("this.bg.panel.nextView.elem_"+i+"_"+j)._visible = false;
  }
 }
 this.bg.panel.nextView._y = 20;
 this.bg.panel.nextView._x = 10;
 delete tempDepths;
}
////////绘制显示文本区域//
function createTexts() {
 ////建立标题文本//
 this.bg.panel.createTextField("nextText", 0, 0, 0, 50, 20);
 var textFormat = new TextFormat();
 textFormat.size = 12;
 this.bg.panel.nextText.selectable = false;
 this.bg.panel.nextText.text = "NEXT";
 this.bg.panel.nextText.setTextFormat(textFormat);
 //调用建立文本函数,建立“难度”、“速度”、“得分”、“游戏入口”和作者签名文本//
 createTextAndValue(this.bg.panel, "level", 2, 0, 60, textFormat);
 createTextAndValue(this.bg.panel, "speed", 3, 0, 80, textFormat);
 createTextAndValue(this.bg.panel, "score", 4, 0, 100, textFormat);
 createTextAndValue(this.bg.panel, isFirst, 5, 0, 120, textFormat);
 addAuthorName(this.bg.panel, 40, 145, 6, textFormat);
}
////////建立功能区域////
function createPanels() {
 ////建立平台///
 this.bg.createEmptyMovieClip("panel", depth++);
 this.bg.panel._x = 110;
 this.bg.panel._y = 5;
 ////调用函数建立预览和文本区域//
 createViews();
 createTexts();
}
////////建立游戏总平台////
function createBg() {
 /////建立主要显示区域、区域分割线和功能区域///
 createElems();
 createBgLines();
 createPanels();
}
/////////建立文本函数//////
function createTextAndValue(local, mcName, depth, mc_x, mc_y, tf) {
 ////获得路径//
 local.createEmptyMovieClip(mcName+"_mc", depth);
 eval(local+"."+mcName+"_mc")._x = mc_x;
 eval(local+"."+mcName+"_mc")._y = mc_y;
 ////建立名称与内容文本//
 eval(local+"."+mcName+"_mc").createTextField(mcName+"Text", 0, 0, 0, 50, 20);
 eval(local+"."+mcName+"_mc").createTextField(mcName+"Value", 1, 50, 0, 50, 20);
 eval(local+"."+mcName+"_mc."+mcName+"Text").selectable = false;
 eval(local+"."+mcName+"_mc."+mcName+"Text").text = mcName.toUpperCase();
 eval(local+"."+mcName+"_mc."+mcName+"Text").setTextFormat(tf);
 eval(local+"."+mcName+"_mc."+mcName+"Value").selectable = false;
 eval(local+"."+mcName+"_mc."+mcName+"Value").text = eval(mcName+"Value");
 eval(local+"."+mcName+"_mc."+mcName+"Value").setTextFormat(tf);
}
////////作者署名函数/////
function addAuthorName(local, x, y, depth, tf) {
 local.createEmptyMovieClip("author_mc", depth);
 local.author_mc._x = x;
 local.author_mc._y = y;
 local.author_mc.createTextField("authorText", 0, 0, 0, 300, 20);
 local.author_mc.authorText.selectable = false;
 local.author_mc.authorText.text = "JAMES.LEE";
 tf.size = 10;
 local.author_mc.authorText.setTextFormat(tf);
}
////////建立选择功能区域函数//
function setOpt() {
 ///////重置文本//
 createTexts();
 ////建立选择框//
 if (this.bg.panel.selectFrame == undefined) {
  this.bg.panel.createEmptyMovieClip("selectFrame", 10);
  with (this.bg.panel.selectFrame) {
   moveTo(0, 2);
   lineStyle(0, "0x666666", 100);
   lineTo(90, 2);
   lineTo(90, 15);
   lineTo(0, 15);
   lineTo(0, 2);
  }
 }
 ////定义或定位当前选择位置//
 if (currentOpt == undefined) {
  currentOpt = 2;
 }
 if (isFirst == "start") {
  ///建立可以选择的数组//
  currentOptArray = ["level", "speed", "start"];
 } else {
  currentOptArray = [isFirst];
  if (currentOpt == 2) {
   currentOpt = 0;
  }
 }
 ///选择框定位//
 this.bg.panel.selectFrame._y = eval("this.bg.panel."+currentOptArray[currentOpt]+"_mc")._y;
}
////////建立下落方块的函数///
function createDrop() {
 ////建立平台//
 this.bg.createEmptyMovieClip("drop", 1000);
 ///定位//
 this.bg.drop._x = this.bg.elem_3_0._x;
 this.bg.drop._y = this.bg.elem_3_0._y+getRow()*10;
 //定义位置跟踪变量//
 row = getRow();
 col = 3;
 var tempDepth = 0;
 for (var i = 0; i<4; i++) {
  for (var j = 0; j<4; j++) {
   //建立单元//
   this.bg.drop.createEmptyMovieClip("elem_"+i+"_"+j, tempDepth++);
   var temp_mc = eval("this.bg.drop.elem_"+i+"_"+j);
   temp_mc._x = i*10;
   temp_mc._y = j*10;
   //建立单元孪生体,real为显示体,temp为试探体//
   temp_mc.createEmptyMovieClip("real", 0);
   temp_mc.createEmptyMovieClip("temp", 1);
   //为孪生体绘制方块//
   createUnit(temp_mc.real);
   createUnit(temp_mc.temp);
   //显示体隐藏//
   temp_mc.real._visible = false;
   //定义试探体的一个属性,为形状标记,true表示该单元是形状的组成部分,false表示不是//
   temp_mc.temp.selected = eval("array"+currentID)[i][j];
   //隐藏试探体//
   temp_mc.temp._visible = false;
  }
 }
 delete tempDepths;
 ////////反复启动下降函数,时间间隔为1000毫秒减去速度等级的100倍,等级越高,下落越快//
 interval = setInterval(dropDown, 1000-100*speedValue);
}
////////方块形状数组//////
function initArrays() {
 //////1-4为长条形///
 array1 = [[0, 0, 0, 0], [0, 0, 0, 0], [1, 1, 1, 1], [0, 0, 0, 0]];
 array2 = [[0, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0]];
 array3 = array1;
 array4 = array2;
 //////5-8为正方形///
 array5 = [[0, 0, 0, 0], [0, 1, 1, 0], [0, 1, 1, 0], [0, 0, 0, 0]];
 array6 = array5;
 array7 = array5;
 array8 = array5;
 //////9-16为两种方向的之字形///
 array9 = [[0, 0, 0, 0], [1, 1, 0, 0], [0, 1, 1, 0], [0, 0, 0, 0]];
 array10 = [[0, 0, 0, 0], [0, 1, 0, 0], [1, 1, 0, 0], [1, 0, 0, 0]];
 array11 = array9;
 array12 = array10;
 array13 = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 1, 1, 0], [1, 1, 0, 0]];
 array14 = [[0, 0, 0, 0], [1, 0, 0, 0], [1, 1, 0, 0], [0, 1, 0, 0]];
 array15 = array13;
 array16 = array14;
 //////17-20为丁字形///
 array17 = [[0, 0, 0, 0], [0, 1, 0, 0], [1, 1, 0, 0], [0, 1, 0, 0]];
 array18 = [[0, 0, 0, 0], [0, 0, 0, 0], [1, 1, 1, 0], [0, 1, 0, 0]];
 array19 = [[0, 0, 0, 0], [0, 1, 0, 0], [0, 1, 1, 0], [0, 1, 0, 0]];
 array20 = [[0, 0, 0, 0], [0, 1, 0, 0], [1, 1, 1, 0], [0, 0, 0, 0]];
 /////21-28为两种方向的L形///
 array21 = [[0, 0, 0, 0], [0, 0, 0, 0], [1, 1, 1, 0], [1, 0, 0, 0]];
 array22 = [[0, 0, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0], [0, 1, 1, 0]];
 array23 = [[0, 0, 0, 0], [0, 0, 1, 0], [1, 1, 1, 0], [0, 0, 0, 0]];
 array24 = [[0, 0, 0, 0], [1, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0]];
 array25 = [[0, 0, 0, 0], [1, 0, 0, 0], [1, 1, 1, 0], [0, 0, 0, 0]];
 array26 = [[0, 0, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0], [1, 1, 0, 0]];
 array27 = [[0, 0, 0, 0], [0, 0, 0, 0], [1, 1, 1, 0], [0, 0, 1, 0]];
 array28 = [[0, 0, 0, 0], [0, 1, 1, 0], [0, 1, 0, 0], [0, 1, 0, 0]];
}
////***********************************************功能函数**********************************//
///////选择函数//
function selectOpt(num) {
 //条件为准备开始状态下//
 if (isFirst == "start") {
  currentOpt += num;
  if (currentOpt == -1) {
   currentOpt = 2;
  }
  if (currentOpt == 3) {
   currentOpt = 0;
  }
 } else {
  //暂停状态下不可选择//
  currentOpt = 0;
 }
 //刷新选择框//
 setOpt();
}
////////修改等级函数//
function modify(num) {
 //条件为只有在准备开始状态下才可以修改//
 if (isFirst == "start") {
  if (currentOpt<2) {
   var tempValue = eval(currentOptArray[currentOpt]+"Value");
   tempValue += num;
   if (tempValue == -1) {
    tempValue = 9;
   }
   if (tempValue == 10) {
    tempValue = 0;
   }
   set(currentOptArray[currentOpt]+"Value", tempValue);
  }
  createTexts();
 }
}
////////设置难度(难度越高,堆积的方块越高)////////
function setLevel(level) {
 for (var i = 0; i<10; i++) {
  for (var j = (16-level); j<16; j++) {
   eval("this.bg.elem_"+i+"_"+j)._visible = random(2);
  }
 }
}
/////////获取下落方块的初始行高(标准是紧邻主显示区域的上边缘)///
function getRow() {
 if (currentID == 2 || currentID == 4 || currentID == 10 || currentID == 12 || currentID == 14 || currentID == 16 || currentID == 17 || currentID == 24 || currentID == 26) {
  return -2;
 } else if (currentID == 1 || currentID == 3) {
  return -4;
 } else {
  return -3;
 }
}
///////显示预览//
function setView() {
 /////取得预览形状id//
 viewID = random(28)+1;
 for (var i = 0; i<4; i++) {
  for (var j = 0; j<4; j++) {
   eval("this.bg.panel.nextView.elem_"+i+"_"+j)._x = i*10;
   eval("this.bg.panel.nextView.elem_"+i+"_"+j)._y = j*10;
   //为预览区域的单元绘制方块//
   createUnit(eval("this.bg.panel.nextView.elem_"+i+"_"+j));
   //按照形状id对应的数组显示形状//
   eval("this.bg.panel.nextView.elem_"+i+"_"+j)._visible = eval("array"+viewID)[i][j];
  }
 }
}
////扫描函数//
function scan() {
 //屏蔽键盘控制//
 Key.removeListener(keyListener);
 //定义层记录变量,初始化为0//
 var tempLayer = 0;
 for (var j = 0; j<16; j++) {
  //定义单元记数变量,初始化为0//
  var first = 0;
  for (var i = 0; i<10; i++) {
   var temp_mc = eval("this.bg.elem_"+i+"_"+j);
   if (temp_mc._visible) {
    //如果同层的单元为显示状态,记数变量加1//
    first++;
   }
   //如果记数变量达到10,说明此行已满//
   if (first>=10) {
    //层记录加1//
    tempLayer++;
    //调用消行函数//
    layer(j, tempLayer);
   }
  }
 }
 delete tempLayer;
 //重置函数//
 reset();
}
/////定义消行函数////
function layer(row, num) {
 //加分//
 setText(this.bg.panel, "score", scoreValue+num*50);
 //内部记分//
 tempScore += num*50;
 //判断内部记分,进行速度跟踪//
 if ((tempScore-(1000+speedValue*50))>=0) {
  speedValue++;
  if (speedValue == 10) {
   speedValue = 0;
  }
  tempScore = 0;
 }
 //重置速度文本//
 setText(this.bg.panel, "speed", speedValue);
 for (var i = 0; i<10; i++) {
  var temp_mc = eval("this.bg.elem_"+i+"_"+row);
  //消行//
  temp_mc._visible = false;
  for (var j = row; j>0; j--) {
   //串行//
   eval("this.bg.elem_"+i+"_"+j)._visible = eval("this.bg.elem_"+i+"_"+(j-1))._visible;
  }
 }
}
/////定义文本跟踪函数//
function setText(local, mcName, value) {
 var textFormat = new TextFormat();
 textFormat.size = 12;
 set(mcName+"Value", value);
 eval(local+"."+mcName+"_mc."+mcName+"Value").text = eval(mcName+"Value");
 eval(local+"."+mcName+"_mc."+mcName+"Value").setTextFormat(textFormat);
}
///////显示提示文本//
function setTempText(value) {
 this.bg.createEmptyMovieClip;
 this.bg.createTextField("tempText", 10000, 15, 50, 80, 20);
 var tf = new TextFormat();
 tf.align = "center";
 this.bg.tempText.selectable = false;
 this.bg.tempText.text = value;
 this.bg.tempText.border = true;
 this.bg.tempText.background = true;
 this.bg.tempText.backgroundColor = "0xffffff";
 this.bg.tempText.setTextFormat(tf);
}
///////扔掉提示文本函数//
function removeTempText() {
 this.bg.tempText.removeTextField();
}
////////游戏结束画面函数//
function restart() {
 if (up == undefined) {
  up = true;
 }
 if (c == undefined) {
  c = 15;
 }
 if (c>=-10) {
  if (up) {
   for (var i = 0; i<10; i++) {
    eval("this.bg.elem_"+i+"_"+c)._visible = true;
   }
   c--;
  } else {
   for (var i = 0; i<10; i++) {
    eval("this.bg.elem_"+i+"_"+c)._visible = false;
   }
   c++;
   if (c == 16) {
    clearInterval(interval_over);
    delete c;
    delete up;
    /////游戏开始//
    gameStart();
   }
  }
 } else {
  up = false;
  c = 0;
 }
}
/////*******************************************键盘控制反应函数**********************************////
///////建立键盘控制方式的侦听//
function keyCtrl() {
 keyListener = new Object();
 keyListener.onKeyDown = function() {
  updateAfterEvent();
  if (Key.isDown(Key.LEFT)) {
   if (!isDroped) {
    left();
   }
  } else if (Key.isDown(Key.RIGHT)) {
   if (!isDroped) {
    right();
   }
  } else if (Key.isDown(Key.DOWN)) {
   dropDown();
  } else if (Key.isDown(Key.UP)) {
   rotation();
  } else if (Key.isDown(Key.SPACE)) {
   if (!pause) {
    isFirst = "resume";
    paused();
    setOpt();
    pause = true;
   }
  }
 };
}
///////建立键盘的选择侦听///
function option() {
 keyListener_opt = new Object();
 keyListener_opt.onKeyDown = function() {
  updateAfterEvent();
  if (Key.isDown(Key.LEFT)) {
   modify(-1);
  } else if (Key.isDown(Key.RIGHT)) {
   modify(1);
  } else if (Key.isDown(Key.DOWN)) {
   selectOpt(1);
  } else if (Key.isDown(Key.UP)) {
   selectOpt(-1);
  } else if (Key.isDown(Key.ENTER)) {
   if (currentOpt == 2) {
    if (isFirst == "start") {
     isFirst = "pause";
     startGame();
    } else if (isFirst == "resume") {
     resumeGame();
    }
   }
  } else if (Key.isDown(Key.SPACE)) {
   if (pause) {
    isFirst = "pause";
    resumeGame();
    pause = false;
   }
  }
 };
}
////////左移函数//
function left() {
 ////定义可以移动标签,初始化为可以//
 var leftFlag = true;
 for (var i = 0; i<4; i++) {
  for (var j = 0; j<4; j++) {
   var temp_mc = eval("this.bg.drop.elem_"+i+"_"+j);
   //试探体左移//
   temp_mc.temp._x -= 10;
   ////条件为此单元是要显示的单元//
   if (temp_mc.temp.selected == 1) {
    ///条件为可以显示的区域//
    if (!eval("this.bg.elem_"+(i-1+col)+"_"+(j+row))._visible && (col+i)>0 && (col+i)<=9) {
    } else {
     ////不可显示//
     leftFlag = false;
    }
   }
  }
 }
 ////检查标签///
 if (!leftFlag) {
  for (var i = 0; i<4; i++) {
   for (var j = 0; j<4; j++) {
    var temp_mc = eval("this.bg.drop.elem_"+i+"_"+j);
    //试探体归位//
    temp_mc.temp._x = temp_mc.real._x;
   }
  }
 } else {
  //列跟踪变量减1//
  col -= 1;
  for (var i = 0; i<4; i++) {
   for (var j = 0; j<4; j++) {
    var temp_mc = eval("this.bg.drop.elem_"+i+"_"+j);
    //显示体到位//
    temp_mc.real._x = temp_mc.temp._x;
   }
  }
 }
 delete leftFlag;
}
///右移函数///
function right() {
 ///定义是否可以移动标签,初始化为可以//
 var rightFlag = true;
 for (var i = 0; i<4; i++) {
  for (var j = 0; j<4; j++) {
   var temp_mc = eval("this.bg.drop.elem_"+i+"_"+j);
   //试探体右移//
   temp_mc.temp._x += 10;
   //条件为将要显示的单元//
   if (temp_mc.temp.selected == 1) {
    //条件为可以显示的区域//
    if (!eval("this.bg.elem_"+(i+1+col)+"_"+(j+row))._visible && (col+i)<9 && (col+i)>=0) {
    } else {
     //不可以移动//
     rightFlag = false;
    }
   }
  }
 }
 //检查标签//
 if (!rightFlag) {
  for (var i = 0; i<4; i++) {
   for (var j = 0; j<4; j++) {
    var temp_mc = eval("this.bg.drop.elem_"+i+"_"+j);
    //试探体归位//
    temp_mc.temp._x = temp_mc.real._x;
   }
  }
 } else {
  //列跟踪变量加1//
  col += 1;
  for (var i = 0; i<4; i++) {
   for (var j = 0; j<4; j++) {
    var temp_mc = eval("this.bg.drop.elem_"+i+"_"+j);
    //显示体到位//
    temp_mc.real._x = temp_mc.temp._x;
   }
  }
 }
 delete rightFlag;
}
//////下降函数//
function dropDown() {
 //定义是否可以下降的标签,初始化为可以下降//
 var dropFlag = true;
 for (var i = 0; i<4; i++) {
  for (var j = 0; j<4; j++) {
   var temp_mc = eval("this.bg.drop.elem_"+i+"_"+j);
   //试探体下降//
   temp_mc.temp._y += 10;
   //条件为将要显示的区域//
   if (temp_mc.temp.selected == 1) {
    //条件为处在主要区域之外的单元//
    if (eval("this.bg.elem_"+(i+col)+"_"+(j+1+row)) == undefined) {
     //隐藏该单元//
     temp_mc.real._visible = false;
    } else {
     //条件为优先下落//
     if (isDroped) {
      //取消优先下落//
      isDroped = false;
     }
     //显示该单元//
     temp_mc.real._visible = true;
    }
    //条件为可以显示的区域//
    if (!eval("this.bg.elem_"+(i+col)+"_"+(j+1+row))._visible && (row+j)<15) {
    } else {
     //不可以下落//
     dropFlag = false;
    }
   }
  }
 }
 //检查标签//
 if (!dropFlag) {
  for (var i = 0; i<4; i++) {
   for (var j = 0; j<4; j++) {
    var temp_mc = eval("this.bg.drop.elem_"+i+"_"+j);
    //条件为显示的单元//
    if (temp_mc.temp.selected == 1) {
     //条件为处在主要区域之外//
     if (eval("this.bg.elem_"+(i+col)+"_"+(j+row)) == undefined) {
      //启动游戏结束函数//
      gameOver();
      //跳出函数//
      return;
     } else {
      //通知主要区域的单元留影//
      eval("this.bg.elem_"+(i+col)+"_"+(j+row))._visible = true;
     }
    }
   }
  }
  //启动扫描函数//
  scan();
 } else {
  //行跟踪函数加1//
  row++;
  for (var i = 0; i<4; i++) {
   for (var j = 0; j<4; j++) {
    var temp_mc = eval("this.bg.drop.elem_"+i+"_"+j);
    //显示体到位//
    temp_mc.real._y = temp_mc.temp._y;
   }
  }
 }
 delete dropFlag;
}
//旋转函数//
function rotation() {
 //定义是否可以旋转标签,初始化为可以//
 var rotationFlag = true;
 //保存当前的形状id//
 var tempID = currentID;
 //判断id,保证形状循环旋转//
 if (tempID%4 == 0) {
  tempID -= 3;
 } else {
  tempID++;
 }
 for (var i = 0; i<4; i++) {
  for (var j = 0; j<4; j++) {
   var temp_mc = eval("this.bg.drop.elem_"+i+"_"+j);
   //试探体旋转//
   temp_mc.temp.selected = eval("array"+tempID)[i][j];
   //条件为将要显示的单元//
   if (temp_mc.temp.selected == 1) {
    //条件为可以显示的区域//
    if (!eval("this.bg.elem_"+(i+col)+"_"+(j+row))._visible && (row+j)<15 && (col+i)<=9 && (col+i)>=0) {
    } else {
     //不可以旋转//
     rotationFlag = false;
    }
   }
  }
 }
 //检查标签//
 if (!rotationFlag) {
  for (var i = 0; i<4; i++) {
   for (var j = 0; j<4; j++) {
    var temp_mc = eval("this.bg.drop.elem_"+i+"_"+j);
    //试探体归位//
    temp_mc.temp.selected = eval("array"+currentID)[i][j];
   }
  }
 } else {
  //当前形状id到位//
  currentID = tempID;
  for (var i = 0; i<4; i++) {
   for (var j = 0; j<4; j++) {
    var temp_mc = eval("this.bg.drop.elem_"+i+"_"+j);
    //显示体到位//
    temp_mc.real._visible = eval("array"+currentID)[i][j];
    //显示形状标记到位//
    temp_mc.temp.selected = eval("array"+currentID)[i][j];
   }
  }
 }
 delete tempID;
 delete rotationFlag;
}
////***********************************************流程函数************************************//
////////激活游戏////
function activeAll() {
 /////预览数组id//
 viewID = random(28)+1;
 /////定义下落的方块的形状id//
 currentID = viewID;
 /////建立下落主体//
 createDrop();
 ////预览//
 setView();
}
//////重置函数//
function reset() {
 //重新初始化优先下落变量//
 isDroped = true;
 //启动键盘控制//
 Key.addListener(keyListener);
 //停止下落//
 clearInterval(interval);
 //形状id到位//
 currentID = viewID;
 //重新建立下落方块//
 createDrop();
 //显示预览//
 setView();
}
//定义游戏结束函数//
function gameOver() {
 //停止下落//
 clearInterval(interval);
 //屏蔽控制//
 Key.removeListener(keyListener);
 //扔掉下落方块//
 this.bg.drop.removeMovieClip();
 //显示游戏结束提示文本//
 setTempText("GAME OVER");
 //游戏结束画面//
 interval_over = setInterval(restart, 50);
}
///////游戏准备开始函数//
function gameStart() {
 //得分归零//
 scoreValue = 0;
 //内部记分归零//
 tempScore = 0;
 //当前选择框锁定游戏开始位置//
 currentOpt = 2;
 //扔掉提示文本//
 removeTempText();
 //游戏状态为准备开始游戏//
 isFirst = "start";
 //建立选择功能区//
 setOpt();
 ////键盘为选择方式//
 Key.addListener(keyListener_opt);
}
///////游戏开始//
function startGame() {
 ///激活游戏//
 activeAll();
 ///设置难度//
 setLevel(levelValue);
 //键盘为控制方式//
 Key.removeListener(keyListener_opt);
 Key.addListener(keyListener);
 //刷新选择框//
 setOpt();
}
////////暂停函数//
function paused() {
 ////显示暂停提示文本//
 setTempText("PAUSE");
 ////停止下落//
 clearInterval(interval);
 ////键盘为选择方式//
 Key.removeListener(keyListener);
 Key.addListener(keyListener_opt);
}
///////回到游戏函数//
function resumeGame() {
 ///扔掉提示文本//
 removeTempText();
 ///刷新选择框//
 setOpt();
 ////键盘为控制方式//
 Key.removeListener(keyListener_opt);
 Key.addListener(keyListener);
 ///开始下落//
 interval = setInterval(dropDown, 1000-100*speedValue);
}

 

posted on 2006-08-01 11:59  榻榻米  阅读(863)  评论(0)    收藏  举报