📄 canvaszhu.java
字号:
g.setColor(0x640605);
g.drawRect(1, HEIGHT - 65, 50, 50);
g.setColor(0xCF6232);
g.fillRect(1, HEIGHT - 15, 45, 15);
g.setColor(0xffffff);
g.drawString(FormMenuClose, 1, HEIGHT, Graphics.LEFT
| Graphics.BOTTOM);
// 绘制移动标识
g.setColor(0xDD9205);
g.fillRect(2, HEIGHT - 31 - FormMeun_index * 15, 48, 15);
g.setColor(0xffffff);
for (int i = FormMenuObj.length - 1; i >= 0; i--) {
g.drawString(FormMenuObj[i], 5, HEIGHT - 45 + 15 * i,
Graphics.LEFT | Graphics.BOTTOM);
}
} else {
g.setColor(0x003366);
g.drawString(FormMenu, 1, HEIGHT, Graphics.LEFT | Graphics.BOTTOM);
}
}
private void paintLogo(Graphics a){
a.setColor(0);
a.fillRect(0, 0, WIDTH, HEIGHT);
a.drawImage(logo,WIDTH/2,40,Graphics.HCENTER|Graphics.TOP);
a.setColor(0xffffff);// 按钮颜色
a.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
Font.SIZE_MEDIUM));
a.drawString(OK, WIDTH, HEIGHT,// 按钮
Graphics.BOTTOM | Graphics.RIGHT);
}
private void paintNogo(Graphics a) {// Nogo绘制
a.setColor(0xF5C580);
a.fillRect(0, 0, WIDTH, HEIGHT);
a.setColor(0xFBFBC0);
// 圆的半径是 : int r = 45;
a.fillArc(WIDTH / 2 - 45, HEIGHT / 2 - 45, 2 * 45, 2 * 45, 0, 360);
a.setColor(0x666666);
a.drawArc(WIDTH / 2 - 45, HEIGHT / 2 - 45, 2 * 45, 2 * 45, 0, 360);
a.drawImage(nogo, WIDTH / 2, HEIGHT / 2 - 90 / 2,// nogo图高为90
Graphics.TOP | Graphics.HCENTER);
a.setColor(0x304660);// 按钮颜色
a.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
Font.SIZE_MEDIUM));
a.drawString(OK, WIDTH, HEIGHT,// 按钮
Graphics.BOTTOM | Graphics.RIGHT);
}
private void paintMenu(Graphics a) {// 菜单绘制
// 背景
a.setColor(0xF5C580);// 底色
a.fillRect(0, 0, WIDTH, HEIGHT);
a.drawImage(menu, 0, HEIGHT, Graphics.BOTTOM | Graphics.LEFT);
// 气球绘制
a.drawImage(qiqiu, 65, 50 + 30 * (Menu_index - 2), Graphics.TOP
| Graphics.LEFT);
// 按钮颜色
a.setColor(0xff0000);
a.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
Font.SIZE_MEDIUM));
// 按钮绘制
a.drawString(OK, WIDTH, HEIGHT, Graphics.BOTTOM | Graphics.RIGHT);
// 菜单
a.setColor(0x003366);
a.setFont(Font.getFont(Font.FACE_MONOSPACE, Font.STYLE_BOLD,
Font.SIZE_MEDIUM));
for (int i = 0; i < STRMENU.length; i++) {
a.drawString(STRMENU[i], 92, 53 + 30 * i, Graphics.TOP
| Graphics.LEFT);
}
}
private void paintStart(Graphics a) {
a.drawImage(beijing, 0, 0, Graphics.TOP | Graphics.LEFT);
a.drawImage(shi, shix, shiy, Graphics.BOTTOM | Graphics.RIGHT);
a.setColor(0xDD9205);
a.fillRect(75, 120, 90, 30);
a.setColor(0x640605);
a.drawRect(75, 120, 90, 30);
a.drawString(ALERT, WIDTH / 2, HEIGHT / 2, Graphics.HCENTER
| Graphics.BOTTOM);
// 小猪绘制
if (langfangxiang[0] == 3) {
a.drawImage(xiaozhu, langStartx, HEIGHT, Graphics.BOTTOM
| Graphics.LEFT);
}
// 狼移动绘制
paintqietu(a, langStartx, HEIGHT, tushuL, 0, langfangxiang[0]);
// 猪移动绘制
paintqietu(a, zhux, HEIGHT, tushuZ, 25, langfangxiang[0]);
}
private void paintHelpForm(Graphics a) {
// 背景色
a.setColor(0xC0C0C0);
a.fillRect(0, 0, WIDTH, HEIGHT);
// 标题
a.setColor(0x304660);
a.drawString(GAMEHELP, 3, 1, Graphics.TOP | Graphics.LEFT);
// 文本框
a.setColor(0xF1EAEA);
a.fillRect(5, 15, WIDTH - 10, HEIGHT - 30);
a.setColor(0);
a.drawRect(5, 15, WIDTH - 10, HEIGHT - 30);
// 文本内容
a.setColor(0x304660);
a.drawString(GAMEHELPTEXT, 7, 18, Graphics.TOP | Graphics.LEFT);
// 绘制图片
a.drawImage(caozuo, 25, 50, Graphics.TOP | Graphics.LEFT);
// 绘制按钮
a.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
Font.SIZE_MEDIUM));
a.drawString(BACK, WIDTH, HEIGHT,// 按钮
Graphics.BOTTOM | Graphics.RIGHT);
}
private void paintAboutForm(Graphics a) {
// 背景色
a.setColor(0xC0C0C0);
a.fillRect(0, 0, WIDTH, HEIGHT);
a.setColor(0x304660);
a.drawString(GAMEABOUT, 3, 1, Graphics.TOP | Graphics.LEFT);
// 文本框
a.setColor(0xE4E4E4);
a.fillRect(5, 15, WIDTH - 10, HEIGHT - 30);
a.setColor(0);
a.drawRect(5, 15, WIDTH - 10, HEIGHT - 30);
// 文本内容
a.setColor(0x304660);
for (int i = 0; i < GAMEABOUTTEXT.length; i++) {
a.drawString(GAMEABOUTTEXT[i], 8, 20 + 25 * i, Graphics.TOP
| Graphics.LEFT);
}
// 绘制按钮
a.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
Font.SIZE_MEDIUM));
a.drawString(BACK, WIDTH, HEIGHT,// 按钮
Graphics.BOTTOM | Graphics.RIGHT);
}
private void paintFirstForm(Graphics a) {
// 背景绘制
a.drawImage(beijing, 0, 0, Graphics.TOP | Graphics.LEFT);
// 绘制线
a.setColor(0xAC021E);
a.fillRect(ZHUX + LANG_ZHU / 2, YA_Y, 1, zhuFirstFormy - YA_Y);
// 绘制猪
a.drawImage(zhu, ZHUX, zhuFirstFormy, Graphics.BOTTOM | Graphics.LEFT);//
// 绘制得分
a.drawString(defenString, WIDTH - 2, 2, Graphics.TOP | Graphics.RIGHT);
// 绘制按钮
a.setColor(0x003366);
a.drawString(PAU, WIDTH, HEIGHT, Graphics.RIGHT | Graphics.BOTTOM);
// 石头绘制
paintFirstFormShi(a);
// 绘制箭
paintFirstFormJian(a);
// 狼绘制
paintFirstFormLang(a);
// 盾和气球绘制
paintFirstFormDun_Qiqiu(a);
// 菜单
paintFirstFormMenu(a);
}
private void paintResult(Graphics g) {
// 保存游戏得分
int defenRead = 0;
String s = "";
try {
rs = RecordStore.openRecordStore("recordlist", false);
if (rs.getNumRecords() == 2) {
s = String.valueOf(defen);
rs.addRecord(s.getBytes(), 0, s.getBytes().length);
} else {
s = new String(rs.getRecord(3));
defenRead = Integer.parseInt(s);
if (defenRead < defen) {
s = String.valueOf(defen);
rs.setRecord(3, s.getBytes(), 0, s.getBytes().length);
} else {
defen = defenRead;
}
}
s=null;
rs.closeRecordStore();
} catch (Exception e) {
}
// 绘制界面
// 背景
g.drawImage(beijing, 0, 0, Graphics.TOP | Graphics.LEFT);
g.setColor(0xF5C580);
g.fillRect(62, 100, 116, 53);
g.setColor(0);
g.drawString(DEFENHIGH + defen, 65, 102, Graphics.TOP | Graphics.LEFT);
g.setColor(0x640605);
g.drawRect(65, 120, 110, 30);
g.drawRect(62, 100, 116, 53);
g.drawString(FINALMENU, WIDTH / 2, HEIGHT / 2, Graphics.HCENTER
| Graphics.BOTTOM);
}
protected void keyPressed(int keyCode) {
int key = this.getGameAction(keyCode);
switch (index) {
case Logo:
if (key == Canvas.FIRE || keyCode == -7) {// OK键或右软件
index = Nogo;
}
break;
case Nogo:
if (key == Canvas.FIRE || keyCode == -7) {// OK键或右软件
index = Menu;
repaint();
}
break;
case Menu:
if (key == Canvas.DOWN) {// 上下方向键 选择跳转
if (Menu_index == 6) {
Menu_index = 2;
} else
Menu_index++;
repaint();
} else if (key == Canvas.UP) {
if (Menu_index == 2) {
Menu_index = 6;
} else
Menu_index--;
repaint();
}
if (key == Canvas.FIRE || keyCode == -7) {// OK键或右软件
switch (Menu_index) {
case Start:
ChuShiHua();
index = Start;
break;
case Continue:
if (jixu == 100) {
index = Continue;
}
break;
case HelpForm:
index = HelpForm;
break;
case AboutForm:
index = AboutForm;
repaint();
break;
case QuitApp:
boolrun = false;
MIDletZhu.quitApp();
break;
}
}
break;
case Start:
index = FirstForm;
langfangxiang[0] = 0;
repaint();
break;
case HelpForm:
if (key == Canvas.FIRE || keyCode == -7) {
index = Menu;
repaint();
}
break;
case AboutForm:
if (key == Canvas.FIRE || keyCode == -7) {
index = Menu;
repaint();
}
break;
case FirstForm:
if (keyControl) {
if (key == Canvas.UP) {
pressedUp = true;
} else if (key == Canvas.DOWN) {
pressedDown = true;
}
if (key == Canvas.FIRE && keyControl) {
if (!controljian) {
controljian = true;
jianArray[jiani][0]--;// 改为199,出发runjianMove()
jianArray[jiani][1] = (zhuFirstFormy - 8);
}
}
repaint();
}
if (keyCode == -6) {
if (boolrun) {
boolrun = false;
keyControl = false;
} else {
boolrun = true;
keyControl = true;
Thread thre = new Thread(this);
thre.start();
}
repaint();
}
if (!boolrun) {// Form里的菜单操作
if (key == Canvas.DOWN) {
if (FormMeun_index == 0) {
FormMeun_index = 2;
} else {
FormMeun_index--;
}
}
if (key == Canvas.UP)
if (FormMeun_index == 2) {
FormMeun_index = 0;
} else {
FormMeun_index++;
}
if (key == Canvas.FIRE) {
switch (FormMeun_index) {
case 0:
jixu = 100;
SaveGame();
System.gc();
break;
case 1:
ChuShiHua();
index = FirstForm;
boolrun = true;
keyControl = true;
Thread thre = new Thread(this);
thre.start();
System.gc();
break;
case 2:
boolrun = false;
MIDletZhu.quitApp();
break;
}
}
repaint();
}
if (keyCode == -7) {// 暂停保存
jixu = 100;
SaveGame();
index = Menu;
repaint();
System.gc();
}
break;
case Result:
if (key == Canvas.LEFT) {
ChuShiHua();
index = FirstForm;
repaint();
}
if (key == Canvas.RIGHT) {
ChuShiHua();
index = Menu;
repaint();
}
System.gc();
break;
}
}
protected void keyReleased(int keyCode) {
int key = this.getGameAction(keyCode);
if (key == Canvas.UP) {
pressedUp = false;
} else if (key == Canvas.DOWN) {
pressedDown = false;
}
}
public void run() {
while (boolrun) {
try {
if (rt.freeMemory() < 50) {
System.gc();
}
switch (index) {
case Nogo:
if(logo!=null){
logo=null;
System.gc();
}
if(nogo==null){
nogo = Image.createImage("/zhu/res/nogo.png");
repaint();
}
break;
case Menu:
if (nogo != null) {
nogo = null;
System.gc();
}
if (beijing != null) {
beijing = null;
}
if (caozuo != null) {
caozuo = null;
System.gc();
}
break;
case Start:
if (beijing == null) {
beijing = Image.createImage("/zhu/res/beijing.png");
}
/** 动化中狼和猪走动切图频率 */
runpinlv();
/** 动化中狼和猪的移动 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -