📄 xiyou.java
字号:
import java.io.*;
import java.util.*;
import javax.microedition.lcdui.*;
import com.nokia.mid.ui.*;
import com.nokia.mid.sound.Sound;
import javax.microedition.rms.RecordStore;
import com.nokia.mid.sound.Sound;
public class Xiyou
extends FullCanvas
implements Runnable
{
public Xiyou()
{
}
public static boolean s_isRunning = true;
public static boolean s_pauseRunning = false;
public static long s_ctrRunning = 0;
private static final int INTERVAL = 80;
private static final int INTERVAL_MENU = 100;
private static final int INTERVAL_TRAILER = 80;
public void run()
{
long tick;
while (s_isRunning)
{
//System.gc();
if (s_pauseRunning)
{
Thread.yield();
continue;
}
tick = System.currentTimeMillis() + (s_gameStatus == DGameStatus.GS_PRELUDE || s_gameStatus == DGameStatus.GS_MAIN_MENU ? INTERVAL_TRAILER : INTERVAL);
repaint();
serviceRepaints();
while (System.currentTimeMillis() < tick)
Thread.yield();
s_ctrRunning++;
}
HappyTreeFriends.s_midlet.destroyApp(true);
HappyTreeFriends.s_midlet = null;
}
public static void Quit()
{
s_isRunning = false;
}
public static Graphics s_g;
public static int s_gameStatus = DGameStatus.GS_LOGO;
public static int s_ctrGameStatus;
public static void SetGameStatus(int newGameStatus)
{
s_gameStatus = newGameStatus;
s_ctrGameStatus = 0;
s_selectedIndex = 0;
}
public static boolean s_isPause = false;
// Temp for demo.
public static int s_section = 0;
public static Image s_imgSplash;
public static Image s_imgPressAnyKey;
//for enter name
public static final int SHOW_HIGH_SCORE_ZHEN = 30;
public static final int PAUSE_MENU_Y = 10;
public static final int INGAME_HIGHSCORE_Y = 5;
//splash
public static final int SPLASH_OFFSET = 0;
public static final int MS_NAME_OFFSET_Y = 0;
//for splash loading
public static final int SPLASH_LOADING_WIDTH = PINGMUDDD.sssCHUANNN_WIDTH * 3 / 5;
protected void paint(Graphics g)
{
try
{
s_g = g;
shenJIIIIIIIKeyBegin();
switch (s_gameStatus)
{
case DGameStatus.GS_LOGO:
s_imgFont[0] = Image.createImage("/font_14.png");
LoadStrings(DWorld.STR_BLOCK_ID_COMMON);
SetGameStatus(DGameStatus.GS_SOUND_OPTION);
break;
case DGameStatus.GS_SOUND_OPTION:
FILLSCREEN(COLOR_BLUE_WALL);
drawImageString(s_g, GetString(DWorld.STR_ID_SOUND),
PINGMUDDD.sssCHUANNN_WIDTH >> 1, PINGMUDDD.sssCHUANNN_HEIGHT - 20 >> 1 , FONT_HUGE, IMG_FONT_CENTER,
0);
drawImageString(s_g, GetString(DWorld.STR_ID_ON),
PINGMUDDD.sssCHUANNN_WIDTH - 5, PINGMUDDD.sssCHUANNN_HEIGHT - CHAR_H[0] - 1 , FONT_HUGE, IMG_FONT_RIGHT,
0);
drawImageString(s_g, GetString(DWorld.STR_ID_OFF),
5, PINGMUDDD.sssCHUANNN_HEIGHT - CHAR_H[0] - 1 , FONT_HUGE, IMG_FONT_LEFT,
0);
if (IsKeyPressed(GK_SOFT_LEFT) )
{
s_soundOn = false;
SetGameStatus(DGameStatus.GS_SPLASH);
}
else if (IsKeyPressed(GK_A | GK_SOFT_RIGHT) )
{
s_soundOn = true;
SetGameStatus(DGameStatus.GS_SPLASH);
}
break;
case DGameStatus.GS_SPLASH:
FILLSCREEN(0XFFFFFF);
if(s_ctrGameStatus % SPLASH_DURATION == 1)
{
s_splash = Image.createImage("/splash" + (s_ctrGameStatus / SPLASH_DURATION + 1) + ".png");
s_g.setClip(0 , 0 , PINGMUDDD.PINGMUKUAN, PINGMUDDD.PINGMUGAO);
s_g.drawImage(s_splash , PINGMUDDD.PINGMUKUAN >> 1 , PINGMUDDD.PINGMUGAO - SPLASH_OFFSET>> 1 , Graphics.VCENTER | Graphics.HCENTER);
}
else if(s_ctrGameStatus == 3 * SPLASH_DURATION)
{
SetGameStatus(DGameStatus.GS_LOAD_MENU_RES);
s_splash = Image.createImage("/htflogo.png");
}
else
{
s_g.setClip(0 , 0 , PINGMUDDD.PINGMUKUAN, PINGMUDDD.PINGMUGAO);
s_g.drawImage(s_splash , PINGMUDDD.PINGMUKUAN >> 1 , PINGMUDDD.PINGMUGAO - SPLASH_OFFSET>> 1 , Graphics.VCENTER | Graphics.HCENTER);
}
break;
case DGameStatus.GS_END_GAME:
FILLSCREEN(COLOR_BLUE_WALL);
drawStringLines(GetString(DWorld.STR_ID_CONGRATUNATIONS) , PINGMUDDD.sssCHUANNN_WIDTH >> 1 , PINGMUDDD.sssCHUANNN_HEIGHT - 30 >> 1 , CHAR_H[FONT_HUGE] + 3 , IMAGE_STR , IMG_FONT_CENTER);
DrawTxtButton();
if(IsKeyPressed(GK_SOFT_RIGHT |GK_A) )
{
Jiaose.InitPlayAgain();
SetGameStatus(DGameStatus.GS_LOAD_MENU_RES);
}
break;
case DGameStatus.GS_LOAD_GAME_RES:
DrawResLoad(LOADING_GAME_RES_DURANTION);
InitializeActionPhase();
break;
case DGameStatus.GS_LOAD_MENU_RES:
if(s_isFirstRun)
{
FILLSCREEN(0XFFFFFF);
s_g.setClip(0 , 0 , PINGMUDDD.PINGMUKUAN, PINGMUDDD.PINGMUGAO);
s_g.drawImage(s_splash , PINGMUDDD.PINGMUKUAN >> 1 , PINGMUDDD.PINGMUGAO - 10>> 1 , Graphics.VCENTER | Graphics.HCENTER);
s_g.setColor(0x0);
s_g.fillRect(PINGMUDDD.PINGMUKUAN - SPLASH_LOADING_WIDTH >> 1, PINGMUDDD.PINGMUGAO - 10, SPLASH_LOADING_WIDTH, 6);
s_g.setColor(COLOR_YELLOW_BG);
s_g.fillRect(PINGMUDDD.PINGMUKUAN - SPLASH_LOADING_WIDTH >> 1, PINGMUDDD.PINGMUGAO - 10, s_ctrGameStatus * SPLASH_LOADING_WIDTH / LOADING_MENU_RES_DURANTION, 6);
s_g.setColor(COLOR_BLUE_WALL);
s_g.drawRect(PINGMUDDD.PINGMUKUAN - SPLASH_LOADING_WIDTH >> 1, PINGMUDDD.PINGMUGAO - 10, SPLASH_LOADING_WIDTH, 6);
}
else
DrawResLoad(LOADING_MENU_RES_DURANTION);
InitialMenu();
break;
case DGameStatus.GS_MAIN_MENU:
DrawMenu();
//SetGameStatus(DGameStatus.GS_ACTION);
break;
case DGameStatus.GS_ACTION:
if (IsKeyPressed(Xiyou.GK_SOFT_RIGHT))
{
s_isPause = !s_isPause;
}
if (s_isPause)
{
FILLSCREEN(COLOR_BLUE_WALL);
changeSelect(3);
s_g.setColor(COLOR_YELLOW_BG);
s_g.setClip(0,0,PINGMUDDD.sssCHUANNN_WIDTH , PINGMUDDD.sssCHUANNN_HEIGHT);
s_g.fillRoundRect( PINGMUDDD.sssCHUANNN_WIDTH - GS_PAUSE_YELLOW_BG_W >> 1 , PAUSE_MENU_Y - 3, GS_PAUSE_YELLOW_BG_W, GS_PAUSE_YELLOW_BG_H, MS_OPTION_BG_ARC_W, MS_OPTION_BG_ARC_W);
s_g.setColor(COLOR_BLUE_WALL);
s_g.setClip(0,0,PINGMUDDD.sssCHUANNN_WIDTH , PINGMUDDD.sssCHUANNN_HEIGHT);
s_g.fillRoundRect( PINGMUDDD.sssCHUANNN_WIDTH - GS_PAUSE_BLUE_BG_W >> 1 , PAUSE_MENU_Y, GS_PAUSE_BLUE_BG_W, GS_PAUSE_BLUE_BG_H, MS_OPTION_BG_ARC_W, MS_OPTION_BG_ARC_W);
drawImageString(s_g, GetString(DWorld.STR_ID_RESUME),
PINGMUDDD.sssCHUANNN_WIDTH >> 1, PAUSE_MENU_Y + GS_PAUSE_WORD_OFFSET_Y, FONT_HUGE, IMG_FONT_CENTER,
s_selectedIndex == 0 ? 0 : 1);
drawImageString(s_g, GetString(DWorld.STR_ID_PAUSE_1),
PINGMUDDD.sssCHUANNN_WIDTH >> 1, PAUSE_MENU_Y + GS_PAUSE_WORD_OFFSET_Y + GS_PAUSE_GAP, FONT_HUGE, IMG_FONT_CENTER,
s_selectedIndex == 1 ? 0 : 1);
drawImageString(s_g, GetString(DWorld.STR_ID_PAUSE_2),
PINGMUDDD.sssCHUANNN_WIDTH >> 1, PAUSE_MENU_Y + GS_PAUSE_WORD_OFFSET_Y + 2 * GS_PAUSE_GAP, FONT_HUGE, IMG_FONT_CENTER,
s_selectedIndex == 2 ? 0 : 1);
if (IsKeyPressed(Xiyou.GK_A))
{
if (s_selectedIndex == 0)
{
s_isPause = false;
ClearKey();
}
else if (s_selectedIndex == 1)
{
SetGameStatus(DGameStatus.GS_LOAD_MENU_RES);
}
else if (s_selectedIndex == 2)
{
Quit();
}
}
}
else
{
shenJIIIIIIIActionPhase();
DrawActionPhase();
}
break;
case DGameStatus.GS_PLAY_AGAIN:
if(s_ctrGameStatus == 1)
{
shenJIIIIIIIActionPhase();
}
FILLSCREEN(COLOR_BLUE_WALL);
changeSelect(3);
s_g.setColor(COLOR_YELLOW_BG);
s_g.setClip(0,0,PINGMUDDD.sssCHUANNN_WIDTH , PINGMUDDD.sssCHUANNN_HEIGHT);
s_g.fillRoundRect( PINGMUDDD.sssCHUANNN_WIDTH - GS_PAUSE_YELLOW_BG_W >> 1 , PAUSE_MENU_Y - 3, GS_PAUSE_YELLOW_BG_W, GS_PAUSE_YELLOW_BG_H, MS_OPTION_BG_ARC_W, MS_OPTION_BG_ARC_W);
s_g.setColor(COLOR_BLUE_WALL);
s_g.setClip(0,0,PINGMUDDD.sssCHUANNN_WIDTH , PINGMUDDD.sssCHUANNN_HEIGHT);
s_g.fillRoundRect( PINGMUDDD.sssCHUANNN_WIDTH - GS_PAUSE_BLUE_BG_W >> 1 , PAUSE_MENU_Y, GS_PAUSE_BLUE_BG_W, GS_PAUSE_BLUE_BG_H, MS_OPTION_BG_ARC_W, MS_OPTION_BG_ARC_W);
drawImageString(s_g, GetString(DWorld.STR_ID_PAUSE_0),
PINGMUDDD.sssCHUANNN_WIDTH >> 1, PAUSE_MENU_Y + GS_PAUSE_WORD_OFFSET_Y, FONT_HUGE, IMG_FONT_CENTER,
s_selectedIndex == 0 ? 0 : 1);
drawImageString(s_g, GetString(DWorld.STR_ID_PAUSE_1),
PINGMUDDD.sssCHUANNN_WIDTH >> 1, PAUSE_MENU_Y + GS_PAUSE_WORD_OFFSET_Y + GS_PAUSE_GAP, FONT_HUGE, IMG_FONT_CENTER,
s_selectedIndex == 1 ? 0 : 1);
drawImageString(s_g, GetString(DWorld.STR_ID_PAUSE_2),
PINGMUDDD.sssCHUANNN_WIDTH >> 1, PAUSE_MENU_Y + GS_PAUSE_WORD_OFFSET_Y + 2 * GS_PAUSE_GAP, FONT_HUGE, IMG_FONT_CENTER,
s_selectedIndex == 2 ? 0 : 1);
DrawButtons(false ,false);
if (IsKeyPressed(GK_A | GK_SOFT_RIGHT))
{
if (s_selectedIndex == 0)
{
SetGameStatus(DGameStatus.GS_ACTION);
Jiaose.PlayAgainInit();
Jiaose.s_gameOver = false;
ClearKey();
}
else if (s_selectedIndex == 1)
SetGameStatus(DGameStatus.GS_LOAD_MENU_RES);
else if (s_selectedIndex == 2)
Quit();
}
break;
case DGameStatus.GS_ENTER_NAME:
limitCamera();
FILLSCREEN(COLOR_BLUE_WALL);
//FILLSCREEN(COLOR_YELLOW_BG);
if(s_ctrGameStatus < SHOW_HIGH_SCORE_ZHEN)
{
drawStringLines(GetString(DWorld.STR_ID_GOTHIGHSCORE), PINGMUDDD.sssCHUANNN_WIDTH >> 1, INGAME_HIGHSCORE_Y + 7,CHAR_H[FONT_MINI] + 3 , IMAGE_STR , IMG_FONT_CENTER);
if(IsAnyKeyPressed())s_ctrGameStatus = SHOW_HIGH_SCORE_ZHEN;
break;
}
s_g.setColor(COLOR_YELLOW_BG);
s_g.setClip(0,0,PINGMUDDD.sssCHUANNN_WIDTH , PINGMUDDD.sssCHUANNN_HEIGHT);
s_g.fillRoundRect( MS_OPTION_BG_X , INGAME_HIGHSCORE_Y, MS_OPTION_BG_W, MS_OPTION_BG_H, MS_OPTION_BG_ARC_W, MS_OPTION_BG_ARC_W);
for(int i = 0 ; i < 28 ; i++)
{
if(i == 26)
{
DrawArrow(MS_CHAR_OFFSET_X + (i % MS_CHAR_NUM_LINE) * MS_CHAR_STEP - 7, INGAME_HIGHSCORE_Y + MS_CHAR_OFFSET_Y + (i / MS_CHAR_NUM_LINE) * MS_CHAR_STEP , ARROW_TO_LEFT , false);
continue;
}
if(i == 27)
{
DrawArrow(MS_CHAR_OFFSET_X + (i % MS_CHAR_NUM_LINE) * MS_CHAR_STEP - 7, INGAME_HIGHSCORE_Y + MS_CHAR_OFFSET_Y + (i / MS_CHAR_NUM_LINE) * MS_CHAR_STEP , ARROW_CONFIRM , false);
break;
}
drawImageString(s_g, "" +(char) ('A' + i),
MS_CHAR_OFFSET_X + (i % MS_CHAR_NUM_LINE) * MS_CHAR_STEP, INGAME_HIGHSCORE_Y + MS_CHAR_OFFSET_Y + (i / MS_CHAR_NUM_LINE) * MS_CHAR_STEP, FONT_MEDIUM, IMG_FONT_CENTER,
1);
}
if(s_namePos != 0 && s_name != null)
{
String temp = new String(s_name , 0 , s_namePos);
drawImageString(s_g, temp,
MS_CHAR_OFFSET_X , INGAME_HIGHSCORE_Y + MS_CHAR_OFFSET_Y + 4* MS_CHAR_STEP + MS_NAME_OFFSET_Y, FONT_MEDIUM, IMG_FONT_LEFT,
1);
}
//indicator
DrawArrow(s_enterNameX - 7 , s_enterNameY , ARROW_INDICATOR , false);
//s_g.setClip(s_enterNameX - 7 , s_enterNameY , 13, 13);
// s_g.drawImage(s_menuArrow , s_enterNameX - 32 - 7, s_enterNameY - 31 , 0);
MoveIndicator(MS_CHAR_OFFSET_X , INGAME_HIGHSCORE_Y + MS_CHAR_OFFSET_Y , (MS_CHAR_NUM_LINE - 1) * MS_CHAR_STEP , MS_CHAR_STEP * 3);
DrawButtons(false ,false);
if (IsKeyPressed(GK_A | GK_SOFT_RIGHT) )
{
int charoffset = CalChar(s_enterNameX , s_enterNameY , INGAME_HIGHSCORE_Y + MS_CHAR_OFFSET_Y);
if(charoffset != NO_CHAR)
{
if (charoffset == 27)
{
String tmp;
if(s_namePos != 0)
{
tmp = new String(s_name, 0, s_namePos);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -