📄 level1.js
字号:
}
}
}
}
}
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 + -