var PLAYER_VX=0.2; var PLAYER_VY=-1.0; var PLAYER_AY=0.1; var KURI_SPEED=0.05; var FIRE_SPEED=0.4; var STATE_PLAYER_ALIVE=0; var STATE_PLAYER_DEAD=1; var STATE_KURI_ALIVE=2; var STATE_KURI_DEAD=3; var STATE_FIRE_ALIVE=4; var STATE_FIRE_DEAD=5; var KURI_COUNT=10; var FIRE_COUNT=5; var game; var player; var kuri; var fire; var playerRunAnim_right; var playerRunAnim_left; var kuriAnim; var fireAnim_right; var fireAnim_left; var vanishAnim; var playerHit; var kuriHit; var fireHit; var charaCount=0; function Player(){ var obj=this; obj.sprite=game.createSprite(); obj.sprite.initAnim(playerRunAnim_right); obj.sprite.initHit(playerHit); obj.sprite.setXY(0,YMAX); obj.vy=0; obj.jump=false; obj.sprite.setState(STATE_PLAYER_ALIVE); obj.spaceKey=true; obj.sprite.onUpdate=function(){ switch (obj.sprite.getState()) { case STATE_PLAYER_ALIVE: obj.alive(); break; case STATE_PLAYER_DEAD: obj.dead(); break; } } obj.alive=function(){ var x=obj.sprite.getX(); var y=obj.sprite.getY(); var vy=obj.vy; if (game.isKey(KEY_LEFT)) { x-=PLAYER_VX; } if (game.isKey(KEY_RIGHT)) { x+=PLAYER_VX; } if (x<0) x=0; if (x>XMAX) x=XMAX; if (!obj.jump) { if (game.isKey(KEY_UP)) { vy=PLAYER_VY; obj.jump=true; } if (x!=obj.sprite.getX()) { obj.sprite.stepAnim(); if (game.isKey(KEY_LEFT) && obj.sprite.getAnim()!=playerRunAnim_left) { obj.sprite.initAnim(playerRunAnim_left); } else if (game.isKey(KEY_RIGHT) && obj.sprite.getAnim()!=playerRunAnim_right) { obj.sprite.initAnim(playerRunAnim_right); } } else { obj.sprite.animIndex=0; } } else { y+=vy; vy+=PLAYER_AY; obj.sprite.animIndex=2; if (y>=YMAX) { y=YMAX; obj.jump=false; } } obj.sprite.setXY(x,y); obj.vy=vy; if (!obj.spaceKey && game.isKey(KEY_SPACE)) { for (i=0;i<fire.length;i++) { if (fire[i].sprite.getState()==STATE_FIRE_DEAD) { if (obj.sprite.getAnim()==playerRunAnim_left) { fire[i].sprite.initAnim(fireAnim_left); fire[i].init(x,y,-1,0); break; } else { fire[i].sprite.initAnim(fireAnim_right); fire[i].init(x,y,1,0); break; } } } } obj.spaceKey=game.isKey(KEY_SPACE); } obj.dead=function(){ obj.sprite.stepAnim(); if (obj.sprite.isAnimOver()) { init(); } } } function Fire(){ var obj=this; obj.sprite=game.createSprite(); obj.sprite.initAnim(fireAnim_right); obj.sprite.initHit(fireHit); obj.sprite.setXY(-1,-1); obj.vx=0; obj.vy=0; obj.sprite.setState(STATE_FIRE_DEAD); obj.init=function(x,y,dx,dy){ obj.sprite.setXY(x,y); obj.vx=dx*FIRE_SPEED; obj.vy=dy*FIRE_SPEED; obj.sprite.setState(STATE_FIRE_ALIVE); } obj.sprite.onUpdate=function(){ if (obj.sprite.getState()!=STATE_FIRE_ALIVE) { return; } var x=obj.sprite.getX(); var y=obj.sprite.getY(); x+=obj.vx; y+=obj.vy; obj.sprite.setXY(x,y); obj.sprite.stepAnim(); if (x<-1 || x>XMAX+1 || y<-1 || y>YMAX+1) { obj.sprite.setState(STATE_FIRE_DEAD); } } } function Kuri(){ var obj=this; obj.sprite=game.createSprite(); obj.sprite.initHit(kuriHit); obj.init=function(){ obj.sprite.initAnim(kuriAnim); obj.sprite.setXY(randFroat2(XMAX+1,XMAX*2),randFroat(YMAX)); obj.sprite.setState(STATE_KURI_ALIVE); obj.vx=-KURI_SPEED; obj.vy=randFroat(1)*KURI_SPEED; } obj.init(); obj.sprite.onUpdate=function(){ 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(); var vx=obj.vx; var vy=obj.vy; x+=obj.vx; y+=obj.vy; if (x!=obj.sprite.getX() || y!=obj.sprite.getY()) { obj.sprite.stepAnim(); } if (y<0 || y>YMAX) { obj.vy*=-1; } if (x<-1) { player.sprite.setState(STATE_PLAYER_DEAD); } obj.sprite.setXY(x,y); game.testHitSprite(obj.sprite); } obj.sprite.onHitSprite=function(spr){ switch (spr.getState()) { case STATE_PLAYER_ALIVE: spr.initAnim(vanishAnim); spr.setState(STATE_PLAYER_DEAD); break; case STATE_FIRE_ALIVE: spr.setXY(-1,-1); spr.setState(STATE_FIRE_DEAD); obj.sprite.initAnim(vanishAnim); obj.sprite.setState(STATE_KURI_DEAD); game.addScore(10); break; } } obj.dead=function(){ obj.sprite.stepAnim(); if (obj.sprite.isAnimOver()) { obj.init(); } } } function init(){ var i; game.clear(); game.setScore(0); player=new Player(); fire=new Array(); for (i=0;i<FIRE_COUNT;i++) { fire[i]=new Fire(); } kuri=new Array(); for (i=0;i<KURI_COUNT;i++) { kuri[i]=new Kuri(); } } function main(){ game=new Game(); 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" ); fireAnim_right=new Array( "image/sskfire00.png","image/sskfire00.png", "image/sskfire01.png","image/sskfire01.png" ); fireAnim_left=new Array( "image/sskfire10.png","image/sskfire10.png", "image/sskfire11.png","image/sskfire11.png" ); kuriAnim=new Array( "image/zako2.png","image/zako2.png", "image/zako3.png","image/zako3.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" ); playerHit=new Array(0.25,0.25,0.75,0.75); kuriHit=new Array(0.25,0,0.75,1); fireHit=new Array(0,0.25,1,0.75); init(); } |