📄 hunt_canvas.java
字号:
}
continue;
}
doTimerStart();
switch(stage){
case STARTING:
doPoseMove();
break;
case STAGEPASSING:
doStagepassing();
break;
case GAMEOVER:
doGameover();
break;
}
}
}
private void doPoseMove(){
//repaint();
int KeyState = getKeyStates();
if( (KeyState & UP_PRESSED) != 0)
post.doMove(UPMOVE);
else if( (KeyState & DOWN_PRESSED) != 0)
post.doMove(DOWNMOVE);
if( (KeyState & LEFT_PRESSED) != 0 )
post.doMove(LEFTMOVE);
else if( (KeyState & RIGHT_PRESSED) != 0 )
post.doMove(RIGHTMOVE);
int n=0;
for(int i=0;i<size;i++){
if(flag[i])
n++;
}
if(n<=3)
isRn = true;
else
isRn = false;
if(isRn){
switch((rnd.nextInt() & 0x7fffffff) % size){
case 0:
flag[0] = true;
break;
case 1:
flag[1] = true;
break;
case 2:
flag[2] = true;
break;
case 3:
flag[3] = true;
break;
case 4:
flag[4] = true;
break;
case 5:
flag[5] = true;
break;
case 6:
flag[6] = true;
break;
}
}
if( (KeyState & FIRE_PRESSED) != 0 ){
try{
bulletPlayer.prefetch();
bulletPlayer.start();
}
catch(MediaException e){
}
catch(OutOfMemoryError e){
}
Checkcollides();
}
repaint();
try {
mainThread.sleep(80);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
private void doStarting() {
//repaint();
}
public void SubSec() {
LeftTime--;
if ( LeftTime == 0 ){
if ( score == MinScore[StageNum-1] )
if ( StageNum == MinScore.length )
stage = ALLSTATESPASSED;
else
stage = STAGEPASSING;
else
stage = GAMEOVER;
}
repaint();
}
private void paintBackGround(Graphics g){
g.drawImage( backGroundImg, ScreenWid/2,
ScreenHigt/2, Graphics.HCENTER|Graphics.VCENTER );
g.setColor(0x00FF00FF);
g.drawString(String.valueOf(LeftTime), 39, 16, Graphics.TOP|Graphics.LEFT);
g.drawString("时间:", 10, 16, Graphics.TOP|Graphics.LEFT);
g.drawString(String.valueOf(score), 39, 1, Graphics.TOP|Graphics.LEFT);
g.drawString("分数:", 10, 1, Graphics.TOP|Graphics.LEFT);
g.drawString(String.valueOf(MinScore[StageNum-1]), 220, 1, Graphics.TOP|Graphics.LEFT);
g.drawString("目标分数:", 170, 1, Graphics.TOP|Graphics.LEFT);
g.drawString(String.valueOf(StageNum), 200, 16, Graphics.TOP|Graphics.LEFT);
g.drawString("关数:", 170, 16, Graphics.TOP|Graphics.LEFT);
}
public void setFlag(int f,boolean b){
flag[f] = b;
}
public synchronized void stop(){
if(!isPaused)
isPaused = true;
}
public synchronized void continuegame(){
if(isPaused)
isPaused = false;
doTimerStart();
}
private void Checkcollides(){
if(flag[0]){
if(post.getPostSprite().collidesWith(rabit.getRabit(),true)){
rabit.getRabit().setTransform(Sprite.TRANS_ROT180);
score+=5;
}
}
if(flag[1]){
if(post.getPostSprite().collidesWith(chicken.getAnimal(),true)){
chicken.getAnimal().setTransform(Sprite.TRANS_ROT180);
score+=15;
chicken.setIsAnimal(false);
}
}
if(flag[2]){
if(post.getPostSprite().collidesWith(bird.getBird(),true)){
bird.getBird().setTransform(Sprite.TRANS_ROT90);
score+=25;
bird.setIsBird(false);
}
}
if(flag[3]){
if(post.getPostSprite().collidesWith(duck.getBird(),true)){
duck.getBird().setFrame(3);
score+=20;
duck.setIsBird(false);
}
}
if(flag[4]){
if(post.getPostSprite().collidesWith(fly.getFly(),true)){
score+=30;
}
}
if(flag[5]){
if(post.getPostSprite().collidesWith(pig.getAnimal(),true)){
pig.getAnimal().setTransform(Sprite.TRANS_ROT180);
score+=10;
pig.setIsAnimal(false);
}
}
if(post.getPostSprite().collidesWith(balloon.getBalloon(),true)){
score-=5;
balloon.setIsBalloon(false);
}
}
private void doTimerStart() {
//计时器不是null的时候就启动计时器
if(timer == null) {
GameTimer gameTimer = new GameTimer(this);
timer = new Timer();
timer.schedule(gameTimer, 1000, 1000);
}
}
private void doTimerStop() {
//计时器不是null的时候就停止计时器
if(timer != null) {
timer.cancel();
timer = null;
}
}
private void doStagepassing(){
try{
Thread.sleep(3000);
} catch ( InterruptedException e ){}
ChangeStage();
}
private void ChangeStage(){
StageNum++;
post.InitPost();
rabit.InitRabitLocus();
balloon.InitBalloonLocus();
chicken.setXincrement(5);
chicken.InitAnimalLocus();
bird.InitBirdLocus();
duck.InitBirdLocus();
fly.InitFlyLocus();
pig.setXincrement(15);
pig.InitAnimalLocus();
for(int i = 0;i<size;i++){
flag[i] = false;
}
stage = STARTING;
LeftTime = TIMEPERSTAGE;
}
private void doGameover(){
repaint();
try {
mainThread.sleep(3000);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
midlet.MenuListQuit();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -