menucanvas.java
来自「手机射击游戏源代码,nokia s60模拟器开发包,eclipse工具开发.不可」· Java 代码 · 共 527 行
JAVA
527 行
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 + =
减小字号Ctrl + -
显示快捷键?