?? menucanvas.java
字號:
package src;
import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.media.MediaException;
import javax.microedition.rms.RecordStore;
import com.nokia.mid.ui.FullCanvas;
public class MenuCanvas extends FullCanvas implements Runnable {
//public class MenuCanvas extends Canvas implements Runnable {
// Graphics g;
GameCanvas gamecanvas;
cirsis cs;
SoundManager sound;
Sprite s, ok;
Thread t;
int count, curret, ox, oye, mod, hiScores[],music[], x[];
boolean contiue, newgame, ismenu, iscredite, ishelp, isoption, isscores,
showImgs[], running;
Image img[];
static boolean onsound = true;
String[] imgname = { "logo1", "logo2", "beijing", "anjian", "music" };
String[] creditestr = { "游戲運營商:", "北京陽光加信軟件技術有限公司",
"Raymobile Software Inc.", "vmsp@raymobile.com", "010-51778844",
"www.raymobile.com", "", "游戲開發商:", "大連游戲工廠-火蟻工作室",
"zhangm@gamefactory", "0411-85875111-8007 8027", "", "項目組成員:",
"項目經理:張牧", "策劃:趙少培", "美術:趙少培", "主程序:于銳", "程序:王志強 趙勇哲 譚默",
"美術指導:張牧", "程序指導:王浩", "策劃指導:黃作秋" };
String[] helpstr = { "1 鍵:手雷", "2 鍵:向上舉槍", "3 鍵:跳", "4 鍵:向后", "5 鍵:開火/確認",
"6 鍵:向前", "8 鍵:蹲", "左軟鍵:菜單", "右軟鍵:菜單", "", "故事背景:",
" 公元2160年,智能機器人", "已經普及全世界,他們能幫助", "人類完成日常的一切工作。它",
"們是通過一臺中樞服務器控制。", "但是有一天這臺巨大的電腦不", "知道為什么感染了病毒,它把",
"機器人的行為全都改變了,這", "些機器人都失去了控制。它們", "殺死了發明者,跑到街道上為", "非作歹,見人就殺。這種病毒",
"綿延的很快,不到一個小時的", "時間全紐約州的機器人都感染", "了這種病毒。Alex家就有這機",
"器人,機器人殺死他的妻子和", "兒女跑了出去。Alex萬分悲痛", ",他發誓要為家人報仇。Alex",
"沖向了控制機器人的主機房,", "破壞了主機。最后終于發現原", "來病毒是外星人向地球投放的,",
"不管怎樣,地球終于恢復了平", "靜!" };
public MenuCanvas(cirsis cs) {
this.cs = cs;
gamecanvas = new GameCanvas(cs, this);
showImgs = new boolean[3];
count = 0;
curret = 0;
mod = 1;
contiue = false;
newgame = true;
running = true;
ismenu = true;
iscredite = false;
ishelp = false;
isoption = false;
isscores = false;
img = new Image[5];
try {
for (int i = 0; i < 5; i++) {
img[i] = Image.createImage("/res/" + imgname[i] + ".png");
}
} catch (IOException e2) {
e2.printStackTrace();
}
hiScores = new int[5];
music=new int[1];
try {
System.out.println("11");
hiScores = readHiscores("h",0,5);
System.out.println("22");
music=readHiscores("m",1,1);
System.out.println("33");
} catch (Exception e) {
}
if (music[0]-1==0)ox=0;
if (music[0]-1==1)ox=1;
// ox = 0;
ok = new Sprite(img[4], 26, 13);
sound = new SoundManager();
s = new Sprite(img[3], 44, 13);
doThreadStart();
}
protected void paint(Graphics g) {
g.setColor(255, 255, 255);
g.fillRect(0, 0, getWidth(), getHeight());
drawImg(showImgs[0], img[0], 25, 50, g); //logo1
drawImg(showImgs[1], img[1], 35, 50, g); //logo2
drawImg(showImgs[2], img[2], 0, 0, g); //beijing
if (ismenu)
paintMenu(g);
if (iscredite)
paintCredite(g);
if (ishelp)
paintHelp(g);
if (isoption)
paintOptions(g);
if (isscores)
paintScores(g);
}
void paintMenu(Graphics g) {
if (showImgs[2]) {
if (newgame) {
for (int i = 0; i < 6; i++) {
drawAnjian(g, i, 60, 50 + i * 25, i * 2);
}
} else {
drawAnjian(g, 0, 60, 50, 12);
for (int i = 1; i < 6; i++) {
drawAnjian(g, i, 60, 50 + i * 25, i * 2);
}
}
}
}
void drawImg(boolean a, Image img, int d, int b, Graphics g) {
if (a)
g.drawImage(img, d, b, 0);
}
void drawAnjian(Graphics g, int a, int px, int py, int frame) {
if (curret == a) {
s.setFrame(frame);
s.setPosition(px, py);
s.paint(g);
} else {
s.setFrame(frame + 1);
s.setPosition(px, py);
s.paint(g);
}
}
public void paintCredite(Graphics g) {
g.setColor(255, 255, 255);
g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD,
Font.SIZE_SMALL));
k++;
for (int i = 0; i < creditestr.length; i++) {
if (200 + i * 15 - k > 50)
g.drawString(creditestr[i], 5, 200 + i * 15 - k, 0);
}
}
int j = 0;
public void paintHelp(Graphics g) {
g.setColor(255, 255, 255);
g.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD,
Font.SIZE_SMALL));
j++;
for (int i = 0; i < helpstr.length; i++) {
if (200 + i * 15 - j > 50)
g.drawString(helpstr[i], 10, 200 + i * 15 - j, 0);
}
}
public void paintOptions(Graphics g) {
ok.setFrame(0);
ok.setPosition(70, 60);
ok.paint(g);
switch (ox) {
case 0:
ok.setFrame(1);
ok.setPosition(76, 84);
ok.paint(g);
ok.setFrame(4);
ok.setPosition(76, 108);
ok.paint(g);
break;
case 1:
ok.setFrame(3);
ok.setPosition(76, 108);
ok.paint(g);
ok.setFrame(2);
ok.setPosition(76, 84);
ok.paint(g);
break;
}
}
public void paintScores(Graphics g) {
g.setColor(255, 255, 255);
for (int i = 0; i < 5; i++) {
g.drawString(Integer.toString(hiScores[i]), 80, 90 + (i * 15), 0);
}
}
void logoKeyPressed(int keycode){
if (showImgs[0]) {
showImgs[0] = false;
showImgs[1] = true;
return;
}
if (showImgs[1]) {
showImgs[1] = false;
showImgs[2] = true;
return;
}
}
protected void optionsKeyPressed(int keycode) {
switch (keycode) {
case -1:
playmidi(sound.menuPlayer);
ox = 0;
repaint();
break;
case -5:
// mod++;
switch (ox) {
case 0:
// SoundManager.playBackGroundMid();
music[0]=1;
onsound = true;
writeScores("m",0,1,music[0]);
break;
case 1:
SoundManager.closeSound();
music[0]=2;
onsound = false;
writeScores("m",0,1,music[0]);
break;
}
ismenu = true;
isoption = false;
break;
case -2:
playmidi(sound.menuPlayer);
ox = 1;
repaint();
break;
}
}
void helpKeyPressed(int keycode) {
switch (keycode) {
case -1:
break;
case -5:
mod++;
ismenu = true;
ishelp = false;
j = 0;
break;
case -2:
break;
}
}
int k = 0;
void crediteKeyPressed(int keycode) {
switch (keycode) {
case -1:
break;
case -5:
mod++;
ismenu = true;
iscredite = false;
k = 0;
break;
case -2:
break;
}
}
/** 確認 * */
void test(int keycode) {
if (showImgs[2]) {
switch (curret) {
case 0:
if (newgame) {
// gamecanvas = null;
// System.gc();
// gamecanvas = new GameCanvas(cs, this);
cs.display.setCurrent(gamecanvas);
gamecanvas.running = true;
contiue = true;
gamecanvas.doThreadStart();
running = false;
img[0] = null;
img[1] = null;
newgame = false;
j = 0;
k = 0;
} else {
if (contiue) {
gamecanvas.running = true;
gamecanvas.doThreadStart();
cs.display.setCurrent(gamecanvas);
}
}
break;
case 2:
// cs.display.setCurrent(scores);
mod++;
if (mod % 2 == 0) {
isscores = true;
ismenu = false;
} else {
isscores = false;
ismenu = true;
}
break;
case 3:
isoption = true;
ismenu = false;
break;
case 4:
mod++;
if (mod % 2 == 0) {
iscredite = true;
ismenu = false;
} else {
iscredite = false;
ismenu = true;
}
break;
case 1:
mod++;
if (mod % 2 == 0) {
ishelp = true;
ismenu = false;
} else {
ishelp = false;
ismenu = true;
}
break;
case 5:
cs.exit();
break;
default:
break;
}
}
}
public void keyPressed(int keycode) {
if (isoption) {
optionsKeyPressed(keycode);
return;
}
if (ishelp) {
helpKeyPressed(keycode);
return;
}
if (iscredite) {
crediteKeyPressed(keycode);
return;
}
if(showImgs[0]||showImgs[1]){
logoKeyPressed(keycode);
return;
}
switch (keycode) {
case -1:
playmidi(sound.menuPlayer);
curret--;
if (curret < 0)
curret = 5;
break;
case -5:
test(keycode);
break;
case 53:
test(keycode);
break;
case -2:
playmidi(sound.menuPlayer);
curret++;
if (curret > 5)
curret = 0;
break;
case -11:
cs.exit();
break;
default: //按任意鍵跳過logo
if (showImgs[0]) {
showImgs[0] = false;
showImgs[1] = true;
return;
}
if (showImgs[1]) {
showImgs[1] = false;
showImgs[2] = true;
}
break;
}
}
void playmidi(javax.microedition.media.Player player) {
try {
player.start();
} catch (MediaException e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
}
}
public void run() {
while (true) {
if (count < 81)
count++;
if (count == 5)
showImgs[0] = true;
if (count == 40) {
showImgs[0] = false;
showImgs[1] = true;
}
if (count == 80) {
showImgs[1] = false;
showImgs[2] = true;
}
try {
Thread.sleep(40);
} catch (InterruptedException e) {
e.printStackTrace();
}
repaint();
}
}
public void writeScores(String id,int imin,int imax,int gg) {
try {
RecordStore.deleteRecordStore(id);
} catch (Exception e) {
}
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(id, true);
} catch (Exception e) {
}
for (int i = imin; i < imax; i++) {
byte[] recoredDate = Integer.toString(gg).getBytes();
try {
rs.addRecord(recoredDate, 0, recoredDate.length);
} catch (Exception e) {
}
}
try {
rs.closeRecordStore();
} catch (Exception e) {
}
}
public void updateHiscores(int s) {
int i;
for (i = 0; i < 5; i++) {
if (s > hiScores[i])
break;
}
if (i < 5) {
for (int j = 4; j > i; j--) {
hiScores[j] = hiScores[j - 1];
}
hiScores[i] = s;
}
}
/** read高分和option **/
public int[] readHiscores(String s,int imin,int imax) {
int ss[]=new int[imax];
RecordStore rs = null;
try {
rs = RecordStore.openRecordStore(s, false);
} catch (Exception e) {
}
if (rs != null) {
try {
int len;
byte[] recordDate = new byte[8];
for (int i = imin; i <= imax; i++) {
if (rs.getRecordSize(i) > recordDate.length) {
recordDate = new byte[rs.getRecordSize(i)];
}
len = rs.getRecord(i, recordDate, 0);
ss[i-1] = (Integer.parseInt(new String(recordDate,
0, len)));
}
} catch (Exception e) {
System.out.println("readHiscores error");
e.printStackTrace();
}
try {
rs.closeRecordStore();
} catch (Exception e) {
}
} else {
for (int i = imin; i < imax; i++){
if (s=="m"){
ss[i-1] = 0;
}
if (s=="h") {
ss[i]=0;
}
}
}
return ss;
}
/** 啟動描繪線程的方法 */
void doThreadStart() {
t = new Thread(this);
t.start();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -