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

📄 level1.js

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

    if (touchFound) {
      if (++touchLineCount>2)
        break;
    }
  }

  if (touchFound) {
    touchedX=thePointX; touchedY=thePointY;
  }

  return thePointLength;
}

function moveBubble() {
  if ((bubbleY-touchingY)<0.1 ) {
    if (hitSide) {
      bubbleStepX=-bubbleStepX; bubbleUnitX=-bubbleUnitX;
      bubbleBounce++;

      getHit();

      setTimeout("moveBubble()",48);

      return;
    }
    else {
      lastDimY=Math.floor((bubbleY-(baseY+2))/bubbleDistance);
      if (lastDimY<0)
        lastDimY=0;

      if (lastDimY%2==0) {
        lastDimX=Math.floor((bubbleX-baseX)/(bubbleSize+1))
        if (lastDimX<0)
          lastDimX=0;
        if (lastDimX>=bubbleTableSize-1)
          lastDimX=bubbleTableSize-1;
      }
      else {
        lastDimX=Math.floor((bubbleX-baseX-bubbleRadiusLarge)/(bubbleSize+1));
        if (lastDimX<0)
          lastDimX=0;
        if (lastDimX>=bubbleTableSize-2)
          lastDimX=bubbleTableSize-2;
      }

      setTimeout("markBubble()",100);

      return;
    }
  }
  else if (bubbleY-bubbleStepY<touchingY) {
    bubbleX=touchingX-bubbleStepX; bubbleY=touchingY+bubbleStepY;
  }

  bubbleX+=bubbleStepX; bubbleY-=bubbleStepY;

  moveLayerTo(bubbleID,bubbleX-bubbleRadiusSmall,bubbleY-bubbleRadiusSmall);

  setTimeout("moveBubble()",48);
}

function reSizing() { window.location.href=window.location.href; }
function levelInit() { bubbleLevelMax=bubbleLevels.length; }

function gameInit() {
  isIE4=(document.all)?true:false; isNN4=(document.layers)?true:false;

  if (isIE4 || isNN4) {
    setBase();
    setAngle();
    setMeter();
    setLayer();
    setTable();
    buildNumber();
    levelInit();
    levelStart();
  }
  else {
    alert("对不起!你必需安装IE4.0或NN4.0以上版本才能进行本游戏!");
  }
}

function tableUnit(x,y) {
  this.x=x; this.y=y;
  this.bubbleNum=-1; this.layerNum=-1;
  this.checked=false; this.onBoard=false; this.onBoardChecked=false;
}

function setTable() {
  var evenLine=0;

  for (var i=0; i<bubbleTableSize; i++) {
    bubbleTable[i]=new Array();
    for (var j=0; j<=bubbleTableSize; j++) {
      evenLine=j%2;
      bubbleTable[i][j]=new tableUnit(bubbleRadiusSmall+i*bubbleRadiusLarge*2+evenLine*bubbleRadiusLarge,bubbleRadiusSmall+j*bubbleDistance);
    }
  }
}

function setBase() {
  var docWidth=0,docHeight=0;

  if (isIE4) {
    docWidth=document.body.clientWidth; docHeight=document.body.clientHeight;
  }
  else {
    docWidth=window.innerWidth; docHeight=window.innerHeight;
  }

  baseX=Math.floor((docWidth-baseWidth)/2); baseY=Math.floor((docHeight-baseHeight)/2);
  if (baseX<baseMargin)
    baseX=baseMargin;
  if (baseY<baseMargin)
    baseY=baseMargin;

  gunX=baseX+baseMiddle; gunY=baseY+baseBottom;
  borderLeft=baseX; borderRight=baseX+baseWidth-1;
  infoX=borderRight-infoSize; infoY=baseY+baseLine+infoSize;
  clockX=borderLeft+clockSize; clockY=baseY+baseLine+clockSize;
  numberX=gunX; numberY=baseY+baseLine+Math.round(numberHeight/2);
}

function bubbleGun() {
  var pointID="";
  var pointX=0,pointY=0,newPointX=0,newPointY=0;
  var newDotX1=0,newDotY1=0,newDotX2=0,newDotY2=0;

  gunX+=bubbleControls[bubbleLevel][0]*gunMoveDirection;
  if ((gunX+gunLevelOffset)<= borderLeft+gunMargin || (gunX+gunLevelOffset)>= borderRight-gunMargin)
    gunMoveDirection=-gunMoveDirection;

  if (gunDirection !=0) {
    gunAngle+=gunDirection;
    if (gunAngle>gunAngleEnd || gunAngle<gunAngleBegin)
      gunAngle-=gunDirection;
  }

  if (!bubbleFired)
    moveLayerTo(bubbleID,gunX-bubbleRadiusSmall+gunLevelOffset,gunY-bubbleRadiusSmall);

  for (var i=0; i<gunPointMax; i++) {
    pointID="point"+(i+1)+"";

    newPointX=gunPoint[i]*gunAngles[gunAngle].x; newPointY=gunPoint[i]*gunAngles[gunAngle].y;

    pointX=gunX+newPointX+gunLevelOffset; pointY=gunY-newPointY;
    if (pointX>borderRight-pointRadius)
      pointX=borderRight*2-pointX;
    if (pointX<borderLeft+pointRadius)
      pointX=borderLeft*2-pointX;

    moveLayerTo(pointID,pointX-pointRadius,pointY-pointRadius);

    gunPoint[i]+=2;
    if (gunPoint[i]>gunPointEnd)
      gunPoint[i]=gunPointBegin;
  }

  newDotX1=gunPointBegin*(-gunAngles[gunAngle].y); newDotY1=gunPointBegin*(gunAngles[gunAngle].x);
  newDotX2=gunPointBegin*(gunAngles[gunAngle].y); newDotY2=gunPointBegin*(-gunAngles[gunAngle].x);

  moveLayerTo("dot1",gunX+newDotX1-dotRadius+gunLevelOffset,gunY-newDotY1-dotRadius);
  moveLayerTo("dot2",gunX+newDotX2-dotRadius+gunLevelOffset,gunY-newDotY2-dotRadius);

  gunTimer=setTimeout("bubbleGun()",10);
}

function armGun(e) {
  var keyCode=0 ;

  if (isIE4)
    keyCode=event.keyCode
  else
    keyCode=e.which;

  if (keyCode==76 || keyCode==108)
    gunDirection=-1;

  if (keyCode==74 || keyCode==106)
    gunDirection=1;

  if (keyCode==75 || keyCode==107)
    fireBubble();

  return false;
}

function holdGun(e) {
  var keyCode=0;

  if (isIE4)
    keyCode=event.keyCode
  else
    keyCode=e.which;

  if (keyCode==76 || keyCode==108)
    if (gunDirection==-1)
      gunDirection =0;

  if (keyCode==74 || keyCode==106)
    if (gunDirection==1)
      gunDirection=0;

  return false;
}

function eventInit() {
  document.onkeydown=armGun;
  document.onkeyup=holdGun;
  window.onresize=reSizing;
}

function eventRelease() {
  document.onkeydown=null;
  document.onkeyup=null;
  window.onresize=null;
}

function buildNumber() {
  var numberMax=scoreSize*4;
  var layerHTML="";
  var layerID="";
  var htmlString=numberTag1+numbers[0].src+numberTag2;

  for (var i=0; i<scoreSize; i++) {
    numberPosition[i]=numberX+(scoreSize-i)*numberWidth;
    numberPosition[i+scoreSize]=numberPosition[i];
    numberPosition[i+scoreSize*2]=numberX-(i+2)*numberWidth;
    numberPosition[i+scoreSize*3]=numberPosition[i+scoreSize*2];
  }

  if (isIE4) {
    for (var i=0; i<numberMax; i++) {
      layerID=numberID+i+"";
      layerHTML='<div id="'+layerID+'" style="position:absolute; top:'+numberY+'; left:'+numberPosition[i]+'; width:'+numberWidth+'; height:'+numberHeight+'; clip:rect(0px,'+numberWidth+'px,'+numberHeight+'px,0px); visibility:visible; z-index:3;">'+htmlString+'</div>';
      document.body.insertAdjacentHTML("BeforeEnd",layerHTML);
    }
  }
  else {
    for (var i=0; i<numberMax; i++) {
      layerID=numberID+i+"";
      document.layers[layerID]=new Layer(numberWidth);
      with (document.layers[layerID]) {
        height=numberHeight;
        top=numberY; left=numberPosition[i];
        clip.top=0; clip.bottom=numberHeight; clip.left=0; clip.right=numberWidth;
        zIndex=3;
        document.open("text/html"); document.writeln(htmlString); document.close();
        visibility="show";
      }
    }
  }
}

function prepareNumber(scoreType) {
  var numberIn=0,numberOut=0,numberClip="";
  var htmlString="";

  numberCount=0;
  for (var i=0; i<scoreSize; i++) {
    if (numberDigit[scoreType][i][0] != numberDigit[scoreType][i][1]) {
      numberCount++;
      numberDigit[scoreType][i][1]=numberDigit[scoreType][i][0];
      numberOut=numberID+(i+(numberShown[scoreType][i]+scoreType*2)*scoreSize)+"";
      numberIn=numberID+(i+(1-numberShown[scoreType][i]+scoreType*2)*scoreSize)+"";
      numberShown[scoreType][i]=1-numberShown[scoreType][i];
      htmlString=numberTag1+numbers[numberDigit[scoreType][i][0]].src+numberTag2;

      if (isIE4) {
        numberClip="rect("+numberHeight+"px "+numberWidth+"px "+numberHeight+"px 0px)";
        document.all[numberIn].style.clip=numberClip;
        document.all[numberIn].style.pixelTop=numberY-numberHeight;
        document.all[numberIn].innerHTML=htmlString;
      }
      else {
        with (document.layers[numberIn]) {
          clip.top=numberHeight; clip.bottom=numberHeight;
          top=numberY-numberHeight;
          document.open("text/html"); document.writeln(htmlString); document.close();
        }
      }

      showNumber(numberIn,numberOut);
    }
  }
}

function showNumber(numberIn,numberOut) {
  var numberOffset=0,numberInClip="",numberOutClip="";
  var singleQuote="'";

  numberOffset=numberY-getLayerTop(numberIn);

  if (numberOffset>0) {
    if (isIE4) {
      numberInClip="rect("+(numberOffset-1)+"px "+numberWidth+"px "+numberHeight+"px 0px)";
      numberOutClip="rect(0px "+numberWidth+"px "+(numberOffset-1)+"px 0px)";
      document.all[numberIn].style.clip=numberInClip;
      document.all[numberOut].style.clip=numberOutClip;
      document.all[numberIn].style.pixelTop++;
      document.all[numberOut].style.pixelTop++;
    }
    else {
      document.layers[numberIn].clip.top--;
      document.layers[numberIn].top++;
      document.layers[numberOut].clip.bottom--;
      document.layers[numberOut].top++;
    }

    eval('setTimeout("showNumber('+singleQuote+numberIn+singleQuote+','+singleQuote+numberOut+singleQuote+')",1)');
  }
  else
    numberCount--;
}

function scoreNumber(scoreType) {
  var thisScore=(scoreType==gameScoreNumber) ? gameScore : highScore;

  for (var i=0; i<scoreSize; i++) {
    numberDigit[scoreType][i][0]=thisScore%10;
    thisScore=Math.floor(thisScore/10);
  }

  prepareNumber(scoreType);
}

function roundScore(scoreType) {
  if (numberCount==0)
    scoreNumber(scoreType)
  else
    eval('setTimeout("roundScore('+scoreType+')",150)');
}

function clearNumber() {
  for (var i=0; i<scoreSize; i++)
    numberDigit[gameScoreNumber][i][0]=0;

  prepareNumber(gameScoreNumber);
}

function calculateScore(bubbleCut) {
  var bubbleDone=false;
  var bubblePoints=0;

  bubbleCount-=bubbleCut;

  if (bubbleCount==0) {
    gameScore+=bubbleBonus;
    bubbleDone=true;
  }

  if (bubbleCut>=3)
    bubblePoints=3+(bubbleCut-3)*2+bubbleBounce*5
  else
    bubblePoints=bubbleCut+bubbleBounce*5;
  gameScore+=bubblePoints;

  roundScore(gameScoreNumber);

  return bubbleDone;
}

function showLevel() {
  var bubbleNumber=0,bubbleIndex=0,bubbleLineSize=0,bubbleDone=false;

  if (bubbleDropFinished) {
    bubbleFeeding=0;
    bubbleFeedingMax=bubbleFeedings[bubbleLevel].length;
    gunAngleBegin=bubbleControls[bubbleLevel][3]/gunAngleStep;
    gunAngleEnd=bubbleControls[bubbleLevel][4]/gunAngleStep;
    gunLevelOffset=gunOffset[bubbleControls[bubbleLevel][1]];
    bubbleLevelStarted=false;

    for (var i=0; i<bubbleTableSize && !bubbleDone; i++) {
      bubbleLineSize=(i%2==0)?bubbleTableSize:(bubbleTableSize-1);

      for (var j=0; j<bubbleLineSize; j++) {
        bubbleNumber=bubbleLevels[bubbleLevel][bubbleIndex];
        bubbleIndex++;

        if (bubbleNumber==99) {
          bubbleDone=true;
          break;
        }
        else {
          if (bubbleNumber>=0)
            addBubble(bubbleNumber,j,i);
        }
      }
    }

    centralizeGun();
    nextBubble();
    bubbleGun();
    eventInit();
  }
  else
    setTimeout("showLevel()",1500);
    
}

⌨️ 快捷键说明

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