?? score.java
字號:
/*
* @(#)Score.java 1.0 04/07/01 @(#)
*
* Copyright 2004 NTT DoCoMo, Inc. All rights reserved.
*/
import java.io.InputStream;
import java.io.OutputStream;
import javax.microedition.io.Connector;
/**
* Score<BR>
* The class which manages the current score and the hi-score.
* <p>
* @version 1.0
* </p>
*/
public class Score {
/** Point */
private static final int BASE_POINT = 50;
/** Score */
private int score;
/** Hi-Score */
private int hi_score;
/** Ranking */
private int[] scoreRanking;
/** Preservation number of cases */
public static final int COUNT_SCORE_RANKING = 5;
/** Now ranking */
private int ranking;
/** Existence of updating */
private boolean rankUp;
/**
* Constructor.
*/
public Score() {
reset();
hi_score = 0;
scoreRanking = new int[COUNT_SCORE_RANKING];
for (int i = 0; i < COUNT_SCORE_RANKING; i++) {
scoreRanking[i] = 0;
}
load();
}
/**
* Initialization
*/
public void reset() {
score = 0;
ranking = COUNT_SCORE_RANKING - 1;
rankUp = false;
}
/**
* Adds <code>BASE_POINT</code> to the score.
*/
public void add() {
add(BASE_POINT);
}
/**
* Adds <code>_point</code> to the score.
* @param _point The value to add
*/
public void add(int _point) {
score += _point;
if (score > scoreRanking[ranking]) {
for (int i = 0; i < COUNT_SCORE_RANKING; i++) {
if (scoreRanking[i] < score) {
ranking = i;
rankUp = true;
break;
}
}
if (score > hi_score) {
hi_score = score;
}
}
}
/**
* Acquires current score.
* @return Score
*/
public int getScore() {
return score;
}
/**
* Aquires Hi-Score.
* @return Hi-Score
*/
public int getHighScore() {
return hi_score;
}
/**
* Reads Hi-Score saved on the scratchpad.
*/
public void load() {
InputStream in = null;
try {
in = Connector.openInputStream("scratchpad:///0");
for (int i = 0; i < COUNT_SCORE_RANKING; i++) {
scoreRanking[i] = in.read() << 24;
scoreRanking[i] |= (in.read() << 16);
scoreRanking[i] |= (in.read() << 8);
scoreRanking[i] |= in.read();
}
} catch (Exception e) {
for (int i = 0; i < COUNT_SCORE_RANKING; i++) {
scoreRanking[i] = 0;
}
} finally {
try {
if (null != in) {
in.close();
}
} catch (Exception e) {
// NOP
}
hi_score = scoreRanking[0];
}
}
/**
* Writes down Hi-Score on a scratchpad.
*/
public void save() {
OutputStream out = null;
try {
out = Connector.openOutputStream("scratchpad:///0");
for (int i = 0; i < COUNT_SCORE_RANKING; i++) {
if (score > scoreRanking[i]) {
for (int j = COUNT_SCORE_RANKING -2; j >= i; j--) {
scoreRanking[j+1] = scoreRanking[j];
}
scoreRanking[i] = score;
score = 0;
}
out.write((scoreRanking[i] >>> 24) & 0xff);
out.write((scoreRanking[i] >>> 16) & 0xff);
out.write((scoreRanking[i] >>> 8) & 0xff);
out.write(scoreRanking[i] & 0xff);
}
} catch (Exception e) {
} finally {
try {
if (null != out) {
out.close();
}
} catch (Exception e) {
// NOP
}
}
}
/**
* Aquires Score ranking.
* @return Score ranking
*/
public int[] getScoreRanking() {
return scoreRanking;
}
/**
* Aquires current score rank.
* @return Current score rank
*/
public int getRanking() {
return ranking + 1;
}
/**
* Aquires updating existence.
* @return true:Updating
*/
public boolean isRankUp() {
return rankUp;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -