📄 gamecanvas.java
字号:
/**
* Called when a key is repeated (held down).
*/
protected void keyRepeated(int keyCode) {
}
/**
* Called when the pointer is dragged.
*/
protected void pointerDragged(int x, int y) {
}
/**
* Called when the pointer is pressed.
*/
protected void pointerPressed(int x, int y) {
}
/**
* Called when the pointer is released.
*/
protected void pointerReleased(int x, int y) {
}
/**
* Called when action should be handled
*/
public void run(){
while( true ){
if (isPaused)
continue;
doTimerStart();
switch(Stage){
case STARTING :
doStarting();
break;
case CIRCUMGYRATEING :
doCircumgyrateing();
break;
case STRETCHING :
doStretching();
break;
case BACKING :
doBacking();
break;
case CATCHING :
doBacking();
break;
case STAGEPASSING :
doStagepassing();
break;
case GAMEOVER :
doGameover();
break;
case ALLSTATESPASSED :
doGameover();
break;
}
}
}
private void doStarting(){
}
public void SubSec() {
LeftTime--;
if ( LeftTime == 0 ){
if ( AmountofMoney >= MinMoney[StageNum-1] )
if ( StageNum == MinMoney.length )
Stage = ALLSTATESPASSED;
else
Stage = STAGEPASSING;
else
Stage = GAMEOVER;
}
repaint();
}
private void doCircumgyrateing(){
removeCommand(startCmd);
addCommand(quitCmd);
addCommand(pauseCmd);
if ( hookCirState == true ){
hook.getHookSprite().nextFrame();
} else{
hook.getHookSprite().prevFrame();
}
if ( ( hook.getHookSprite().getFrame()==16 && hookCirState)
|| ( hook.getHookSprite().getFrame()==0 && (!hookCirState) ) )
hookCirState = !hookCirState;
repaint();
try{
Thread.sleep(200);
} catch ( InterruptedException e ){}
}
private void doStretching(){
hook.extReSetXY();
if ( hook.getX() > ScreenWidth || hook.getX() < 0
|| hook.getY() < 0 || hook.getY() > ScreenHeight ){
Stage = BACKING;
} else{
if(Checkcollides() == true)
Stage = CATCHING;
else{
try{
Thread.sleep(50);
} catch ( InterruptedException e ){}
repaint();
}
}
}
private void doBacking(){
hook.backReSetXY();
if ( hook.getY() < hook.INIY ){
hook.getHookSprite().setRefPixelPosition(hook.INIX, hook.INIY);
hook.setnowSpeed(hook.SPEED);
hook.getHookSprite().setVisible(true);
AmountofMoney += MoneyToAdd;
MoneyToAdd = 0;
Stage = CIRCUMGYRATEING;
} else{
try{
Thread.sleep(50);
} catch ( InterruptedException e ){}
repaint();
}
}
private void doStagepassing(){
try{
Thread.sleep(2000);
} catch ( InterruptedException e ){}
ChangeStage();
}
private void doGameover(){
removeCommand(resumeCmd);
removeCommand(pauseCmd);
removeCommand(quitCmd);
try{
Thread.sleep(2000);
} catch ( InterruptedException e ){
Stage = STARTING;
}
Stage = STARTING;
}
private boolean Checkcollides(){
for( int i = 0; i < GOLDNUM; i++ ){
if (hook.getHookSprite().collidesWith(gold[i].getTargetSprite(), true)){
gold[i].getTargetSprite().setVisible(false);
hook.getHookSprite().setVisible(false);
hook.setnowSpeed(hook.SPEED-gold[i].getSize());
MoneyToAdd = gold[i].getRelValue();
return true;
}
}
for ( int i = 0; i < STONENUM; i++ ){
if (hook.getHookSprite().collidesWith(stone[i].getTargetSprite(), true)){
stone[i].getTargetSprite().setVisible(false);
hook.getHookSprite().setVisible(false);
hook.setnowSpeed(hook.SPEED-2*stone[i].getSize());
MoneyToAdd = stone[i].getRelValue();
return true;
}
}
for( int i = 0; i < SOMETHINGNUM; i++ ){
if (hook.getHookSprite().collidesWith(somethings[i].getTargetSprite(), true)){
somethings[i].getTargetSprite().setVisible(false);
hook.getHookSprite().setVisible(false);
hook.setnowSpeed(hook.SPEED-somethings[i].getSize());
MoneyToAdd = somethings[i].getRelValue();
return true;
}
}
if ( hasDiamond ){
if ( hook.getHookSprite().collidesWith(diamond.getTargetSprite(), true) ){
diamond.getTargetSprite().setVisible(false);
hook.getHookSprite().setVisible(false);
hook.setnowSpeed(hook.SPEED-diamond.getSize());
MoneyToAdd = diamond.getRelValue();
return true;
}
}
return 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 doPauseOrResume() {
if(isPaused) {
//暂停时
//重新开始
isPaused = false;
doTimerStart();
}else {
//不是暂停时
//进行暂停
isPaused = true;
doTimerStop();
}
repaint();
}
public void commandAction(Command c, Displayable s) {
if(c == startCmd) {//Start指令
//进行游戏初始化来开始游戏
Stage = CIRCUMGYRATEING;
}else if(c == exitCmd) {//Exit指令
//调用出NumberSliderPuzzle的doExit方法来将MIDlet本身结束
goldminer.doExit();
}else if(c == pauseCmd) {//Pause指令
//交换Pause与Resume指令,调用Pause、Resume处理方法
removeCommand(pauseCmd);
addCommand(resumeCmd);
doPauseOrResume();
}else if(c == resumeCmd) {//Resume指令
//交换Resume与Pause指令,调用Pause、Resume处理方法
removeCommand(resumeCmd);
addCommand(pauseCmd);
doPauseOrResume();
}else if(c == quitCmd) {//Quit指令
//停止计时器
doTimerStop();
//删除指令
removeCommand(pauseCmd);
removeCommand(resumeCmd);
removeCommand(quitCmd);
//显示标题
Stage = STARTING;
repaint();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -