var PLAYER_VX=0.2; var PLAYER_AX=0.03; var PLAYER_VY=-0.5; var WALL_VY=-0.2; var AY=0.03; var WORLD_COUNT=1; var FIELD_COUNT=5; var STATE_DEAD=99; var STATE_CLEAR=100; var STATE_GRAND_CLEAR=101; var STATE_PLAYER_ALIVE=0; var STATE_PLAYER_DEAD=1; var STATE_KURI_ALIVE=2; var STATE_KURI_DEAD=3; var STATE_WALL=4; var STATE_POLE=5; var STATE_HATENA_HATENA=6; var STATE_HATENA_BLOCK=7; var STATE_KAKUSHI=8; var STATE_BND_ALIVE=9; var STATE_TTR_ALIVE=10; var STATE_TTR_DEAD=11; var CELL_VOID=0; var CELL_WALL=1; var CELL_PLAYER=2; var CELL_KURI=3; var CELL_POLE=4; var CELL_FLOOR=5; var CELL_HATENA=6; var CELL_KAKUSHI=7; var CELL_BND=8; var CELL_TTR=9; var playerBodyHit; var playerHeadHit; var playerFootHit; var poleHit; var game; var player; var kuri; var bnd; var ttr; var wall; var hatena; var kakushi; var floor; var pole; var field; var fieldCell; var stageIndex; var kuriIndex; var bndIndex; var playerRunAnim_right; var playerRunAnim_left; var wallAnim; var hatenaAnim; var kakushiAnim; var vanishAnim; var titleAnim; var gx,gy; function Player(x,y){ var obj=this; obj.sprite=game.createSprite(); obj.sprite.initAnim(playerRunAnim_right); obj.sprite.initHit(playerBodyHit); obj.sprite.setState(STATE_PLAYER_ALIVE); obj.sprite.setXY(x,y); obj.vx=0; obj.vy=0; obj.jump=true; obj.muteki=false; obj.mutekiCount=0; obj.sprite.onUpdate=function(){ if (game.state!=GS_GAME) return; switch (obj.sprite.getState()) { case STATE_PLAYER_ALIVE: obj.alive(); break; case STATE_PLAYER_DEAD: obj.dead(); break; case STATE_CLEAR: obj.clear(); break; case STATE_GRAND_CLEAR: obj.grandClear(); break; } } obj.alive=function(){ var x=obj.sprite.getX(); var y=obj.sprite.getY(); var i,j; if (!obj.jump) { obj.vy=0; if (game.isKey(KEY_UP)) { obj.vy=PLAYER_VY; obj.jump=true; } if (game.isKey(KEY_LEFT) || game.isKey(KEY_RIGHT)) { if (game.isKey(KEY_LEFT)) { obj.vx-=PLAYER_AX; if (obj.vx<-PLAYER_VX) { obj.vx=-PLAYER_VX; } else if (obj.vx>0) { obj.vx=0; } if (obj.sprite.getAnim()!=playerRunAnim_left) { obj.sprite.initAnim(playerRunAnim_left); } } if (game.isKey(KEY_RIGHT)) { obj.vx+=PLAYER_AX; if (obj.vx>PLAYER_VX) { obj.vx=PLAYER_VX; } else if (obj.vx<0) { obj.vx=0; } if (obj.sprite.getAnim()!=playerRunAnim_right) { obj.sprite.initAnim(playerRunAnim_right); } } } else { if (obj.vx>0) { obj.vx-=PLAYER_AX/2; } else if (obj.vx<0) { obj.vx+=PLAYER_AX/2; } if (obj.vx>-PLAYER_AX && obj.vx<PLAYER_AX) { obj.vx=0; } } if (obj.vx!=0) { obj.sprite.stepAnim(); } else { obj.sprite.animIndex=0; } } else { obj.sprite.animIndex=2; if (game.isKey(KEY_UP)) { obj.vy+=AY; } else { obj.vy+=1.75*AY; } if (obj.vy>-PLAYER_VY) { obj.vy=-PLAYER_VY; } if (game.isKey(KEY_LEFT) || game.isKey(KEY_RIGHT)) { if (game.isKey(KEY_LEFT)) { obj.vx-=PLAYER_AX; if (obj.vx<-PLAYER_VX) { obj.vx=-PLAYER_VX; } else if (obj.vx>0) { obj.vx=0; } if (obj.sprite.getAnim()!=playerRunAnim_left) { obj.sprite.initAnim(playerRunAnim_left); } } if (game.isKey(KEY_RIGHT)) { obj.vx+=PLAYER_AX; if (obj.vx>PLAYER_VX) { obj.vx=PLAYER_VX; } else if (obj.vx<0) { obj.vx=0; } if (obj.sprite.getAnim()!=playerRunAnim_right) { obj.sprite.initAnim(playerRunAnim_right); } } } } obj.sprite.setXY(x+obj.vx,y+obj.vy); obj.sprite.onHitSprite=function(spr){ obj.bodyHit(spr); } game.testHitSprite(obj.sprite); if (obj.vy<0) { obj.sprite.setXY(x+obj.vx,y+obj.vy); obj.sprite.initHit(playerHeadHit); obj.sprite.onHitSprite=function(spr){ obj.headHit(spr); } game.testHitSprite(obj.sprite); } else { obj.sprite.setXY(x+obj.vx,y+obj.vy); obj.jump=true; obj.sprite.initHit(playerFootHit); obj.sprite.onHitSprite=function(spr){ obj.footHit(spr); } game.testHitSprite(obj.sprite); } x+=obj.vx; if (x<gx) { x=gx; } y+=obj.vy; obj.sprite.setXY(x,y); obj.sprite.initHit(playerBodyHit); if (x>gx+XMAX/3) { gx=x-XMAX/3; } if (gx>field.getXCount()-XMAX-1) { gx=field.getXCount()-XMAX-1; } game.setViewXY(gx,gy); if (obj.muteki) { obj.mutekiCount++; if (obj.mutekiCount>5) { obj.mutekiCount=0; obj.muteki=false; } } for (i=0;i<field.getYCount();i++) { if (field.getCell(gx+XMAX+1,i)==CELL_KURI) { kuri[kuriIndex]=new Kuri(); kuri[kuriIndex].init(gx+XMAX+1,i); kuriIndex++; field.setCell(gx+XMAX+1,i,CELL_VOID); } if (field.getCell(gx+XMAX+1,i)==CELL_BND) { bnd[bndIndex]=new Bnd(); bnd[bndIndex].init(gx+XMAX+1,i); bndIndex++; field.setCell(gx+XMAX+1,i,CELL_VOID); } } if (y>field.getYCount()+5) { obj.sprite.setState(STATE_PLAYER_DEAD); obj.sprite.initAnim(vanishAnim); } } obj.bodyHit=function(spr){ switch (spr.getState()) { case STATE_WALL: case STATE_HATENA_HATENA: case STATE_HATENA_BLOCK: obj.vx=0; break; case STATE_POLE: obj.sprite.setState(STATE_CLEAR); obj.vx=0; obj.vy=-PLAYER_VY/2; break; } } obj.headHit=function(spr){ switch (spr.getState()) { case STATE_HATENA_HATENA: case STATE_KAKUSHI: spr.stepAnim(); spr.setState(STATE_HATENA_BLOCK); spr.item(); case STATE_WALL: case STATE_HATENA_BLOCK: obj.vy=0; break; } } obj.footHit=function(spr){ switch (spr.getState()) { case STATE_WALL: case STATE_HATENA_HATENA: case STATE_HATENA_BLOCK: if (obj.jump) { obj.vy=(spr.getY()-1)-(obj.sprite.getY()-obj.vy); obj.jump=false; } break; } } obj.dead=function(){ obj.sprite.stepAnim(); if (obj.sprite.isAnimOver()) { game.setScore(game.getScore()-100); game.state=GS_CONTINUE; } } obj.clear=function(){ var x=obj.sprite.getX(); var y=obj.sprite.getY(); if (x>gx+XMAX+1) { game.state=GS_CLEAR; } if (obj.vy==0) { obj.vx=PLAYER_VX/2; } if (obj.vx!=0) { obj.sprite.stepAnim(); } if (obj.vy>0) { obj.sprite.setXY(x,y+obj.vy); obj.sprite.initHit(playerFootHit); obj.sprite.onHitSprite=function(spr){ if (spr.getState()==STATE_WALL) { obj.vy=0; y=spr.getY()-1; } } game.testHitSprite(obj.sprite); obj.sprite.initHit(playerBodyHit); } x+=obj.vx; y+=obj.vy; if (y<2) { obj.vy=-obj.vy; y=2; } obj.sprite.setXY(x,y); game.addScore(Math.abs(Math.floor(obj.vy*20))); } obj.grandClear=function() { game.state=GS_GRANDCLEAR; } } function Wall(x,y){ var obj=this; obj.sprite=game.createSprite(); obj.sprite.initAnim(wallAnim); obj.sprite.setState(STATE_WALL); obj.sprite.setXY(x,y); if (stageIndex==2 || stageIndex==4) { obj.sprite.animIndex=1; } } function Floor(x,y){ var obj=this; obj.sprite=game.createSprite(); obj.sprite.initHit(new Array(0, 0, 1, field.getYCount()-y+1)); obj.sprite.setState(STATE_WALL); obj.sprite.setXY(x,y); } function Hatena(x,y){ var obj=this; obj.sprite=game.createSprite(); obj.sprite.initAnim(hatenaAnim); obj.sprite.setState(STATE_HATENA_HATENA); obj.sprite.setXY(x,y); obj.sprite.item=function(){ var x=obj.sprite.getX(); var y=obj.sprite.getY(); switch (stageIndex) { case 1: kuri[kuriIndex]=new Kuri(); kuri[kuriIndex].px=1; kuri[kuriIndex].init(x,y-1); kuriIndex++; break; case 2: case 3: case 4: bnd[bndIndex]=new Bnd(); bnd[bndIndex].px=1; bnd[bndIndex].init(x,y-1); bndIndex++; break; } } } function Kakushi(x,y){ var obj=this; obj.sprite=game.createSprite(); obj.sprite.initAnim(kakushiAnim); obj.sprite.setState(STATE_KAKUSHI); obj.sprite.setXY(x,y); obj.sprite.item=function(){ var x=obj.sprite.getX(); var y=obj.sprite.getY(); switch (stageIndex) { case 1: kuri[kuriIndex]=new Kuri(); kuri[kuriIndex].px=1; kuri[kuriIndex].init(x,y-1); kuriIndex++; break; case 2: case 3: case 4: bnd[bndIndex]=new Bnd(); bnd[bndIndex].px=1; bnd[bndIndex].init(x,y-1); bndIndex++; break; } } } function Pole(x,y){ var obj=this; obj.sprite=game.createSprite(); obj.sprite.initHit(poleHit); obj.sprite.setState(STATE_POLE); obj.sprite.setXY(x,y); } function nextStage(index){ var x,y,i,j,k,l; game.clear(); field=game.createField(); if (index==1 || index==3) { field.initCellImage(new Array( "image/darkblue.png","image/darkblue.png","image/darkblue.png", "image/darkblue.png","image/darkpole.png","image/darkfloor.png", "image/darkblue.png","image/darkblue.png","image/darkblue.png", "image/darkblue.png", "image/darkfloor.png","image/leaf.png","image/cloudleft.png", "image/cloudright.png","image/mt1.png","image/mt2.png", "image/mt3.png","image/mt4.png","image/mt5.png", "image/mt6.png","image/mt7.png","image/mt8.png", "image/pole1.png","image/darkwall.png" )); } else { field.initCellImage(new Array( "image/skyblue.png","image/skyblue.png","image/skyblue.png", "image/skyblue.png","image/pole0.png","image/floor.png", "image/skyblue.png","image/skyblue.png","image/skyblue.png", "image/skyblue.png", "image/floor.png","image/leaf.png","image/cloudleft.png", "image/cloudright.png","image/mt1.png","image/mt2.png", "image/mt3.png","image/mt4.png","image/mt5.png", "image/mt6.png","image/mt7.png","image/mt8.png", "image/pole1.png","image/darkwall.png" )); } field.initCell(fieldCell[0][index]); wall=new Array(); floor=new Array(); hatena=new Array(); kakushi=new Array(); kuri=new Array(); kuriIndex=0; bnd=new Array(); bndIndex=0; for (i=0,j=0,k=0,l=0,y=0;y<field.getYCount();y++) { for (x=0;x<field.getXCount();x++) { switch (field.getCell(x,y)) { case CELL_PLAYER: player=new Player(x,y); break; case CELL_WALL: wall[i]=new Wall(x,y); i++; break; case CELL_KURI: if (x<=XMAX+2) { kuri[kuriIndex]=new Kuri(); kuri[kuriIndex].init(x,y); field.setCell(x,y,CELL_VOID); kuriIndex++; } break; case CELL_BND: if (x<=XMAX+2) { bnd[bndIndex]=new Bnd(); bnd[bndIndex].init(x,y); field.setCell(x,y,CELL_VOID); bndIndex++; } break; case CELL_FLOOR: floor[k]=new Floor(x,y); k++; break; case CELL_HATENA: hatena[l]=new Hatena(x,y); l++; break; case CELL_KAKUSHI: kakushi[j]=new Kakushi(x,y); j++; break; case CELL_POLE: pole=new Pole(x,y); break; case CELL_TTR: ttr=new Ttr(x,y); break; } } } gx=0; gy=field.getYCount()-YMAX-1.75; game.setViewXY(gx,gy); splash=game.createSplash(); splash.setSize(CELL_XCOUNT,CELL_YCOUNT); splash.setState(STATE_SPLASH); } function init(){ var x,y,i,j,k,l; game.clear(); game.setScore(0); field=game.createField(); field.initCellImage(new Array( "image/skyblue.png","image/skyblue.png","image/skyblue.png", "image/skyblue.png","image/pole0.png","image/floor.png", "image/skyblue.png","image/skyblue.png","image/skyblue.png", "image/skyblue.png", "image/floor.png","image/leaf.png","image/cloudleft.png", "image/cloudright.png","image/mt1.png","image/mt2.png", "image/mt3.png","image/mt4.png","image/mt5.png", "image/mt6.png","image/mt7.png","image/mt8.png", "image/pole1.png","image/darkwall.png" )); stageIndex=0; field.initCell(fieldCell[0][stageIndex++]); wall=new Array(); floor=new Array(); hatena=new Array(); kakushi=new Array(); kuri=new Array(); kuriIndex=0; bnd=new Array(); bndIndex=0; for (i=0,j=0,k=0,l=0,y=0;y<field.getYCount();y++) { for (x=0;x<field.getXCount();x++) { switch (field.getCell(x,y)) { case CELL_PLAYER: player=new Player(x,y); break; case CELL_WALL: wall[i]=new Wall(x,y); i++; break; case CELL_KURI: if (x<=XMAX+2) { kuri[kuriIndex]=new Kuri(); kuri[kuriIndex].init(x,y); field.setCell(x,y,CELL_VOID); kuriIndex++; } break; case CELL_BND: if (x<=XMAX+2) { bnd[bndIndex]=new Bnd(); bnd[bndIndex].init(x,y); field.setCell(x,y,CELL_VOID); bndIndex++; } break; case CELL_FLOOR: floor[k]=new Floor(x,y); break; case CELL_HATENA: hatena[l]=new Hatena(x,y); l++; break; case CELL_KAKUSHI: kakushi[j]=new Kakushi(x,y); j++; break; case CELL_POLE: pole=new Pole(x,y); break; case CELL_TTR: ttr=new Ttr(x,y); break; } } } gx=0; gy=field.getYCount()-YMAX-1.75; game.setViewXY(gx,gy); splash=game.createSplash(); splash.setSize(CELL_XCOUNT,CELL_YCOUNT); splash.setState(STATE_SPLASH); } function main(){ var i; game=new Game(); game.onUpdate=function() { switch (game.state) { case GS_TITLE: initTitle(); game.state=GS_TITLE2; case GS_TITLE2: title.stepAnim(); if (game.isKey(KEY_ENTER)) { init(); game.state=GS_READY; } break; case GS_READY: initSplash("image/ready.png"); game.time=0; game.state=GS_READY2; case GS_READY2: game.time++; if (game.time==20) { initSplash("image/void.png"); game.state=GS_GAME; } break; case GS_CLEAR: initSplash("image/clear.png"); game.time=0; game.state=GS_CLEAR2; case GS_CLEAR2: game.time++; if (game.time==20) { initSplash("image/void.png"); if (stageIndex<FIELD_COUNT) { nextStage(stageIndex++); } game.state=GS_READY; } break; case GS_CONTINUE: initSplash("image/continue.png"); game.state=GS_CONTINUE2; case GS_CONTINUE2: if (game.isKey(KEY_ENTER)) { initSplash("image/void.png"); nextStage(stageIndex-1); game.state=GS_READY; } if (game.isKey(KEY_ESC)) { initSplash("image/void.png"); game.state=GS_GAMEOVER; } break; case GS_GAMEOVER: initSplash("image/gameover.png"); game.time=0; game.state=GS_GAMEOVER2; case GS_GAMEOVER2: game.time++; if (game.time==20) { initSplash("image/void.png"); game.state=GS_TITLE; } break; case GS_GRANDCLEAR: initSplash("image/grandClear.png"); game.time=0; game.state=GS_GRANDCLEAR2; case GS_GRANDCLEAR2: game.time++; if(game.time==200) { initSplash("image/black.png"); game.state=GS_TITLE; } break; } } playerRunAnim_right=new Array( "image/ssk00.png","image/ssk00.png", "image/ssk01.png","image/ssk01.png", "image/ssk02.png","image/ssk02.png", "image/ssk01.png","image/ssk01.png", "image/ssk00.png","image/ssk00.png", "image/ssk03.png","image/ssk03.png", "image/ssk04.png","image/ssk04.png", "image/ssk03.png","image/ssk03.png" ); playerRunAnim_left=new Array( "image/ssk10.png","image/ssk10.png", "image/ssk11.png","image/ssk11.png", "image/ssk12.png","image/ssk12.png", "image/ssk11.png","image/ssk11.png", "image/ssk10.png","image/ssk10.png", "image/ssk13.png","image/ssk13.png", "image/ssk14.png","image/ssk14.png", "image/ssk13.png","image/ssk13.png" ); wallAnim=new Array("image/wall.png","image/darkwall.png"); hatenaAnim=new Array("image/hatenablock1.png","image/hatenablock2.png"); kakushiAnim=new Array("image/void.png","image/hatenablock2.png"); vanishAnim=new Array( "image/void.png","image/vanish8.png","image/vanish6.png", "image/vanish4.png","image/vanish2.png","image/vanish0.png", "image/vanish1.png","image/vanish2.png","image/vanish3.png", "image/vanish4.png","image/vanish5.png","image/vanish6.png", "image/vanish7.png","image/vanish8.png","image/void.png" ); titleAnim=new Array("image/title2.png"); playerBodyHit=new Array(0.1, 0.1, 0.9, 0.8); playerHeadHit=new Array(0.1, 0.3, 0.9, 0.4); playerFootHit=new Array(0.1, 1, 0.9, 1.1); poleHit=new Array(0.2, 0.1, 0.8, 9); fieldCell=new Array(); for (i=0;i<WORLD_COUNT;i++) { fieldCell[i]=new Array(FIELD_COUNT); } fieldCell[0][0]=new Array( "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "000000000cd00000000000000000000cd0000000000000000000000000cd00000000000000000000000cd00000000000000000cd0000000000000000", "0000cd0000000000000000cd000000000000000000cd0000000000000000000cd000000000000cd0000000000000000000cd00000000000000400000", "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000m00000", "00000000016100000000cd00000000000000000000000000000cd0000000000000000000000000000000000000000000000000000000000000m00000", "000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000003330000000m00000", "000000000300000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000000055500000m00000", "0000000161616100030000000000000001111111111000000000000000000000011111100000000000000000000111000000000005aaa00000m00000", "000000000000000000000000000000000000000000000000000070001100000000000000000000000000000000000000000000005aaaa00000m00000", "00000000000efg003000000000000000000efg00000000000000000000000000000000000000000000000000000000000efg0005aaaaa00000m00000", "002000bb00hijkl300bb00000000000000hijkl00bbb0003000000000000000000000000bb3030300000000000000bbbhijkl05aaaaaa0bb00m00000", "555555555555555555555550000555555555555555555555555500000000055555555555555555555555000055555555555555aaaaaaa55555555555", "aaaaaaaaaaaaaaaaaaaaaaa0000aaaaaaaaaaaaaaaaaaaaaaaaa000000000aaaaaaaaaaaaaaaaaaaaaaa0000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ); fieldCell[0][1]=new Array( "000000000000000000000000000000000000000000000000030000000000000000000000000000000000000000000000000000000000000000000000", "111111111111111111111111111111111111111111111100111111111111111111001111111111111111111110000000000111111111111111111111", "100200000000000000000000000000000000000000000000000000000000000800000000000000000000000000000011000000000000000000000001", "100000000000003000000000000000000000000000000000000000000000000000000000000000000000000000700000011000000000000000000001", "100000000000000000000000011100000000000000000000000000011100000000000000000000000000000000000000000000000000000000000001", "100000000000030000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000000001", "100000000000300000000000000000000000000000000000000000000000000000000000000000000030000000000000000000000000000000000040", "100000000011111100000000161610000000005000050000000000000000000000000000000000001110000007000000000555555555555555555555", "10000000000000000000000000000000000050a0000a5000000000000000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaa", "100000000000000000000000000000003050a0a0000aa500000000000000000500005000000000000000000300000000000aaaaaaaaaaaaaaaaaaaaa", "1000000000000000000000000000000050a0a0a0000aaa50000000000000005a0000a500000000000000003000000000000aaaaaaaaaaaaaaaaaaaaa", "55555555555555555555555555555555a0a0a0a0000aaaa555555555555555aa0000aa55555555555555555550000000000aaaaaaaaaaaaaaaaaaaa5", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0a0a0a0000aaaaaaaaaaaaaaaaaaaaa0000aaaaaaaaaaaaaaaaaaaaa0000000000aaaaaaaaaaaaaaaaaaaaa" ); fieldCell[0][2]=new Array( "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030000000000000000000", "000000000cd0000000000000000cd0000000cd000000000cd000000000cd00000000000000cd0000000000000000000cd001110000100000cd000000", "000cd00000000000000cd000000000000000000000000000000000cd000000cd000000000000000000000000000cd0000000000cd000000004000000", "000000000000000cd00000000000303000000000cd0000000000000000000000000000300000000000cd00000000000000000000000000000m000000", "00000000610000000000000000001110000000000000000000000000000000000000000000111000000000000100011100000000000000000m000000", "00000000000000000000000000000000000000000000000000000010000000000000030000000000000000000000000000000000000000000m000000", "00000000030000000000000000000000000000000000000000000000000000000000300000000000000011000000000000000000000000000m000000", "00000001111100000110000111110000000000000000000110000000000000001111111100000000000000000000000000001110000000000m000000", "00000000000000000000000000000000000010000000000000000000000000000000000000000000100000000000000000000000000000000m000000", "00000000efg00000000000000000000000000efg00000000000000000000000000000000000100000000000000000efg00efg000000000000m000000", "00200bbhijkl0000000bb000000000000000hijklbb0000000000000000000bbb0000bb000000000000000000000hijklhijkl0bbb0000000m000000", "555555555555000000555500000000055555555555550000000000000005555555555555000000005550000555555555555555555555500005555555", "aaaaaaaaaaaa000000aaaa000000000aaaaaaaaaaaaa000000000000000aaaaaaaaaaaaa00000000aaa0000aaaaaaaaaaaaaaaaaaaaaa0000aaaaaaa" ); fieldCell[0][3]=new Array( "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111100111111111111111", "100200000000000000000000000000000000000000000000000003000000000000000000000000000000000000000000000000000000000000000001", "100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000001", "100000000000000161000000000000000000011100000000000000000001111100000000000000000000000000000000000000000000000000000001", "100000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000001", "100000000000000000003000000000000000000000000000000000000000000000000111000011100011100000000000000000000000000000000001", "100000000000111111111000001100001100000000000111111111001100000000007000000000000000000001111000011110000007000000000001", "100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001", "100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001", "100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040", "555555555555000000000000000000000000555555550000000000000000000055550000000000000000000000000000000000555555555555555555", "aaaaaaaaaaaa000000000000000000000000aaaaaaaa00000000000000000000aaaa0000000000000000000000000000000000aaaaaaaaaaaaaaaaaa" ); fieldCell[0][4]=new Array( "5020000000000905", "a00000000000000a", "a00000000000000a", "a00000000000000a", "a00000000000000a", "a00000000000000a", "a00000000000000a", "a00000000000000a", "a00000000000000a", "a00000000000000a", "a00000000000000a", "a00000000000000a", "a00000000000000a", "a55555555555555a", "aaaaaaaaaaaaaaaa" ); game.state=GS_TITLE; game.time=0; } |
var KURI_SPEED=0.03; var BND_SPEED=0.03; var TTR_SPEED=0.04; var TTR_VY=-0.8; var TTR_HP=10; var kttr=new Array(); var KTTR_COUNT=10; var enemyBodyHit=new Array(0.1, 0.1, 0.9, 0.8); var enemyFootHit=new Array(0.1 ,1, 0.9, 1.1); var ttrBodyHit=new Array(0.1, 0.1, 1.9, 1.8); var ttrFootHit=new Array(0.1 ,2, 1.9, 2.1); var kuriAnim=new Array( "image/zako2.png","image/zako2.png", "image/zako3.png","image/zako3.png" ); var bndLeftAnim=new Array( "image/bnd00.png","image/bnd01.png","image/bnd02.png", "image/bnd03.png","image/bnd02.png","image/bnd01.png","image/bnd00.png" ); var bndRightAnim=new Array( "image/bnd10.png","image/bnd11.png","image/bnd12.png", "image/bnd13.png","image/bnd12.png","image/bnd11.png","image/bnd10.png" ); var ttrLeftAnim=new Array("image/ttr0.png"); var ttrRightAnim=new Array("image/ttr1.png"); function Kuri(){ var obj=this; obj.sprite=game.createSprite(); obj.sprite.initAnim(kuriAnim); obj.sprite.setState(STATE_DEAD); obj.sprite.setXY(-3,-3); obj.vx=0; obj.px=-1; obj.vy=0; obj.jump=false; obj.init=function(x,y){ obj.sprite.setXY(x,y); obj.sprite.initAnim(kuriAnim); obj.sprite.setState(STATE_KURI_ALIVE); obj.vx=obj.px*KURI_SPEED; obj.vy=0; obj.jump=false; } obj.sprite.onUpdate=function(){ if (game.state!=GS_GAME) return; switch (obj.sprite.getState()) { case STATE_KURI_ALIVE: obj.alive(); break; case STATE_KURI_DEAD: obj.dead(); break; } } obj.alive=function(){ var x=obj.sprite.getX(); var y=obj.sprite.getY(); obj.sprite.stepAnim(); if (x<gx-2) { obj.sprite.setState(STATE_KURI_DEAD); } if (!obj.jump) { obj.vy=0; } else { obj.vx=0; obj.vy+=AY; if (obj.vy>-PLAYER_VY) { obj.vy=-PLAYER_VY; } } obj.sprite.setXY(x+obj.vx,y+obj.vy); obj.sprite.initHit(enemyBodyHit); obj.sprite.onHitSprite=function(spr){ switch (spr.getState()) { case STATE_WALL: case STATE_HATENA_HATENA: case STATE_HATENA_BLOCK: obj.px*=-1; obj.vx=obj.px*KURI_SPEED; break; case STATE_PLAYER_ALIVE: case STATE_CLEAR: if (player.vy>obj.vy) { obj.sprite.setState(STATE_KURI_DEAD); obj.sprite.initAnim(vanishAnim); player.vy=PLAYER_VY; player.jump=true; player.muteki=true; game.addScore(10); } else { if (player.muteki) { obj.sprite.setState(STATE_KURI_DEAD); obj.sprite.initAnim(vanishAnim); player.vy=PLAYER_VY; player.jump=true; game.addScore(10); } else { spr.setState(STATE_PLAYER_DEAD); spr.initAnim(vanishAnim); } } break; } } game.testHitSprite(obj.sprite); if (obj.vy>=0) { obj.sprite.setXY(x+obj.vx,y+obj.vy); obj.jump=true; obj.sprite.initHit(enemyFootHit); obj.sprite.onHitSprite=function(spr){ if (spr.getState()==STATE_WALL || spr.getState()==STATE_HATENA_HATENA || spr.getState()==STATE_HATENA_BLOCK) { if (obj.jump) { obj.vy=(spr.getY()-1)-(obj.sprite.getY()-obj.vy); obj.jump=false; if (obj.vx==0) { obj.vx=obj.px*KURI_SPEED; } } } } game.testHitSprite(obj.sprite); } if (y>field.getYCount()+5) { obj.sprite.setState(STATE_DEAD); obj.sprite.setXY(-3,-3); } obj.sprite.setXY(x+obj.vx,y+obj.vy); } obj.dead=function(){ obj.sprite.stepAnim(); if (obj.sprite.isAnimOver()) { obj.sprite.setXY(-3,-3); obj.sprite.setState(STATE_DEAD); } } } function Bnd(){ var obj=this; obj.sprite=game.createSprite(); obj.sprite.initAnim(bndLeftAnim); obj.sprite.setState(STATE_DEAD); obj.sprite.setXY(-3,-3); obj.vx=0; obj.px=-1; obj.vy=0; obj.jump=false; obj.boundFrag=false; obj.init=function(x,y){ obj.sprite.setXY(x,y); obj.sprite.initAnim(bndLeftAnim); obj.sprite.setState(STATE_BND_ALIVE); obj.vx=obj.px*BND_SPEED; obj.vy=0; obj.jump=false; obj.boundFrag=false; } obj.sprite.onUpdate=function(){ if (game.state!=GS_GAME) return; switch (obj.sprite.getState()) { case STATE_BND_ALIVE: obj.alive(); break; } } obj.alive=function(){ var x=obj.sprite.getX(); var y=obj.sprite.getY(); if (x<gx-2) { obj.sprite.setState(STATE_DEAD); obj.sprite.setXY(-3,-3); } if (!obj.jump) { obj.vy=0; } else { obj.vx=0; obj.vy+=AY; if (obj.vy>-PLAYER_VY) { obj.vy=-PLAYER_VY; } } if (obj.boundFrag) { obj.bound(); } if (obj.vx<0 && obj.sprite.getAnim()!=bndLeftAnim) { obj.sprite.initAnim(bndLeftAnim); } if (obj.vx>0 && obj.sprite.getAnim()!=bndRightAnim) { obj.sprite.initAnim(bndRightAnim); } obj.sprite.setXY(x+obj.vx,y+obj.vy); obj.sprite.initHit(enemyBodyHit); obj.sprite.onHitSprite=function(spr){ switch (spr.getState()) { case STATE_WALL: case STATE_HATENA_HATENA: case STATE_HATENA_BLOCK: obj.px*=-1; obj.vx=obj.px*BND_SPEED; break; case STATE_PLAYER_ALIVE: case STATE_CLEAR: if (player.vy>obj.vy) { obj.boundFrag=true; player.muteki=true; } else if (!obj.boundFrag) { if (player.muteki) { obj.boundFrag=true; } else { spr.setState(STATE_PLAYER_DEAD); spr.initAnim(vanishAnim); } } break; } } game.testHitSprite(obj.sprite); if (obj.vy>=0) { obj.sprite.setXY(x+obj.vx,y+obj.vy); obj.jump=true; obj.sprite.initHit(enemyFootHit); obj.sprite.onHitSprite=function(spr){ if (spr.getState()==STATE_WALL || spr.getState()==STATE_HATENA_HATENA || spr.getState()==STATE_HATENA_BLOCK) { if (obj.jump) { obj.vy=(spr.getY()-1)-(obj.sprite.getY()-obj.vy); obj.jump=false; if (obj.vx==0) { obj.vx=obj.px*BND_SPEED; } } } } game.testHitSprite(obj.sprite); } if (y>field.getYCount()+5) { obj.sprite.setState(STATE_DEAD); obj.sprite.setXY(-3,-3); } obj.sprite.setXY(x+obj.vx,y+obj.vy); } obj.bound=function(){ obj.sprite.stepAnim(); player.vy=2*PLAYER_VY; player.jump=true; if (obj.sprite.isAnimOver()) { obj.boundFrag=false; } } } function Ttr(x,y){ var obj=this; var i; obj.sprite=game.createSprite(); obj.sprite.initAnim(ttrLeftAnim); obj.sprite.setState(STATE_TTR_ALIVE); obj.sprite.setXY(x,y); obj.sprite.setSize(2,2); obj.vx=-TTR_SPEED; obj.vy=0; obj.HP=TTR_HP; obj.jump=true; obj.frag=0; obj.time=0; for (i=0;i<KTTR_COUNT;i++) { kttr[i]=new Kttr(); } obj.sprite.onUpdate=function(){ if (game.state!=GS_GAME) return; switch (obj.sprite.getState()) { case STATE_TTR_ALIVE: obj.alive(); break; case STATE_TTR_DEAD: obj.dead(); break; } } obj.alive=function(){ var x=obj.sprite.getX(); var y=obj.sprite.getY(); obj.time++; if (obj.time==100) { obj.time=0; for (i=0;i<KTTR_COUNT;i++) { if (kttr[i].sprite.getState()==STATE_DEAD) { kttr[i].init(player.sprite.getX(),1); break; } } } if (obj.vx<0 && obj.sprite.getAnim()!=ttrLeftAnim) { obj.sprite.initAnim(ttrLeftAnim); } if (obj.vx>0 && obj.sprite.getAnim()!=ttrRightAnim) { obj.sprite.initAnim(ttrRightAnim); } if (!obj.jump) { var r=Math.random(); obj.vy=0; if (obj.vx!=0) { if (r<0.01) { obj.vx=0; } else if (r<0.02) { obj.vx*=-1; } else if (r<0.03) { obj.vy=TTR_VY; obj.jump=true; } } else { if (r<0.02) { obj.vx=TTR_SPEED; } else if (r<0.04) { obj.vx=-TTR_SPEED; } } } else { obj.vy+=AY; if (obj.vy>-TTR_VY) { obj.vy=-TTR_VY; } } obj.sprite.setXY(x+obj.vx,y+obj.vy); obj.sprite.initHit(ttrBodyHit); obj.sprite.onHitSprite=function(spr){ switch (spr.getState()) { case STATE_WALL: case STATE_HATENA_HATENA: case STATE_HATENA_BLOCK: obj.vx*=-1; break; case STATE_PLAYER_ALIVE: case STATE_CLEAR: if (player.vy>obj.vy) { if (obj.frag>=5) { obj.HP-=1; game.addScore(10); } obj.vy=0; if (obj.HP==0) { obj.sprite.setState(STATE_TTR_DEAD); obj.sprite.initAnim(vanishAnim); } player.vy=PLAYER_VY; player.jump=true; player.muteki=true; } else { if (player.muteki) { player.vy=PLAYER_VY; player.jump=true; } else { spr.setState(STATE_PLAYER_DEAD); spr.initAnim(vanishAnim); } } break; } } game.testHitSprite(obj.sprite); if (obj.vy>=0) { obj.sprite.setXY(x+obj.vx,y+obj.vy); obj.jump=true; obj.sprite.initHit(ttrFootHit); obj.sprite.onHitSprite=function(spr){ if (spr.getState()==STATE_WALL || spr.getState()==STATE_HATENA_HATENA || spr.getState()==STATE_HATENA_BLOCK) { if (obj.jump) { obj.vy=(spr.getY()-2)-(obj.sprite.getY()-obj.vy); obj.jump=false; } } } game.testHitSprite(obj.sprite); } obj.sprite.setXY(x+obj.vx,y+obj.vy); } obj.dead=function(){ obj.sprite.stepAnim(); if (obj.sprite.isAnimOver()) { obj.sprite.setXY(-3,-3); obj.sprite.setState(STATE_DEAD); player.sprite.setState(STATE_GRAND_CLEAR); } } } function Kttr(){ var obj=this; obj.sprite=game.createSprite(); obj.sprite.setState(STATE_DEAD); obj.sprite.setXY(-3,-3); obj.vx=0; obj.vy=0; obj.jump=true; obj.init=function(x,y){ obj.sprite.initAnim(ttrLeftAnim); obj.sprite.setState(STATE_TTR_ALIVE); obj.sprite.setXY(x,y); obj.vx=0; obj.vy=0; obj.jump=true; } obj.sprite.onUpdate=function(){ if (game.state!=GS_GAME) return; switch (obj.sprite.getState()) { case STATE_TTR_ALIVE: obj.alive(); break; case STATE_TTR_DEAD: obj.dead(); break; } } obj.alive=function(){ var x=obj.sprite.getX(); var y=obj.sprite.getY(); if (obj.vx<0 && obj.sprite.getAnim()!=ttrLeftAnim) { obj.sprite.initAnim(ttrLeftAnim); } if (obj.vx>0 && obj.sprite.getAnim()!=ttrRightAnim) { obj.sprite.initAnim(ttrRightAnim); } if (!obj.jump) { var r=Math.random(); obj.vy=0; if (obj.vx!=0) { if (r<0.01) { obj.vx=0; } else if (r<0.02) { obj.vx*=-1; } else if (r<0.03) { obj.vy=TTR_VY/2; obj.jump=true; } } else { if (r<0.02) { obj.vx=TTR_SPEED; } else if (r<0.04) { obj.vx=-TTR_SPEED; } } } else { obj.vy+=AY; if (obj.vy>-TTR_VY/2) { obj.vy=-TTR_VY/2; } } obj.sprite.setXY(x+obj.vx,y+obj.vy); obj.sprite.initHit(enemyBodyHit); obj.sprite.onHitSprite=function(spr){ switch (spr.getState()) { case STATE_WALL: case STATE_HATENA_HATENA: case STATE_HATENA_BLOCK: obj.vx*=-1; break; case STATE_PLAYER_ALIVE: case STATE_CLEAR: if (player.vy>obj.vy) { obj.vy=0; obj.sprite.setState(STATE_TTR_DEAD); obj.sprite.initAnim(vanishAnim); player.vy=PLAYER_VY; player.jump=true; player.muteki=true; ttr.frag++; } else { if (player.muteki) { obj.vy=0; obj.sprite.setState(STATE_TTR_DEAD); obj.sprite.initAnim(vanishAnim); player.vy=PLAYER_VY; player.jump=true; ttr.frag++; } else { spr.setState(STATE_PLAYER_DEAD); spr.initAnim(vanishAnim); } } break; } } game.testHitSprite(obj.sprite); if (obj.vy>=0) { obj.sprite.setXY(x+obj.vx,y+obj.vy); obj.jump=true; obj.sprite.initHit(enemyFootHit); obj.sprite.onHitSprite=function(spr){ if (spr.getState()==STATE_WALL || spr.getState()==STATE_HATENA_HATENA || spr.getState()==STATE_HATENA_BLOCK) { if (obj.jump) { obj.vy=(spr.getY()-1)-(obj.sprite.getY()-obj.vy); obj.jump=false; } } } game.testHitSprite(obj.sprite); } obj.sprite.setXY(x+obj.vx,y+obj.vy); } obj.dead=function(){ obj.sprite.stepAnim(); if (obj.sprite.isAnimOver()) { obj.sprite.setXY(-3,-3); obj.sprite.setState(STATE_DEAD); } } } |
var GS_TITLE=0; var GS_TITLE2=1; var GS_READY=2; var GS_READY2=3; var GS_GAME=4; var GS_CLEAR=5; var GS_CLEAR2=6; var GS_CONTINUE=7; var GS_CONTINUE2=8; var GS_GAMEOVER=9; var GS_GAMEOVER2=10; var GS_GRANDCLEAR=11; var GS_GRANDCLEAR2=12; var title; var splash; var STATE_SPLASH=-1; function initTitle() { game.clear(); game.setViewXY(0,0); title=game.createSprite(); title.initAnim(titleAnim); title.setSize(CELL_XCOUNT,CELL_YCOUNT); } function initSplash(image) { splash.setXY(game.getViewX(), game.getViewY()); splash.initAnim(new Array(image)); } |