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