⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 level1.js

📁 LyBBS基于Struts1.3/Ajax的架构
💻 JS
📖 第 1 页 / 共 3 页
字号:
    return;

  bubbleTable[x][y].onBoard=true;

  if (y%2==0) {
    if (y>0 && x<(bubbleTableSize-1)) {
      if (bubbleTable[x][y-1].bubbleNum>=0 && !bubbleTable[x][y-1].onBoardChecked)
        checkOnBoard(x,y-1);
    }

    if (x<(bubbleTableSize-1)) {
      if (bubbleTable[x+1][y].bubbleNum>=0 && !bubbleTable[x+1][y].onBoardChecked)
        checkOnBoard(x+1,y);
    }

    if (y<(bubbleTableSize-1) && x<(bubbleTableSize-1)) {
      if (bubbleTable[x][y+1].bubbleNum>=0 && !bubbleTable[x][y+1].onBoardChecked)
        checkOnBoard(x,y+1);
    }

    if (y<(bubbleTableSize-1) && x>0) {
      if (bubbleTable[x-1][y+1].bubbleNum>=0 && !bubbleTable[x-1][y+1].onBoardChecked)
        checkOnBoard(x-1,y+1);
    }

    if (x>0) {
      if (bubbleTable[x-1][y].bubbleNum>=0 && !bubbleTable[x-1][y].onBoardChecked)
        checkOnBoard(x-1,y);
    }

    if (x>0 && y>0) {
      if (bubbleTable[x-1][y-1].bubbleNum>=0 && !bubbleTable[x-1][y-1].onBoardChecked)
        checkOnBoard(x-1,y-1);
    }
  }
  else {
    if (y>0) {
      if (bubbleTable[x+1][y-1].bubbleNum>=0 && !bubbleTable[x+1][y-1].onBoardChecked)
        checkOnBoard(x+1,y-1);
    }

    if (x<(bubbleTableSize-2)) {
      if (bubbleTable[x+1][y].bubbleNum>=0 && !bubbleTable[x+1][y].onBoardChecked)
        checkOnBoard(x+1,y);
    }

    if (y<(bubbleTableSize-1)) {
      if (bubbleTable[x+1][y+1].bubbleNum>=0 && !bubbleTable[x+1][y+1].onBoardChecked)
        checkOnBoard(x+1,y+1);
    }

    if (y<(bubbleTableSize-1)) {
      if (bubbleTable[x][y+1].bubbleNum>=0 && !bubbleTable[x][y+1].onBoardChecked)
        checkOnBoard(x,y+1);
    }

    if (x>0) {
      if (bubbleTable[x-1][y].bubbleNum>=0 && !bubbleTable[x-1][y].onBoardChecked)
        checkOnBoard(x-1,y);
    }

    if (y>0) {
      if (bubbleTable[x][y-1].bubbleNum>=0 && !bubbleTable[x][y-1].onBoardChecked)
        checkOnBoard(x,y-1);
    }
  }

  return;
}

function clearOnBoard() {
  for (var i=0; i<bubbleTableSize; i++)
    for (var j=0; j<=bubbleTableSize; j++) {
      bubbleTable[i][j].onBoard=false;
      bubbleTable[i][j].onBoardChecked=false;
    }
}

function cutBubble() {
  var layerNum=0;
  var layerID="";
  var bubbleCut=0;

  for (var i=0; i<bubbleTableSize; i++)
    for (var j=0; j<=bubbleTableSize; j++)
      if (bubbleTable[i][j].bubbleNum >=0 && !bubbleTable[i][j].onBoard) {
        layerNum=bubbleTable[i][j].layerNum;
        layerID=getLayerID(layerNum);
        indexLayer(layerID,4);
        layerDrop[layerNum]=true;
        layerStep[layerNum]=Math.ceil(Math.random()*bubbleStep);

        bubbleTable[i][j].bubbleNum=-1;
        bubbleTable[i][j].layerNum=-1;

        bubbleCut++;
      }

  return bubbleCut;
}

function dropBubble() {
  var layerLength=layerStatus.length;
  var layerNum=0;
  var layerID="";
  var bubbleDone=true;

  bubbleDropFinished=false;

  for (var i=0; i<layerLength; i++) {
    if (layerDrop[i]) {
      layerID=getLayerID(i);

      if (getLayerTop(layerID)+layerStep[i]+bubbleRadiusSmall>gunY) {
        moveLayerTo(layerID,-bubbleSize,-bubbleSize);
        indexLayer(layerID,3);
        layerStatus[i]=true;
        layerDrop[i]=false;
        layerStep[i]=0;
      }
      else {
        bubbleDone=false;
        moveLayerBy(layerID,0,layerStep[i]);
        layerStep[i]++;
      }
    }
  }

  if (!bubbleDone)
    layerTimer=setTimeout("dropBubble()",10)
  else
    bubbleDropFinished=true;

}

function markMulti() {
  for (var i=0; i<bubbleMultiCount; i++)
    if (bubbleTable[bubbleMultiX[i]][bubbleMultiY[i]].checked)
      bubbleMultiChecked[i]=true;
}

function clearMulti(bubbleNumber) {
  for (var i=0; i<bubbleTableSize; i++)
    for (var j=0; j<=bubbleTableSize; j++)
      if (bubbleTable[i][j].bubbleNum==bubbleNumber)
        bubbleTable[i][j].checked=false;
}

function setMulti(bubbleNumber) {
  bubbleChecked=0;
  bubbleTrain=0;
  bubbleNum=bubbleNumber;

  for (var i=0; i<bubbleMultiCount; i++) {
    bubbleTable[bubbleMultiX[i]][bubbleMultiY[i]].bubbleNum=bubbleNumber;
    bubbleTable[bubbleMultiX[i]][bubbleMultiY[i]].checked=false;
  }
}

function restoreMulti() {
  for (var i=0; i<bubbleMultiCount; i++) {
    bubbleTable[bubbleMultiX[i]][bubbleMultiY[i]].bubbleNum=bubbleMulti;
    bubbleTable[bubbleMultiX[i]][bubbleMultiY[i]].checked=bubbleMultiChecked[i];
  }
}

function clearBubble() {
  var bubbleDone=false;

  eventRelease();
  clearOnBoard();

  for (i=0; i<bubbleTableSize; i++)
    if (bubbleTable[i][0].bubbleNum >=0 && !bubbleTable[i][0].onBoardChecked)
      checkOnBoard(i,0);

  bubbleDone=calculateScore(cutBubble());
  eventInit();
  clearTimeout(layerTimer);
  dropBubble();

  if (bubbleDone) {
    levelFinished();
    bubbleLevel++;
    levelStart();
  }
  else
    nextBubble();
}

function checkBubble(x,y) {
  var bubbleMatched=false;

  bubbleTable[x][y].checked=true;
  bubbleChecked++;
  bubbleTrain++;

  if (y%2==0) {
    if (y>0 && x<(bubbleTableSize-1)) {
      if (bubbleTable[x][y-1].bubbleNum==bubbleNum)
        if (!bubbleTable[x][y-1].checked)
          bubbleMatched=checkBubble(x,y-1)
    }

    if (x<(bubbleTableSize-1)) {
      if (bubbleTable[x+1][y].bubbleNum==bubbleNum)
        if (!bubbleTable[x+1][y].checked)
          bubbleMatched=checkBubble(x+1,y)
    }

    if (y<(bubbleTableSize-1) && x<(bubbleTableSize-1)) {
      if (bubbleTable[x][y+1].bubbleNum==bubbleNum)
        if (!bubbleTable[x][y+1].checked)
          bubbleMatched=checkBubble(x,y+1)
    }

    if (y<(bubbleTableSize-1) && x>0) {
      if (bubbleTable[x-1][y+1].bubbleNum==bubbleNum)
        if (!bubbleTable[x-1][y+1].checked)
          bubbleMatched=checkBubble(x-1,y+1)
    }

    if (x>0) {
      if (bubbleTable[x-1][y].bubbleNum==bubbleNum)
        if (!bubbleTable[x-1][y].checked)
          bubbleMatched=checkBubble(x-1,y)
    }

    if (x>0 && y>0) {
      if (bubbleTable[x-1][y-1].bubbleNum==bubbleNum)
        if (!bubbleTable[x-1][y-1].checked)
          bubbleMatched=checkBubble(x-1,y-1)
    }
  }
  else {
    if (y>0) {
      if (bubbleTable[x+1][y-1].bubbleNum==bubbleNum)
        if (!bubbleTable[x+1][y-1].checked)
          bubbleMatched=checkBubble(x+1,y-1)
    }

    if (x<(bubbleTableSize-2)) {
      if (bubbleTable[x+1][y].bubbleNum==bubbleNum)
        if (!bubbleTable[x+1][y].checked)
          bubbleMatched=checkBubble(x+1,y)
    }

    if (y<(bubbleTableSize-1)) {
      if (bubbleTable[x+1][y+1].bubbleNum==bubbleNum)
        if (!bubbleTable[x+1][y+1].checked)
          bubbleMatched=checkBubble(x+1,y+1)
    }

    if (y<(bubbleTableSize-1)) {
      if (bubbleTable[x][y+1].bubbleNum==bubbleNum)
        if (!bubbleTable[x][y+1].checked)
          bubbleMatched=checkBubble(x,y+1)
    }

    if (x>0) {
      if (bubbleTable[x-1][y].bubbleNum==bubbleNum)
        if (!bubbleTable[x-1][y].checked)
          bubbleMatched=checkBubble(x-1,y)
    }

    if (y>0) {
      if (bubbleTable[x][y-1].bubbleNum==bubbleNum)
        if (!bubbleTable[x][y-1].checked)
          bubbleMatched=checkBubble(x,y-1)
    }
  }

  bubbleTrain--;

  if (bubbleChecked>=3 && bubbleTrain==0)
    return true
  else
    return false;
}

function placeBubble(bubbleLayerNum,bubbleNumber,x,y) {
  var bubbleLayerID=getLayerID(bubbleLayerNum);

  moveLayerTo(bubbleLayerID,bubbleTable[x][y].x+baseX-bubbleRadiusSmall,bubbleTable[x][y].y+baseY-bubbleRadiusSmall);

  bubbleTable[x][y].bubbleNum=bubbleNumber;
  bubbleTable[x][y].layerNum=bubbleLayerNum;

  bubbleCount++;
}

function newBubble(bubbleNumber) {
  var layerNum=getBubble();
  var layerID=getLayerID(layerNum);

  drawLayer(layerID,bubbleTag1+bubbleImage[bubbleNumber].src+bubbleTag2);

  return layerNum;
}

function addBubble(bubbleNumber,x,y) { placeBubble(newBubble(bubbleNumber),bubbleNumber,x,y); }

function markBubble() {
  var bubbleMatched=false;
  var bubbleMulti1=0,bubbleMulti2=0;

  placeBubble(bubbleIDNum,bubbleNum,lastDimX,lastDimY);

  if (lastDimY==bubbleTableSize)
    gameOver()
  else {
    clearCheck();

    if (bubbleNum==bubbleHammer) {
      bubbleMatched=true;
      bubbleTable[lastDimX][lastDimY].checked=true;
      if (hitBubble)
        bubbleTable[touchedX][touchedY].checked=true;
      setTimeout("clearBubble()",150);
    }
    else {
      if (bubbleNum==bubbleMulti) {
        bubbleMulti1=0; bubbleMulti2=bubbleNormal-1;
      }
      else {
        bubbleMulti1=bubbleNum; bubbleMulti2=bubbleNum;
      }

      for (var i=bubbleMulti1; i<=bubbleMulti2; i++) {
        setMulti(i);
        if (checkBubble(lastDimX,lastDimY)) {
          bubbleMatched=true;
          markMulti();
        }
        else
          clearMulti(i);
      }
      restoreMulti();

      if (bubbleMatched)
        setTimeout("clearBubble()",150);
    }

    if (!bubbleMatched)
      nextBubble();
  }
}

function getHit() {
  var hitSideDistance=-1;
  var hitTopDistance=Math.round((bubbleY-(baseY+bubbleRadiusSmall))/bubbleUnitY);
  var hitBubbleDistance=getTouched();
  var hitDistance=-1;

  if (bubbleStepX != 0) {
    if (bubbleStepX>0)
      hitSideDistance=Math.round((borderRight-bubbleRadiusSmall-bubbleX)/bubbleUnitX)
    else
      hitSideDistance=Math.round((borderLeft+bubbleRadiusSmall-bubbleX)/bubbleUnitX);
  }

  hitSide=false; hitTop=true; hitBubble=false;
  hitDistance=hitTopDistance;

  if (hitDistance>hitBubbleDistance && hitBubbleDistance>=0) {
    hitSide=false; hitTop=false; hitBubble=true;
    hitDistance=hitBubbleDistance;
  }

  if (hitDistance>hitSideDistance && hitSideDistance>=0) {
    hitSide=true; hitTop=false; hitBubble=false;
    hitDistance=hitSideDistance;
  }

  touchingX=bubbleX+hitDistance*bubbleUnitX;
  touchingY=bubbleY-hitDistance*bubbleUnitY;
}

function getTouched() {
  var thisDimY=0;
  var touchFound=false;
  var touchLineCount=0;
  var pathDistance=0;
  var pointLength=0;
  var pointX=0,pointY=0;
  var thePointLength=-1;
  var thePointX=0,thePointY=0;
  var bubbleLineSize=0;

  thisDimY=Math.floor((bubbleY-(baseY+2))/bubbleDistance)+1;
  if (thisDimY>=bubbleTableSize)
    thisDimY=bubbleTableSize-1;

  for (var i=thisDimY; i>=0; i--) {
    bubbleLineSize=(i%2==0)?bubbleTableSize:(bubbleTableSize-1);

    for (var j=0; j<bubbleLineSize; j++) {
      if (bubbleTable[j][i].bubbleNum>=0) {
        pointX=bubbleTable[j][i].x-(bubbleX-baseX);
        pointY=(bubbleY-baseY)-bubbleTable[j][i].y;

        with(Math) {
          pathDistance=floor(abs(pointX*bubbleUnitY-pointY*bubbleUnitX));
          pointLength=round(abs(pointX*bubbleUnitX+pointY*bubbleUnitY));
          if (pathDistance<bubbleSize) {
            touchFound=true;

            if (thePointLength<0 || thePointLength>(pointLength-deltaLength[pathDistance])) {
              thePointX=j; thePointY=i;
              thePointLength=pointLength-deltaLength[pathDistance];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -