📄 mygamecanvas.java
字号:
drawMessage();
break;
case STATUS_LOADING_LEVEL:
drawLoadingLevel(g);
break;
case STATUS_POPMENU_CONFIRM:
lm.paint(g, 0, 0);
drawConfirmMenu(g);
break;
case STATUS_BUYING:
drawBuying(g);
break;
case STATUS_SALING:
drawSaling(g);
break;
case STATUS_FIGHTING:
drawFightScene(g);
break;
case STATUS_MAIN_MENU:
drawMainMenu(g);
break;
case STATUS_HELP:
drawHelp(g);
break;
case STATUS_ABOUT:
drawAbout(g);
break;
case STATUS_PLAYER_INFO:
drawPlayerInfo(g);
break;
case STATUS_MISSION_INFO:
drawMissonList(g);
break;
case STATUS_GAME_OVER:
drawGameOver(g);
break;
case STATUS_FIGHT_OVER:
drawFightOver(g);
break;
case STATUS_MISSION_OVER:
drawMissonOver(g);
break;
}
}
public void drawFlash() {
Graphics g = this.getGraphics();
if (ResourceLoader.flashImage != null) {
g.drawImage(ResourceLoader.flashImage, width / 2, height / 2,
Graphics.HCENTER | Graphics.VCENTER);
}
this.flushGraphics();
}
/**
* 绘制主角拥有的东西列表
*
* @param bType
* :1:武器 2:护具,3:药品 4:技能
*/
private void drawBelongs(int bType, Graphics g) {
int y1 = 10;
y1 += 36;
Vector ps = this.weaponVec;
switch (curMenuIndex) {
case 1:
ps = myPlayer.weaponVec;
break;
case 2:
ps = myPlayer.medicVec;
break;
case 3:
ps = myPlayer.jacketVec;
break;
case 4:
ps = myPlayer.skillVec;
break;
}
for (int i = 0; i < ps.size(); i++) {
RPGObject object = (RPGObject) ps.elementAt(i);
paintMenu(g, object.name, 66, y1, i == curMenuIndex2);
y1 += 18;
}
RPGObject ro = null;
if (curMenuIndex2 < ps.size()) {
ro = (RPGObject) ps.elementAt(curMenuIndex2);
}
if (ro != null) {
String allDesc = ro.description;
g.drawString(allDesc, width / 2, 208 - 15, Graphics.HCENTER
| Graphics.BOTTOM);
}
paintMenu(g, ResourceLoader.StringResource[3], 66, 193,
ps.size() == curMenuIndex2);
}
private void drawSaling(Graphics g) {
g.drawImage(ResourceLoader.menu[0], width / 2, 0, Graphics.TOP
| Graphics.HCENTER);
g.setColor(255, 255, 255);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
Font.SIZE_SMALL));
switch (this.saleType) {
//武器护具
case 1:
int y1 = 10;
g.drawImage(ResourceLoader.menu[8], width / 2, y1, Graphics.TOP
| Graphics.HCENTER);
String type = ResourceLoader.StringResource[27];
if (!isArm) {
type = ResourceLoader.StringResource[28];
}
g.drawString(type, width / 2, y1 + 1, Graphics.TOP
| Graphics.HCENTER);
y1 += 18;
g.drawString(ResourceLoader.StringResource[29] + ":"
+ myPlayer.money, width / 2, y1, Graphics.TOP
| Graphics.HCENTER);
Vector ps = myPlayer.weaponVec;
if (!isArm) {
ps = myPlayer.jacketVec;
}
y1 += 18;
//武器护具列表
for (int i = 0; i < ps.size(); i++) {
Property property = (Property) ps.elementAt(i);
paintMenu(g, property.name, width / 2, y1, i == curMenuIndex);
y1 += 18;
}
//退出按钮
paintMenu(g, ResourceLoader.StringResource[3], width / 2, y1,
curMenuIndex == ps.size());
Property curP = null;
if (curMenuIndex < ps.size()) {
curP = (Property) ps.elementAt(curMenuIndex);
}
if (curP != null) {
String allDesc = ResourceLoader.StringResource[6] + ":"
+ curP.description + " "
+ ResourceLoader.StringResource[7] + ":" + curP.price;
g.drawString(allDesc, width / 2, 208, Graphics.HCENTER
| Graphics.BOTTOM);
}
break;
case 2:
//药品
int y = 10;
g.drawString(ResourceLoader.StringResource[29] + ":"
+ myPlayer.money, width / 2, y, Graphics.TOP
| Graphics.HCENTER);
ps = myPlayer.medicVec;
y += 18;
for (int i = 0; i < ps.size(); i++) {
Property property = (Property) ps.elementAt(i);
paintMenu(g, property.name, width / 2, y, i == curMenuIndex);
y += 18;
}
paintMenu(g, ResourceLoader.StringResource[3], width / 2, y,
curMenuIndex == ps.size());
curP = null;
if (ps.size() > curMenuIndex) {
curP = (Property) ps.elementAt(curMenuIndex);
}
if (curP != null) {
String allDesc = ResourceLoader.StringResource[6] + ":"
+ curP.description + " "
+ ResourceLoader.StringResource[7] + ":" + curP.price;
g.drawString(allDesc, width / 2, 208, Graphics.HCENTER
| Graphics.BOTTOM);
}
break;
}
}
/**
*
*/
private void drawMissonList(Graphics g) {
g.drawImage(ResourceLoader.menu[0], width / 2, 0, Graphics.TOP
| Graphics.HCENTER);
g.setColor(255, 255, 255);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
Font.SIZE_LARGE));
g.drawString(ResourceLoader.StringResource[42], width / 2, 0,
Graphics.TOP | Graphics.HCENTER);
g.drawString(curLevel.missionDesc, width / 2, 40, Graphics.TOP
| Graphics.HCENTER);
}
private void drawMissonOver(Graphics g) {
g.drawImage(ResourceLoader.menu[0], width / 2, 0, Graphics.TOP
| Graphics.HCENTER);
g.setColor(255, 255, 255);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
Font.SIZE_LARGE));
g.drawString(ResourceLoader.StringResource[40], width / 2,
height / 2 - 20, Graphics.TOP | Graphics.HCENTER);
//g.drawString(""+this.killTigerCount,40,40,0);
}
private void drawFightOver(Graphics g) {
fightLayerManager = new LayerManager();
fightLayerManager.append(this.fightBackGround);
fightLayerManager.paint(g, 0, 0);
g.setColor(255, 255, 255);
g.drawImage(ResourceLoader.menu[3], width / 2, height / 2,
Graphics.HCENTER | Graphics.VCENTER);
g.drawString(ResourceLoader.StringResource[30]
+ (myPlayer.exp - this.beforeFightExp), width / 2,
height / 2 - 40, Graphics.HCENTER | Graphics.TOP);
g.drawString(ResourceLoader.StringResource[31]
+ (myPlayer.money - this.beforeFightMoney), width / 2,
height / 2 - 20, Graphics.HCENTER | Graphics.TOP);
//升级了
if (myPlayer.exp >= myPlayer.nextExp) {
g.drawString(ResourceLoader.StringResource[39], width / 2,
height / 2, Graphics.HCENTER | Graphics.TOP);
}
//学会技能
if (ranSkill != null) {
g
.drawString(ResourceLoader.StringResource[41]
+ ranSkill.name, width / 2, height / 2 + 20,
Graphics.HCENTER | Graphics.TOP);
}
}
/**
*
*/
private void drawPlayerInfo(Graphics g) {
// TODO 自动生成方法存根
g.drawImage(ResourceLoader.menu[0], 0, 0, 0);
g.setColor(255, 255, 255);
g
.drawImage(ResourceLoader.menu[8], 30, 0, Graphics.TOP
| Graphics.LEFT);
g.setClip(118, 0, 58, 52);
g.drawImage(ResourceLoader.menu[4], 118, 0, 0);
g.setClip(0, 0, width, height);
String type = type = ResourceLoader.StringResource[38];//一般
switch (curMenuIndex) {
//通常信息
case 0:
int xx = 8,
yy = 30;
int interval = 50;
g.drawString(ResourceLoader.StringResource[20], xx, yy, 0);
g.drawString(myPlayer.rank + "", xx + interval, yy, 0);
g.drawString(ResourceLoader.StringResource[21], xx, yy + 15, 0);
g.drawString(myPlayer.exp + "", xx + interval, yy + 15, 0);
g.drawString(ResourceLoader.StringResource[22], xx, yy + 30, 0);
g.drawString(myPlayer.nextExp + "", xx + interval, yy + 30, 0);
g.drawString("HP", xx, yy + 45, 0);
g.drawString(myPlayer.hp + "", xx + interval, yy + 45, 0);
g.drawString("MP", xx, yy + 60, 0);
g.drawString(myPlayer.mp + "", xx + interval, yy + 60, 0);
Property w = (Property) curLevel.properties.get(new Integer(
myPlayer.curWeaponID));
Property d = (Property) curLevel.properties.get(new Integer(
myPlayer.curDefendID));
g.drawString(ResourceLoader.StringResource[32], xx, yy + 75, 0);
g.drawString(myPlayer.attackPoint + "", xx + interval, yy + 75, 0);
g.drawString(ResourceLoader.StringResource[33], xx, yy + 90, 0);
g.drawString(myPlayer.defendPoint + "", xx + interval, yy + 90, 0);
g.drawString(ResourceLoader.StringResource[35], xx, yy + 105, 0);
g.drawString(myPlayer.money + "", xx + interval, yy + 105, 0);
g.drawString(ResourceLoader.StringResource[27], xx, yy + 120, 0);
if (w != null) {
g.drawString(w.name + "(AP:" + w.addAttackPoint + ",DP:"
+ w.addDefendPoint + ")", xx + interval, yy + 120, 0);
}
g.drawString(ResourceLoader.StringResource[28], xx, yy + 135, 0);
if (d != null) {
g.drawString(d.name + "(AP:" + d.addAttackPoint + ",DP:"
+ d.addDefendPoint + ")", xx + interval, yy + 135, 0);
}
paintMenu(g, ResourceLoader.StringResource[3], 66, 193, true);
break;
case 1:
type = ResourceLoader.StringResource[27];//武器
drawBelongs(1, g);
break;
case 2:
type = ResourceLoader.StringResource[36];//药品
drawBelongs(2, g);
break;
case 3:
type = ResourceLoader.StringResource[28];//护具
drawBelongs(3, g);
break;
case 4:
type = ResourceLoader.StringResource[37];//技能
drawBelongs(4, g);
break;
}
g.drawString(type, 63, 0, Graphics.TOP | Graphics.HCENTER);
}
private void drawLoadingLevel(Graphics g) {
g.drawImage(ResourceLoader.menu[0], width / 2, height / 2,
Graphics.HCENTER | Graphics.VCENTER);
g.setColor(255, 255, 255);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD,
Font.SIZE_LARGE));
g.drawString(ResourceLoader.StringResource[26], width / 2, 90,
Graphics.HCENTER | Graphics.TOP);
}
/**
*
*/
private void drawAbout(Graphics g) {
// TODO 自动生成方法存根
g.drawImage(ResourceLoader.menu[0], 0, 0, 0);
g.drawImage(ResourceLoader.menu[3], width / 2, 63, Graphics.HCENTER
| Graphics.TOP);
g.setColor(255, 255, 255);
g.drawString(ResourceLoader.StringResource[17], width / 2, 90,
Graphics.HCENTER | Graphics.TOP);
g.drawString(ResourceLoader.StringResource[18], width / 2, 110,
Graphics.HCENTER | Graphics.TOP);
g.drawString(ResourceLoader.StringResource[19], width / 2, 150,
Graphics.HCENTER | Graphics.TOP);
}
/**
*
*/
private void drawHelp(Graphics g) {
// TODO 自动生成方法存根
g.drawImage(ResourceLoader.menu[0], 0, 0, 0);
g.setColor(255, 255, 255);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
Font.SIZE_SMALL));
g.drawString(ResourceLoader.StringResource[16], width / 2, 10,
Graphics.HCENTER | Graphics.TOP);
g.drawString(ResourceLoader.StringResource[43], width / 2, 30,
Graphics.HCENTER | Graphics.TOP);
g.drawString(ResourceLoader.StringResource[44], width / 2, 50,
Graphics.HCENTER | Graphics.TOP);
g.drawString(ResourceLoader.StringResource[45], width / 2, 70,
Graphics.HCENTER | Graphics.TOP);
}
/**
*
*/
private void drawMainMenu(Graphics g) {
// TODO 自动生成方法存根
g.setColor(255, 255, 255);
g.drawImage(ResourceLoader.menu[0], width / 2, 0, Graphics.HCENTER
| Graphics.TOP);
g.drawImage(ResourceLoader.menu[9], width / 2, 0, Graphics.HCENTER
| Graphics.TOP);
this.paintMenu(g, ResourceLoader.StringResource[11], width / 2, 80,
curMenuIndex == 0);
if (hasStored) {
this.paintMenu(g, ResourceLoader.StringResource[12], width / 2, 96,
curMenuIndex == 1);
this.paintMenu(g, ResourceLoader.StringResource[13], width / 2,
112, curMenuIndex == 2);
this.paintMenu(g, ResourceLoader.StringResource[14], width / 2,
128, curMenuIndex == 3);
this.paintMenu(g, ResourceLoader.StringResource[15], width / 2,
144, curMenuIndex == 4);
} else {
this.paintMenu(g, ResourceLoader.StringResource[13], width / 2, 96,
curMenuIndex == 1);
this.paintMenu(g, ResourceLoader.StringResource[14], width / 2,
112, curMenuIndex == 2);
this.paintMenu(g, ResourceLoader.StringResource[15], width / 2,
128, curMenuIndex == 3);
}
}
public void constructsFightMap() {
fightLayerManager = new LayerManager();
fightLayerManager.append(myPlayer
.getSprite(Player.STATUS_BEFORE_ATTACK));
fightLayerManager.append(this.ranEnemy.sprite);
fightBackGround = engine.getRandomFightBg();
fightLayerManager.append(fightBackGround);
this.beforeFightHp = myPlayer.hp;
this.beforeFightMp = myPlayer.mp;
this.beforeFightExp = myPlayer.exp;
this.beforeFightMoney = myPlayer.money;
this.beforeFightHp_npc = this.ranEnemy.hp;
curMenuIndex = 0;
}
/**
*
*/
private void drawFightScene(Graphics g) {
fightLayerManager.paint(g, 0, 0);
g.drawImage(ResourceLoader.menu[11], 0, 208, Graphics.LEFT
| Graphics.BOTTOM);
g.drawImage(ResourceLoader.menu[10], 176, 0, Graphics.RIGHT
| Graphics.TOP);
g.setColor(255, 255, 255);
g.drawString("HP:", 7, 175, 0);
g.drawString("MP:", 7, 195, 0);
g.drawString(this.ranEnemy.name, 120, 5, 0);
//
g.setColor(255, 0, 0);
g.drawRect(130, 22, 30, 5);
g.fillRect(130, 22, this.ranEnemy.hp * 30 / this.beforeFightHp_npc, 5);
g.drawRect(30, 177, 30, 5);
g.drawRect(30, 197, 30, 5);
g.fillRect(30, 177, myPlayer.hp * 30 / this.beforeFightHp, 5);
g.fillRect(30, 197, myPlayer.mp * 30 / this.beforeFightMp, 5);
if (!popSkill) {
g
.drawImage(ResourceLoader.menu[12], 73 + curMenuIndex * 33,
172, 0);
} else {
g.drawImage(ResourceLoader.menu[13], 0, 0, 0);
Vector skills = myPlayer.skillVec;
int x = 42;
int y = 20;
g.setColor(255, 255, 255);
if (skills.size() > 0) {
Skill skill = null;
for (int i = 0; i < skills.size(); i++) {
skill = (Skill) skills.elementAt(i);
paintMenu(g, skill.name, x + 5, y, curMenuIndex2 == i);
y += 16;
}
}
}
}
/**
*
*/
private void drawGameOver(Graphics g) {
g.drawImage(ResourceLoader.menu[3], getWidth() / 2, 60,
Graphics.HCENTER | Graphics.TOP);
g.setColor(255, 255, 255);
g.setFont(Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
Font.SIZE_SMALL));
g.drawString(ResourceLoader.StringResource[23], width / 2, 90,
Graphics.HCENTER | Graphics.TOP);
}
/*
* (non-Javadoc)
*
* @see org.gamecollege.j2me.rpg.RPGGameCanvas#tick()
*/
protected void tick() {
if (getGameStatus() == STATUS_WALKING) {
Map map = this.curLevel.curMap;
int mapWidth = map.cols * curLevel.tileWidth;
int mapHeight = map.rows * curLevel.tileHeight;
Sprite walkSprite = myPlayer.getSprite(Player.STATUS_WALK);
//防止英雄走出地图
if (walkSprite.getX() < 0
|| walkSprite.getX() + walkSprite.getWidth() > mapWidth) {
myPlayer.undoMove();
}
if (walkSprite.getY() < 0
|| walkSprite.getY() + walkSprite.getHeight() > mapHeight) {
myPlayer.undoMove();
}
//地图障碍
TiledLayer ctl = map.collisionArea;
if (walkSprite.collidesWith(ctl, true)) {
myPlayer.undoMove();
}
//碰到NPC和道具
Vector objs = map.rpgObjects;
for (int i = 0; i < objs.size(); i++) {
RPGObject obj = (RPGObject) objs.elementAt(i);
if (obj.sprite.collidesWith(walkSprite, true)) {
if (obj instanceof NPC) {
handleCrashNpc((NPC) obj);
} else if (obj instanceof Property) {
Property p = (Property) obj;
handleCrashProperty(p);
}
}
}
//碰到连接区,地图转移
Enumeration e = curLevel.links.elements();
while (e.hasMoreElements()) {
Linker linker = (Linker) e.nextElement();
if (linker.belongMapID == map.mapNo
&& linker.crashHero(myPlayer, curLevel.tileWidth,
curLevel.tileHeight)) {
curLevel.changeMap(linker, myPlayer);
break;
}
}
//视窗移动,ox,oy为主角中心位置
int ox = walkSprite.getX()+walkSprite.getWidth()/2 - width / 2;
int oy = walkSprite.getY()+walkSprite.getHeight()/2 - height / 2;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -