📄 level1.js
字号:
var isIE4=false,isNN4=false;
var baseX=0,baseY=0;
var baseWidth=207,baseMiddle=103,baseBottom=288,baseHeight=308,baseLine=196;
var baseMargin=6,borderLeft=0,borderRight=0;
var bubbleSize=25;
var bubbleStep=20;
var bubbleRadiusSmall=12,bubbleRadiusLarge=13;
var bubbleDistance=23;
var bubbleMax=10,bubbleNormal=8;
var bubbleTableSize=8,bubbleTable=new Array();
var bubbleChecked=0,bubbleTrain=0;
var bubbleX=0,bubbleY=0,bubbleStepX=0,bubbleStepY=0,bubbleUnitX=0.0,bubbleUnitY=0.0;
var bubbleFired=false;
var bubbleNum=0;
var bubbleCount=0;
var bubbleBounce=0;
var bubbleTimer=0;
var bubbleID="";
var bubbleIDNum=0;
var bubbleBonus=100;
var bubbleHammer=8,bubbleMulti=9;
var bubbleMultiCount=0,bubbleMultiX=new Array(),bubbleMultiY=new Array(),bubbleMultiChecked=new Array();
var bubbleDropFinished=true,bubbleLevelStarted=false;
var touchingX=0,touchingY=0,touchedX=0,touchedY=0,lastDimX=0,lastDimY=0;
var deltaLength=new Array(25,25,25,25,25,25,25,25,24,24,23,23,22,22,21,21,20,19,18,17,16,15,13,11,9);
var hitSide=false,hitTop=false,hitBubble=false;
var bubbleLevelMax=0,bubbleLevel=0,bubbleFeedingMax=0,bubbleFeeding=0;
var bubbleImage=new Array();
function loadBubble() {
for (var i=0; i<bubbleMax; i++) {
bubbleImage[i]=new Image(bubbleSize,bubbleSize); bubbleImage[i].src=("bubble"+i+".gif");
}
}
loadBubble();
var bubbleTag1='<img src="',bubbleTag2='" width='+bubbleSize+' height='+bubbleSize+' border=0>';
var pointSize=3,pointRadius=1;
var pointImage=new Image(pointSize,pointSize); pointImage.src="point.gif";
var dotSize=5,dotRadius=2;
var dotImage=new Image(dotSize,dotSize); dotImage.src="dot.gif";
var infoSize=15,infoRadius=7;
var infoImage=new Image(infoSize,infoSize); infoImage.src="info.gif";
var infoX=0,infoY=0;
var clockSize=15,clockRadius=7;
var clockImage=new Image(clockSize,clockSize); clockImage.src="clock.gif";
var clockX=0,clockY=0;
var radianUnit=Math.PI/180;
var meterSize=5,meterRadius=2;
var meterImage=new Image(meterSize,meterSize); meterImage.src="meter.gif";
var meterTimer=0,meterSlice=8,meterCenter=2,meterStep=2;
var meterOffset=new Array();
var gunX=0,gunY=0;
var gunAngleStep=3,gunAngleSlice=180/gunAngleStep,gunAngleCenter=gunAngleSlice/2,gunAngles=new Array();
var gunOffset=new Array(Math.ceil(-bubbleSize*8/3),Math.ceil(-bubbleSize*4/3),0,Math.floor(bubbleSize*4/3),Math.floor(bubbleSize*8/3));
var gunLevelOffset=0;
var gunPointMax=5,gunPoint=new Array(57,47,37,27,17);
var gunPointEnd=67,gunPointBegin=17;
var gunMargin=gunPointBegin+dotRadius;
var gunMoveDirection=1;
var gunAngle=gunAngleCenter,gunAngleBegin=0,gunAngleEnd=0;
var gunDirection=0;
var gunTimer=0;
var layerCount=-1;
var layerStatus=new Array();
var layerDrop=new Array();
var layerStep=new Array();
var layerTimer=0;
var layerString1='<div id="',layerString2='" style="position:absolute; top:'+(-bubbleSize)+'; left:'+(-bubbleSize)+'; width:'+bubbleSize+'; height:'+bubbleSize+'; visibility:visible; z-index:3;"></div>'
var numberWidth=10,numberHeight=15;
var numbers=new Array();
function loadNumber() {
for (var i=0; i<10; i++) {
numbers[i]=new Image(numberWidth,numberHeight); numbers[i].src=(""+i+".gif");
}
}
loadNumber();
var numberX=0,numberY=0;
var numberPosition=new Array();
var scoreSize=4;
var gameScoreNumber=0,highScoreNumber=1;
var numberDigit=new Array(new Array(new Array(0,0),new Array(0,0),new Array(0,0),new Array(0,0)),new Array(new Array(0,0),new Array(0,0),new Array(0,0),new Array(0,0)));
var numberShown=new Array(new Array(1,1,1,1),new Array(1,1,1,1));
var numberID="number",numberCount=0;
var numberTag1= '<table align=center width='+numberWidth+' height='+numberHeight+' cellpadding=0 cellspacing=0 border=0><tr><td align=left valign=top><img src="',numberTag2='" width='+numberWidth+' height='+numberHeight+' border=0></td></tr></table>';
var highScore=0,gameScore=0;
var infoWindow=null;
function showInformation() {
if (infoWindow==null)
infoWindow=window.open("info.html","infoWindow","width=480,height=450,titlebar=1")
else if (infoWindow.closed)
infoWindow=window.open("info.html","infoWindow","width=480,height=450,titlebar=1")
else
infoWindow.focus();
}
function moveMeter() {
meterStep=(meterStep>0) ? meterStep-1 : meterSlice-1;
moveLayerTo("meter",clockX+meterOffset[meterStep].x-meterRadius,clockY-meterOffset[meterStep].y-meterRadius);
if (meterStep==meterCenter) {
if (!bubbleFired)
fireBubble();
}
else
meterTimer=setTimeout("moveMeter()",bubbleControls[bubbleLevel][2]);
}
function restoreMeter() {
meterStep=meterCenter;
moveLayerTo("meter",clockX-meterRadius,clockY-clockRadius-meterRadius);
}
function newMeter(meterIndex) {
this.x=Math.round(Math.cos(meterIndex*45*radianUnit)*clockRadius);
this.y=Math.round(Math.sin(meterIndex*45*radianUnit)*clockRadius);
}
function setMeter() {
for (var i=0; i<meterSlice; i++)
meterOffset[i]=new newMeter(i);
}
function newAngle(angleIndex) {
this.x=Math.cos(angleIndex*gunAngleStep*radianUnit);
this.y=Math.sin(angleIndex*gunAngleStep*radianUnit);
}
function setAngle() {
for (var i=0; i<gunAngleSlice; i++)
gunAngles[i]=new newAngle(i);
}
function setLayer() {
showLayer("tableb",baseY-baseMargin,baseX-baseMargin,baseWidth+baseMargin*2,baseHeight+baseMargin*2,1,'<table width='+(baseWidth+baseMargin*2)+' height='+(baseHeight+baseMargin*2)+' border=0 cellpadding=0 cellspacing=0 bgcolor=#C0C0C0 ><tr><td> </td></tr></table>');
showLayer("tablef1",baseY,baseX,baseWidth,baseLine,2,'<table width='+baseWidth+' height='+baseLine+' border=0 cellpadding=0 cellspacing=0 bgcolor=#000000 background=02.gif><tr align=center valign=middle><td> </td></tr></table>');
showLayer("tablef2",baseY+baseLine+1,baseX,baseWidth,baseHeight-(baseLine+1),2,'<table width='+baseWidth+' height='+(baseHeight-(baseLine+1))+' border=0 cellpadding=9 cellspacing=0 bgcolor=#000000 background=04.gif ><tr align=center valign=top><td> </td></tr></table>');
showLayer("point1",gunY-gunPoint[0]-pointRadius,gunX-pointRadius,pointSize,pointSize,5,'<img src="'+pointImage.src+'" width='+pointSize+' height='+pointSize+' border=0 align=top>');
showLayer("point2",gunY-gunPoint[1]-pointRadius,gunX-pointRadius,pointSize,pointSize,5,'<img src="'+pointImage.src+'" width='+pointSize+' height='+pointSize+' border=0 align=top>');
showLayer("point3",gunY-gunPoint[2]-pointRadius,gunX-pointRadius,pointSize,pointSize,5,'<img src="'+pointImage.src+'" width='+pointSize+' height='+pointSize+' border=0 align=top>');
showLayer("point4",gunY-gunPoint[3]-pointRadius,gunX-pointRadius,pointSize,pointSize,5,'<img src="'+pointImage.src+'" width='+pointSize+' height='+pointSize+' border=0 align=top>');
showLayer("point5",gunY-gunPoint[4]-pointRadius,gunX-pointRadius,pointSize,pointSize,5,'<img src="'+pointImage.src+'" width='+pointSize+' height='+pointSize+' border=0 align=top>');
showLayer("dot1",gunY-dotRadius,gunX-gunPointBegin-dotRadius,dotSize,dotSize,5,'<img src="'+dotImage.src+'" width='+dotSize+' height='+dotSize+' border=0 align=top>');
showLayer("dot2",gunY-dotRadius,gunX+gunPointBegin-dotRadius,dotSize,dotSize,5,'<img src="'+dotImage.src+'" width='+dotSize+' height='+dotSize+' border=0 align=top>');
showLayer("info",infoY-infoRadius,infoX-infoRadius,infoSize,infoSize,3,'<a href="http://www.5757.net" target="_blank"><img src="'+infoImage.src+'" width='+infoSize+' height='+infoSize+' border=0 align=top alt="5757.net/bbs 精彩社区"></a>');
showLayer("clock",clockY-clockRadius,clockX-clockRadius,clockSize,clockSize,3,'<img src="'+clockImage.src+'" width='+clockSize+' height='+clockSize+' border=0 align=top>');
showLayer("meter",clockY-clockRadius-meterRadius,clockX-meterRadius,meterSize,meterSize,3,'<img src="'+meterImage.src+'" width='+meterSize+' height='+meterSize+' border=0 align=top>');
showLayer("clock2",clockY-clockRadius-25,clockX-clockRadius,200,clockSize,3,'<span style="FONT-SIZE: 9pt"><font color=#E8E8E8>游戏控制:J(左)、K(射)、L(右)');
showLayer("clock2",clockY-clockRadius+82,clockX-18,200,25,3,'<EMBED SRC= "bubbleb.mid" loop="-1" WIDTH=46 HEIGHT=25>');
showLayer("info2",gunY-15,infoX-62,32,32,3,'<img src=23.gif>');
showLayer("info3",gunY-15,infoX-145,32,32,3,'<img src=22.gif>');
}
function showLayer(_layerID,_top,_left,_width,_height,_zIndex,_layerHTML) {
if (isIE4) {
document.body.insertAdjacentHTML("BeforeEnd",('<div id="'+_layerID+'" style="position:absolute; top:'+_top+'; left:'+_left+'; width:'+_width+'; height:'+_height+'; clip:rect(0px,'+_width+'px,'+_height+'px,0px); visibility:visible; z-index:'+_zIndex+';">'+_layerHTML+'</div>'));
}
else {
document.layers[_layerID]=new Layer(_width);
with (document.layers[_layerID]) {
height=_height;
top=_top; left=_left;
clip.top=0; clip.left=0; clip.bottom=_height; clip.right=_width;
zIndex=_zIndex;
document.open("text/html"); document.writeln(_layerHTML); document.close();
visibility="show";
}
}
}
function indexLayer(layerID,layerIndex) {
if (isIE4)
document.all[layerID].style.zIndex=layerIndex
else
document.layers[layerID].zIndex=layerIndex;
}
function getLayerTop(layerID) {
if (isIE4)
return document.all[layerID].style.pixelTop
else
return document.layers[layerID].top;
}
function moveLayerBy(layerID,x,y) {
if (isIE4) {
document.all[layerID].style.pixelLeft+=x;
document.all[layerID].style.pixelTop+=y;
}
else {
document.layers[layerID].moveBy(x,y);
}
}
function moveLayerTo(layerID,x,y) {
if (isIE4) {
document.all[layerID].style.pixelLeft=x;
document.all[layerID].style.pixelTop=y;
}
else {
document.layers[layerID].moveTo(x,y);
}
}
function drawLayer(layerID,layerHTML) {
if (isIE4) {
document.all[layerID].innerHTML=layerHTML;
}
else {
with (document.layers[layerID].document) {
open("text/html"); writeln(layerHTML); close();
}
}
}
function getLayerID(layerNum) { return "bubble"+layerNum+""; }
function randomBubble() { return Math.floor(Math.random()*bubbleMax); }
function nextBubble() {
if (bubbleFeeding<bubbleFeedingMax) {
bubbleNum=bubbleFeedings[bubbleLevel][bubbleFeeding];
bubbleFeeding++;
}
else
bubbleNum=randomBubble();
bubbleIDNum=newBubble(bubbleNum)
bubbleID=getLayerID(bubbleIDNum);
bubbleFired=false;
if (bubbleLevelStarted && bubbleControls[bubbleLevel][2]>0)
meterTimer=setTimeout("moveMeter()",bubbleControls[bubbleLevel][2]);
}
function fireBubble() {
if (!bubbleFired) {
clearTimeout(meterTimer);
restoreMeter();
bubbleX=gunX+gunLevelOffset; bubbleY=gunY;
bubbleUnitX=gunAngles[gunAngle].x; bubbleUnitY=gunAngles[gunAngle].y;
bubbleStepX=bubbleStep*bubbleUnitX; bubbleStepY=bubbleStep*bubbleUnitY;
bubbleFired=true;
bubbleBounce=0;
bubbleLevelStarted=true;
getHit();
moveBubble();
}
}
function getBubble() {
var layerLength=layerStatus.length;
var layerNum=-1;
var bubbleLayer="";
var layerID="";
for (var i=0; i<layerLength; i++)
if (layerStatus[i]) {
layerNum=i;
break;
}
if (layerNum<0) {
layerNum=++layerCount;
layerID=getLayerID(layerNum);
if (isIE4) {
bubbleLayer=layerString1+layerID+layerString2;
document.body.insertAdjacentHTML("BeforeEnd",bubbleLayer);
}
else {
document.layers[layerID]=new Layer(bubbleSize);
with (document.layers[layerID]) {
height=bubbleSize;
top=-bubbleSize; left=-bubbleSize;
visibility="show";
zIndex=3;
}
}
}
layerStatus[layerNum]=false;
layerDrop[layerNum]=false;
layerStep[layerNum]=0;
return layerNum;
}
function clearCheck() {
bubbleChecked=0;
bubbleTrain=0;
bubbleMultiCount=0;
for (var i=0; i<bubbleTableSize; i++)
for (var j=0; j<=bubbleTableSize; j++) {
bubbleTable[i][j].checked=false;
if (bubbleTable[i][j].bubbleNum==bubbleMulti) {
bubbleMultiX[bubbleMultiCount]=i;
bubbleMultiY[bubbleMultiCount]=j;
bubbleMultiChecked[bubbleMultiCount]=false;
bubbleMultiCount++;
}
}
}
function centralizeGun() {
gunDirection=0;
gunAngle=gunAngleCenter;
if (gunAngle>gunAngleEnd || gunAngle<gunAngleBegin)
gunAngle=gunAngleBegin;
gunX=baseX+baseMiddle; gunY=baseY+baseBottom;
}
function gameStart() {
if (numberCount==0) {
if (highScore<gameScore) {
highScore=gameScore;
roundScore(highScoreNumber);
}
gameScore=0;
bubbleCount=0;
bubbleLevel=0;
bubbleFired=false;
levelStart();
}
else
setTimeout("gameStart()",150);
}
function clearScore() {
if (bubbleDropFinished) {
clearNumber();
gameStart();
}
else
setTimeout("clearScore()",150);
}
function clearTable() {
if (numberCount==0) {
clearOnBoard();
cutBubble();
clearTimeout(layerTimer);
setTimeout("dropBubble();clearScore();",1500);
}
else
setTimeout("clearTable()",150);
}
function holdOn() {
if (bubbleDropFinished && numberCount==0)
clearTable()
else
setTimeout("holdOn()",150);
}
function levelFinished() {
eventRelease();
clearTimeout(gunTimer);
clearTimeout(meterTimer);
restoreMeter();
}
function levelStart() {
if (bubbleLevel<bubbleLevelMax)
showLevel()
else
gameWon();
}
function gameWon() {
alert("恭喜!\n\n你已全部过关!");
gameOver();
}
function gameOver() {
levelFinished();
holdOn();
}
function checkOnBoard(x,y) {
bubbleTable[x][y].onBoardChecked=true;
if (bubbleTable[x][y].checked)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -