📄 hiscorescreen.java
字号:
package com.centerscore.game;
import javax.microedition.lcdui.*;
import java.util.*;
import java.io.*;
class HiScoreScreen extends Canvas implements CommandListener {
/* Start Modified 08-05-2003 for chinese support */
private static final String[] DEFAULT_HIGH_SCORE_NAMES =
{ "aaa", "bbb", "ccc", "ddd", "eee" };
private static final int[] DEFAULT_HIGH_SCORE_SCORES =
/* Start Modified 15-05-2003 0 - > 50 */
{ 4500, 2500, 1500, 500, 50 };
/* End Modified 15-05-2003 */
//{ 4500, 4000, 3500, 3000, 2500, 2000, 1500, 1000, 500, 0 };
/* End Modified 08-05-2003 */
private static final int HIGH_SCORE_MAX_NAME_LENGTH = 3;
private static final String HISCORE_ENTRY_TITLE = "High Score Entry";
private int m_peakScore;
private static boolean m_bDrawLoadingScreen;
private GameMidlet m_pMidlet;
private HiScore m_pHiScore;
private Form g_pHiScoreEntryForm;
private TextField m_pTF_NameEntry;
private Command m_cmdEnterScore;
/* Start Commented 23-04-2003 for chinese support */
/*
private static final String HISCORE_ENTRY_TEXT1_SUFFIX = "A new high score!";
private static final String HISCORE_ENTRY_NAME_FIELD = "Enter your name:";
private static final String HISCORE_ENTRY_TEXT2 = "Press DONE and wait...";
private static final String[] ARR_RANKING_STRINGS = {
"You did it! You have usurped all others to become the supreme noser!\n",
"Hi there! Welcome to the noser elite!\n" ,
"You are second only to one\n",
"You must know something\n",
"You make it look so easy!\n",
"An outstanding achievement\n",
"Quite impressive actually\n",
"An expert with a keypad\n",
"Not shabby at all!\n",
"A potential champion!\n",
"You made the top ten club\n",
};
*/
/* End Commented 23-04-2003 */
HiScoreScreen(GameMidlet midlet) {
m_pMidlet = midlet;
addCommand(m_pMidlet.m_cmdBack);
/* Start Modified 25-04-2003 for chinese support */
g_pHiScoreEntryForm = new Form(Globals.chineseString[Globals.HIS_TXT_OFFSET]);
m_pTF_NameEntry = new TextField(Globals.chineseString[Globals.HIS_TXT_OFFSET+5],
"", HIGH_SCORE_MAX_NAME_LENGTH,
TextField.ANY);
m_cmdEnterScore = new Command(Globals.chineseString[Globals.HIS_TXT_OFFSET+1],
Command.SCREEN, 10);
/* End Modified 25-04-2003 */
g_pHiScoreEntryForm.addCommand(m_cmdEnterScore);
}
void showHighScores() {
if (m_pHiScore == null) {
m_pHiScore = new HiScore();
m_pHiScore.readFile(DEFAULT_HIGH_SCORE_NAMES, DEFAULT_HIGH_SCORE_SCORES);
}
displayHighScores(-1);
}
private void displayHighScores(int highlightPosition) {
m_pTF_NameEntry.setString("");
repaint();
serviceRepaints();
}
private void setHighScoreEntry(String name) {
/* Start Commented 16-05-2003 no lowercase */
//name = name.toLowerCase();
/* End Commented 16-05-2003 */
if (m_pHiScore == null) {
m_pHiScore = new HiScore();
m_pHiScore.readFile(DEFAULT_HIGH_SCORE_NAMES, DEFAULT_HIGH_SCORE_SCORES);
}
// show new high score after we've sorted it
int highlightPos = m_pHiScore.addScore(name, m_peakScore);
m_bDrawLoadingScreen = true;
repaint();
serviceRepaints();
m_pHiScore.writeFile();
m_bDrawLoadingScreen = false;
displayHighScores(highlightPos);
setCommandListener(this);
m_pMidlet.m_pDisplay.setCurrent(this);
/* Start Addition 21-03-2003 for external events */
m_pMidlet.activeDisplay = this;
//System.out.println("activeDisplay_hiEntry"+m_pMidlet.activeDisplay);
/* End Addition 21-03-2003 */
}
void setPeakScore(int peakScore) {
m_peakScore = peakScore;
}
void enterHighScore() {
if (m_pHiScore == null) {
m_pHiScore = new HiScore();
m_pHiScore.readFile(DEFAULT_HIGH_SCORE_NAMES, DEFAULT_HIGH_SCORE_SCORES);
}
int scoreIndex = m_pHiScore.getIndex(m_peakScore);
if (scoreIndex != -1) {
// show enter score for
g_pHiScoreEntryForm.setCommandListener(this);
while (g_pHiScoreEntryForm.size() > 0) {
g_pHiScoreEntryForm.delete(0);
}
/* Start Modified 25-04-2003 for chinese support */
g_pHiScoreEntryForm.append(Globals.chineseString[Globals.HIS_TXT_OFFSET + 3]);
g_pHiScoreEntryForm.append((m_peakScore)+" \n"+Globals.chineseString[Globals.HIS_TXT_OFFSET+7+scoreIndex]);
g_pHiScoreEntryForm.append("\n"+Globals.chineseString[Globals.HIS_TXT_OFFSET+4]);
g_pHiScoreEntryForm.append(m_pTF_NameEntry);
g_pHiScoreEntryForm.append("\n"+Globals.chineseString[Globals.HIS_TXT_OFFSET+6]);
/* End Modified 25-04-2003 */
m_pMidlet.m_pDisplay.setCurrent(g_pHiScoreEntryForm);
/* Start Addition 21-03-2003 for external events */
m_pMidlet.activeDisplay = g_pHiScoreEntryForm;
//System.out.println("activeDisplay_enter_highscore"+m_pMidlet.activeDisplay);
/* End Addition 21-03-2003 */
repaint();
serviceRepaints();
} else {
// show high score form
setCommandListener(this);
m_pMidlet.m_pDisplay.setCurrent(this);
/* Start Addition 21-03-2003 for external events */
m_pMidlet.activeDisplay = this;
//System.out.println("activeDisplay_highscore_screen"+m_pMidlet.activeDisplay);
/* End Addition 21-03-2003 */
displayHighScores(-1);
}
}
public void commandAction(Command command, Displayable displayable) {
if (command == m_cmdEnterScore) {
setHighScoreEntry(m_pTF_NameEntry.getString());
} else {
m_pMidlet.commandAction(command, displayable);
}
}
protected void keyPressed(int key) {
if (!m_bDrawLoadingScreen && (getGameAction(key) == Canvas.FIRE)) {
m_pMidlet.commandAction(m_pMidlet.m_cmdBack, this);
}
}
protected void paint(Graphics g) {
if (m_bDrawLoadingScreen) {
// Draw box
g.setColor(0, 0, 255);
g.fillRect(Globals.GAMEMENU_BOX_X - 2, Globals.GAMEMENU_BOX_Y - 2, 86, 44);
g.setColor(255, 0, 0);
g.fillRect(Globals.GAMEMENU_BOX_X - 1, Globals.GAMEMENU_BOX_Y - 1, 84, 42);
g.setColor(0, 0, 0);
g.fillRect(Globals.GAMEMENU_BOX_X, Globals.GAMEMENU_BOX_Y, 82, 40);
Sprite.drawWord(g, Globals.GAMEMENU_BOX_X + 24, Globals.GAMEMENU_BOX_Y + 15, "Saving");
} else {
g.setColor(0x000000);
g.fillRect(0, 0, Globals.SCREEN_W, Globals.SCREEN_H);
/* Start Modified 25-04-2003 for chinese support */
g.setColor(250,250,4);
g.setFont(Globals.font);
g.drawString(Globals.chineseString[Globals.HIS_TXT_OFFSET+2],40,13,g.TOP | g.LEFT);
//Sprite.drawWord(g, 30, 13, hsString[2]);
Sprite.drawClipped(g, Sprite.IMG_ALL, 0, 0, Sprite.g_arr2ClipInfoStuff, 4, 1); // header+TM
Sprite.drawClipped(g, Sprite.IMG_ALL, 17, 16, Sprite.g_arr2ClipInfoStuff, 0, 1); // large qbert left
Sprite.drawClipped(g, Sprite.IMG_ALL, 95, 16, Sprite.g_arr2ClipInfoStuff, 5, 1); // large qbert right
g.setColor(0xf69435);
g.drawRect(3, 26, 121, 97);
g.setColor(0x000000);
g.drawLine(15, 26, 15 + 14, 26);
g.drawLine(92, 26, 92 + 14, 26);
int y = 33;
/* End Modified 25-04-2003 */
for (int i = 0; i < HiScore.NUM_HISCORES; i++) {
String displayLine = m_pHiScore.getName(i);
int displayScore = m_pHiScore.getScore(i);
if (displayLine == null) {
displayLine = DEFAULT_HIGH_SCORE_NAMES[i];
displayScore = 0;//DEFAULT_HIGH_SCORE_SCORES[i];
//m_pHiScore.addScore(displayLine, displayScore);
}
/* Start Modified 07-05-2003 for chinese support */
/* Start Modified 15-05-2003 for highscore font */
Sprite.renderHighScore(g, Integer.toString(i + 1), 25 - 10, y );
/* End Modified 15-05-2003 */
g.setColor(250,250,4);
g.drawString(displayLine,25 - 2,y,g.TOP|g.LEFT);
//Sprite.drawWord(g, 27, y, displayLine);
/* Start Modified 15-05-2003 for highscore font */
Sprite.renderHighScore(g, Integer.toString(displayScore), 25 + 90, y );
/* End Modified 15-05-2003 */
y += 16;
/* End Modified 07-05-2003 */
}
}
}
/* Start Modified 21-03-2003 for external events */
protected void showNotify() {
try {
repaint();
serviceRepaints();
} catch (Exception ex) {}
}
/* End Modified 21-03-2003 */
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -