//Библиотеки: import javax.microedition.lcdui.*; import javax.microedition.lcdui.game.*; //**класс персонажа** public class Mario { //ссылка на этот класс: public static Mario mr; //обЪект движения карты: MapMove mapMove; //спрайт марио: Sprite hero,collider,feet,head,anal; //переменные: int mariox,marioy,marioFrame,framePlus,marioGo,marioNap,analNap,mR,mL,gravity,grav1,inx,iny,forx,fory,mx,my,dostup,mode,i,bx,by,jumpUp,jumpDown,mozJump,H,H_MAX,Uo,G,SPEED; double U1; //**конструктор персонажа** public Mario() { mr=this; marioStartInt(); createMarioSprite(); //обЪект движения карты: mapMove=new MapMove();} //**значения переменных** public void marioStartInt() { G=5; Uo=10; H=0; H_MAX=Uo^2/2*G; U1=Math.sqrt(Uo^2-2*G*H); mR=1; mL=1; gravity=1; jumpUp=1; jumpDown=0; mozJump=1; grav1=0; mode=1; dostup=1; marioNap=1; mariox=50; marioy=200; forx=2; fory=2; iny=fory; inx=forx; mx=0; my=0; marioFrame=0; framePlus=0; marioGo=0;} //**создаем спрайт марио** public void createMarioSprite() { anal=new Sprite(ResLoader.resL.anals); collider=new Sprite(ResLoader.resL.head_collider); feet=new Sprite(ResLoader.resL.feets,28,1); head=new Sprite(ResLoader.resL.head_collider); hero=new Sprite(ResLoader.resL.heros,28,33);} //**марио идет вправо** public void marioRight() { if (mR==1) { mariox+=inx;framePlus++;marioGo=1;marioNap=1;mapMove.mapLeft();} } //**марио идет влево** public void marioLeft() { if (mL==1) { mariox-=inx;framePlus++;marioGo=1;marioNap=2;mapMove.mapRight();} } //**персонаж стоит** public void marioNotGO() { if (gravity==1) { jumpDown=0;jumpUp=1;mozJump=1; hero.setFrame(8); feet.setFrame(8);} marioFrame=0;framePlus=0;marioGo=0;} //**прыжок марио** public void marioJump() { if (mozJump==1 && gravity==1) { gravity=2;grav1=0;jumpUp=1;mozJump=0;} } //**процессы прыжка** public void jumpProcess() { if (gravity==2) { hero.setFrame(9); feet.setFrame(9); if (jumpUp==1) { U1=Math.sqrt(Uo^2-2*G*H); if (my==0) { SPEED=(int) U1; iny=SPEED; } else { SPEED=(int) U1; my=SPEED;} marioy-=iny;mapMove.mapy+=my; H++; if (H>H_MAX) { H=H_MAX;jumpUp=0;jumpDown=1;} } if (jumpDown==1) { U1=Math.sqrt(Uo^2-2*G*H); if (my==0) { SPEED=(int) U1; iny=SPEED; } else { SPEED=(int) U1; my=SPEED;} marioy+=iny;mapMove.mapy-=my; H--; if (H<0) { H=0;jumpDown=0;jumpUp=1;} } } } //**анимация ходьбы** public void maxFrame() { if (marioGo==1) { if (framePlus>3) { framePlus=0;marioFrame++;} if (marioFrame>6) {marioFrame=0;} if (gravity==1) { hero.setFrame(marioFrame); feet.setFrame(marioFrame);} } } //**поворот марио** public void marioRoot() { //вправо: if (marioNap==1) { hero.setTransform(Sprite.TRANS_NONE); feet.setTransform(Sprite.TRANS_NONE); analNap=1;} //влево: if (marioNap==2) { hero.setTransform(Sprite.TRANS_MIRROR); feet.setTransform(Sprite.TRANS_MIRROR); analNap=2;} } //**гравитация** public void marioGravity() { if (gravity==1) { grav1++;marioy+=iny;mapMove.mapUp(); if (grav1>1) { dostup=0;} } } //**ставим марио на координаты** public void marioSetPos() { hero.setPosition(mariox,marioy); collider.setPosition(mariox,marioy+33); feet.setPosition(mariox,marioy+33); head.setPosition(mariox,marioy-1); if (analNap==1) { anal.setPosition(mariox+hero.getWidth(),marioy-1);} if (analNap==2) { anal.setPosition(mariox-1,marioy-1);} } //**камера** public void camera() { cameraMod(); modes(1); modes(2); modes(3);} //**камера слежения за марио** public void cameraMod() { //марио стоит,карта движется: if (mariox>100 && mode==1) {mariox=100;mode=2;} //марио стоит,карта движется: if (mariox<102 && mode==3) {mariox=102;mode=2;} //марио движется,карта стоит: U1=Math.sqrt(Uo^2-2*G*H); SPEED=(int) U1; if (marioy>170) { if (gravity==1) { iny=fory;my=0;} if (gravity==2) { iny=SPEED;my=0;} } else { if (gravity==1) { iny=0;my=fory;} if (gravity==2) { iny=0;my=SPEED;} } } //**режимы камеры** public void modes(int f) { //первый: if (f==1) { if (mode==1) { if (gravity==1) { mx=0;inx=forx;} if (gravity==2) { mx=0;inx=forx;} } } //второй: if (f==2) { if (mode==2) { if (gravity==1) { inx=0;mx=forx;} if (gravity==2) { inx=0;mx=forx;} } } //третий: if (f==3) { if (mode==3) { if (gravity==1) { inx=forx;mx=0;} if (gravity==2) { inx=forx;mx=0;} } } } //**столкновение марио с концем экрана** public void colWithEndScreen() { if (mapMove.mapx>0 && mode==2) { mapMove.mapx=mapMove.stmx;mode=1; if (grav1>1) { modes(1);} allThingsInCollides();} if (mapMove.mapx+LoadMap.lom.intStr[0][0]*32<240 && mode==2) { mapMove.mapx=mapMove.stmx;mode=3; if (grav1>1) { modes(3);} allThingsInCollides();} if (mapMove.mapy+LoadMap.lom.intStr[1][0]*32<320) { mapMove.mapy=mapMove.stmy; allThingsInCollides(); if (gravity==1) { iny=fory;my=0;} if (gravity==2) { iny=fory;my=0;} } } //**разные позиции** public void allThingsInCollides() { marioSetPos(); for (i=0;i<3;i++) { InstallMap.instm.tl[i].setPosition(mapMove.mapx,mapMove.mapy);} } }