📄 gamecanvas.java
字号:
import com.nokia.mid.ui.FullCanvas;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import java.util.Random;
/**
* <p>Title: </p>北京浮生记
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class GameCanvas
extends FullCanvas
implements Runnable {
Display display;
Thread threadMan;
Font word; //构造一个字体对象
int wordLenght; //一个汉字的长度
int rand; //随即广播的index
public GameCanvas(Display display) {
this.display = display;
try {
Base.image004 = Image.createImage("/res/pic004.png");
Base.image006 = Image.createImage("/res/pic006.png");
Base.image008 = Image.createImage("/res/pic008.png");
}
catch (Exception e) {}
word = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_ITALIC, Font.SIZE_SMALL);
wordLenght = word.charWidth('中');
rand = Broadcast.randIndex(); //对广播字符串ID的初始化
threadMan = new Thread(this);
threadMan.start();
randomPrice();
}
protected void paint(Graphics g) {
//清理屏幕
g.setColor(0xffffff);
g.fillRect(0, 0, 128, 128);
g.setColor(0, 0, 0);
//设置字体
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_ITALIC, Font.SIZE_SMALL));
//对绘制的内容进行选择
switch (Base.menuList) {
case 0: //绘制游戏画面
gamePaint(g);
break;
case 1: //绘制状态界面
statusPaint(g);
break;
case 2: //绘制黑市界面
blackmarketPaint(g);
break;
case 3: //绘制银行界面
bankPaint(g);
break;
case 4: //绘制地铁界面
metroPaint(g);
break;
case 5: //绘制邮局界面
postofficePaint(g);
break;
case 6: //绘制医院界面
hospitalPaint(g);
break;
case 7: //绘制库房界面
storehousePaint(g);
break;
case 8: //绘制中介界面
intermediaryPaint(g);
break;
case 9: //绘制系统画面
systemPaint(g);
/*以下paint画面为各警告画面*/
case 10: //游戏时间达到39天的时候的提示画面
case 11: //游戏时间达到40天的时候得提示画面
case 12: //随即事件的paint(每天最多三次的绘制)
default:
}
}
//动画进程
public void run() {
while (Base.threadRunnable) {
try {
Thread.sleep(100);
}
catch (Exception e) {}
/* if (Base.index == 0) { //人物动画
Base.index = 1;
}
else {
Base.index = 0;
}*/
Broadcast.stringdx1 -= 2;
if (Broadcast.stringdx1 <= -wordLenght &&
Broadcast.index <
Broadcast.broadcast[rand].length()
) {
Broadcast.stringdx1 = 0;
Broadcast.index++;
}
else if (Broadcast.index >= Broadcast.broadcast[rand].length()) { //更换广播的文字
rand = Broadcast.randIndex();
Broadcast.stringdx1 = 128;
Broadcast.index = 0;
}
repaint();
System.gc();
}
}
protected void keyPressed(int keyCode) {
// int action = this.getGameAction(keyCode);
switch (Base.menuList) {
case 0: //游戏界面"控制方法"调用
gameControl(keyCode);
break;
case 1: //状态界面"控制方法"调用
statusControl(keyCode);
break;
case 2: //黑市界面"控制方法"调用
blackmarketControl(keyCode);
break;
case 3: //银行界面"控制方法"调用
bankControl(keyCode);
break;
case 4: //地铁界面"控制方法"调用
metroControl(keyCode);
break;
case 5: //邮局界面"控制方法"调用
postofficeControl(keyCode);
break;
case 6: //医院界面"控制方法"调用
hospitalControl(keyCode);
break;
case 7: //库房界面"控制方法"调用
storehouseControl(keyCode);
break;
case 8: //中介界面"控制方法"调用
intermediaryControl(keyCode);
break;
case 9: //系统画面"控制方法"调用
systemControl(keyCode);
break;
default:
}
repaint();
}
/*
* 各个游戏“功能界面”的绘制方法函数
* gamePaint() 游戏界面
* statusPaint() 状态界面
* blackmarketPaint() 黑市界面
* bankPaint() 银行界面
* metroPaint() 地铁界面
* postofficePaint() 邮局界面
* hospitalPaint() 医院界面
* storehousePaint() 库房界面
* intermediaryPaint() 中介界面
* systemPaint() 系统界面
*/
//gamePaint() 游戏界面
protected void gamePaint(Graphics g) {
if (Base.nDate < 40) {
g.drawImage(Base.image004, 0, 0, Graphics.TOP | Graphics.LEFT);
g.setClip(3 + Base.dx * 36, 56 + Base.dy * 17, 13, 21); //21 52
g.drawImage(Base.image008, 3 + Base.dx * 36 - 16 * Base.index,
56 + Base.dy * 17, //21 36
Graphics.TOP | Graphics.LEFT);
g.setClip(0, 0, 128, 128);
g.drawString(String.valueOf(Base.nDate) + "/40", 40, 9,
Graphics.LEFT | Graphics.TOP);
g.drawString(Base.address[Base.addressID], 80, 7,
Graphics.LEFT | Graphics.TOP);
if (Broadcast.stringdx1 > 0) {
g.drawString(Broadcast.broadcast[rand], Broadcast.stringdx1, 115,
Graphics.LEFT | Graphics.TOP);
}
else {
g.drawString(Broadcast.broadcast[rand].substring(Broadcast.index),
Broadcast.stringdx1, 115,
Graphics.LEFT | Graphics.TOP);
}
}
else if (Base.nDate >= 40) {
g.drawImage(Base.image006, 0, 0, Graphics.TOP | Graphics.LEFT);
g.drawString("40天的北京生活过去了", 10, 30, Graphics.TOP | Graphics.LEFT);
g.drawString("该回家娶媳妇了", 10, 45, Graphics.TOP | Graphics.LEFT);
g.drawString("你一共挣得", 10, 60, Graphics.TOP | Graphics.LEFT);
g.drawString( Base.countValue() + "元", 10, 75,
Graphics.TOP | Graphics.LEFT);
g.drawString("确定", 125, 125, Graphics.RIGHT | Graphics.BOTTOM);
TopScore.openRSTopAnyway("TopScore");
TopScore.saveTop();
Base.topScore=Base.countValue();
}
}
//statusPaint() 状态界面
protected void statusPaint(Graphics g) {
try {
Base.image006 = Image.createImage("/res/pic006.png");
}
catch (Exception e) {}
g.drawImage(Base.image006, 0, 0, Graphics.LEFT | Graphics.TOP);
g.drawString("状 态", 50, 8, Graphics.LEFT | Graphics.TOP);
g.drawString("日 期 :" + Base.nDate + "/40", 10, 30,
Graphics.LEFT | Graphics.TOP);
g.drawString("健 康 :" + Base.nHealth, 10, 45, Graphics.LEFT | Graphics.TOP);
g.drawString("现 金 :" + Base.lCash, 10, 60, Graphics.LEFT | Graphics.TOP);
g.drawString("存 款 :" + Base.lSave, 10, 75, Graphics.LEFT | Graphics.TOP);
g.drawString("债 务 :" + Base.lDebt, 10, 90, Graphics.LEFT | Graphics.TOP);
g.drawString("库 存 :" + Base.lGoods() + "/" + Base.lRoom, 10, 105,
Graphics.LEFT | Graphics.TOP);
Base.image006 = null;
}
//blackmarketPaint() 黑市界面
protected void blackmarketPaint(Graphics g) {
loadImage(Base.goodsItem);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_ITALIC, Font.SIZE_SMALL));
if (Base.marketStatus == 0) {
g.drawImage(Base.image007, 0, 0, Graphics.TOP | Graphics.LEFT);
switch (Base.goodsItem) {
case 0:
g.drawImage(Base.image012, 19, 11, Graphics.TOP | Graphics.LEFT);
g.drawString("盗版VCD", 58, 19, Graphics.TOP | Graphics.LEFT);
g.drawString("市场价:" + Base.market_vcd_price + " 元", 18, 64,
Graphics.TOP | Graphics.LEFT);
g.drawString("持有价:" + Base.vcd_price + " 元", 18, 82,
Graphics.TOP | Graphics.LEFT);
break;
case 1:
g.drawImage(Base.image013, 19, 11, Graphics.TOP | Graphics.LEFT);
g.drawString("走私香烟", 58, 19, Graphics.TOP | Graphics.LEFT);
g.drawString("市场价:" + Base.market_cigar_price + " 元", 18, 64,
Graphics.TOP | Graphics.LEFT);
g.drawString("持有价:" + Base.cigar_price + " 元", 18, 82,
Graphics.TOP | Graphics.LEFT);
break;
case 2:
g.drawImage(Base.image014, 19, 11, Graphics.TOP | Graphics.LEFT);
g.drawString("伪劣化妆品", 58, 19, Graphics.TOP | Graphics.LEFT);
g.drawString("市场价:" + Base.market_sk_price + " 元", 18, 64,
Graphics.TOP | Graphics.LEFT);
g.drawString("持有价:" + Base.sk_price + " 元", 18, 82,
Graphics.TOP | Graphics.LEFT);
break;
case 3:
g.drawImage(Base.image015, 19, 11, Graphics.TOP | Graphics.LEFT);
g.drawString("进口玩具", 58, 19, Graphics.TOP | Graphics.LEFT);
g.drawString("市场价:" + Base.market_toy_price + " 元", 18, 64,
Graphics.TOP | Graphics.LEFT);
g.drawString("持有价:" + Base.toy_price + " 元", 18, 82,
Graphics.TOP | Graphics.LEFT);
break;
case 4:
g.drawImage(Base.image016, 19, 11, Graphics.TOP | Graphics.LEFT);
g.drawString("假白酒", 58, 19, Graphics.TOP | Graphics.LEFT);
g.drawString("市场价:" + Base.market_wine_price + " 元", 18, 64,
Graphics.TOP | Graphics.LEFT);
g.drawString("持有价:" + Base.wine_price + " 元", 18, 82,
Graphics.TOP | Graphics.LEFT);
break;
case 5:
g.drawImage(Base.image017, 19, 11, Graphics.TOP | Graphics.LEFT);
g.drawString("水货手机", 58, 19, Graphics.TOP | Graphics.LEFT);
g.drawString("市场价:" + Base.market_phone_price + " 元", 18, 64,
Graphics.TOP | Graphics.LEFT);
g.drawString("持有价:" + Base.phone_price + " 元", 18, 82,
Graphics.TOP | Graphics.LEFT);
break;
case 6:
g.drawImage(Base.image018, 19, 11, Graphics.TOP | Graphics.LEFT);
g.drawString("上海小宝贝", 58, 19, Graphics.TOP | Graphics.LEFT);
g.drawString("市场价:" + Base.market_book_price + " 元", 18, 64,
Graphics.TOP | Graphics.LEFT);
g.drawString("持有价:" + Base.book_price + " 元", 18, 82,
Graphics.TOP | Graphics.LEFT);
break;
case 7:
g.drawImage(Base.image019, 19, 11, Graphics.TOP | Graphics.LEFT);
g.drawString("走私汽车", 58, 19, Graphics.TOP | Graphics.LEFT);
g.drawString("市场价:" + Base.market_car_price + " 元", 18, 64,
Graphics.TOP | Graphics.LEFT);
g.drawString("持有价:" + Base.car_price + " 元", 18, 82,
Graphics.TOP | Graphics.LEFT);
break;
}
g.drawString("购买", 3, 125, Graphics.BOTTOM | Graphics.LEFT);
g.drawString("出售", 125, 125, Graphics.BOTTOM | Graphics.RIGHT);
}
else if (Base.marketStatus == 1) { //交易成功提示界面
g.drawImage(Base.image006, 0, 0, Graphics.TOP | Graphics.LEFT);
g.drawString("交易成功!", 10, 40, Graphics.LEFT | Graphics.TOP);
Base.marketStatus = 0;
}
else if (Base.marketStatus == 2) {
g.drawImage(Base.image006, 0, 0, Graphics.TOP | Graphics.LEFT);
g.drawString("你没有那么多钱呀!", 10, 40, Graphics.LEFT | Graphics.TOP);
Base.marketStatus = 0;
}
Base.image007 = null; //清理内存
Base.image012 = null;
Base.image013 = null;
Base.image014 = null;
Base.image015 = null;
Base.image016 = null;
Base.image017 = null;
Base.image018 = null;
Base.image019 = null;
Base.image006 = null;
}
//bankPaint() 银行界面
protected void bankPaint(Graphics g) {
try {
Base.image006 = Image.createImage("/res/pic006.png");
Base.image011 = Image.createImage("/res/pic011.png");
}
catch (Exception e) {}
if (Base.bankStatus == 0) {
g.drawImage(Base.image011, 0, 0, Graphics.LEFT | Graphics.TOP);
g.drawString("\"爱存不存\"银行", 0, 65, Graphics.LEFT | Graphics.TOP);
g.drawString("欢迎您光临!", 30, 80, Graphics.LEFT | Graphics.TOP);
g.drawString("请选择您的业务:", 10, 95, Graphics.LEFT | Graphics.TOP);
g.drawString("存钱 ", 0, 125, Graphics.LEFT | Graphics.BOTTOM);
g.drawString("取钱 ", 128, 125, Graphics.RIGHT | Graphics.BOTTOM);
Base.image011 = null;
}
else if (Base.bankStatus == 1) {
g.drawImage(Base.image006, 0, 0, Graphics.TOP | Graphics.LEFT);
g.drawString("存款成功!", 10, 40, Graphics.LEFT | Graphics.TOP);
Base.bankStatus = 0;
}
else if (Base.bankStatus == 2) {
g.drawImage(Base.image006, 0, 0, Graphics.TOP | Graphics.LEFT);
g.drawString("你没有那么多钱呀!", 10, 40, Graphics.LEFT | Graphics.TOP);
Base.bankStatus = 0;
}
else if (Base.bankStatus == 3) {
g.drawImage(Base.image006, 0, 0, Graphics.TOP | Graphics.LEFT);
g.drawString("取款成功!", 10, 40, Graphics.LEFT | Graphics.TOP);
Base.bankStatus = 0;
}
Base.image006 = null;
Base.image011 = null;
}
//metroPaint() 地铁界面
protected void metroPaint(Graphics g) {
try {
Base.image006 = Image.createImage("/res/pic006.png");
}
catch (Exception e) {}
g.drawImage(Base.image006, 0, 0, Graphics.LEFT | Graphics.TOP);
g.drawString("地 铁", 50, 8, Graphics.LEFT | Graphics.TOP);
g.drawString(" 北京站 ", 10, 22, Graphics.LEFT | Graphics.TOP);
g.drawString(" 前 门 ", 10, 44, Graphics.LEFT | Graphics.TOP);
g.drawString(" 宣武门 ", 10, 66, Graphics.LEFT | Graphics.TOP);
g.drawString(" 复兴门 ", 10, 88, Graphics.LEFT | Graphics.TOP);
g.drawString("积水潭", 64, 22, Graphics.LEFT | Graphics.TOP);
g.drawString("雍和宫", 64, 44, Graphics.LEFT | Graphics.TOP);
g.drawString("东直门", 64, 66, Graphics.LEFT | Graphics.TOP);
g.drawString("建国门", 64, 88, Graphics.LEFT | Graphics.TOP);
g.drawRect(5 + 47 * Base.metro_dx, 23 + 22 * Base.metro_dy, 10, 10); //,
Base.image006 = null;
}
//postofficePaint() 邮局界面
protected void postofficePaint(Graphics g) {
try {
Base.image006 = Image.createImage("/res/pic006.png");
Base.image011 = Image.createImage("/res/pic011.png");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -