📄 metalmaxcanvas.java
字号:
/*显示个黑屏*/
g.setColor(0, 0, 0);
g.fillRect(0, 0, getWidth(), getHeight());
repaint();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
/*提示虚拟机进行垃圾回收*/
System.gc();
/*根据地图编号进行地图的初始化*/
switch (mapID) {
case START_MAP:
/*第一个游戏地图先加载游戏所需的资源*/
load(ZHUJUE_2F_MAP);
/*设置为自动运行*/
gameState = GAME_AUTORUN;
/*播放自动运行时的音效*/
SoundEffects.getInstance().startAutoRunSound();
isGameOver = false;
gameDuration = 0;
/*地图图层初始化,包括图层添加,英雄,NPC的初始化*/
mLm = new LayerManager();
/*在图层上设置英雄,初始化英雄坐标和方向*/
mLm.append(mHero);
mHero.setPosition(5 * 16, 9 * 16);
mHero.setDown();
/*在图层上设置NPC*/
mLm.append(mNpc[0]);
mLm.append(mNpc[1]);
/*前景图和背景图的添加*/
mLm.append(mBoxLayer);
mLm.append(mBackLayer);
break;
case WORLD_MAP:
/*移动到相应的地图*/
gotoMap(WORLD_MAP);
/*如果是乘车状态,则播放乘车时的音效,否则播放普通音效*/
if(isDrive){
SoundEffects.getInstance().startTankfieldSound();
}else{
SoundEffects.getInstance().startHerofieldSound();
}
isGameOver = false;
mLm = new LayerManager();
mLm.append(mHero);
if (isDrive){
mLm.append(mTank);
}
if (driveMap == WORLD_MAP){
mLm.append(mTank);
}
/*添加地图所可能触发的事件*/
mLm.append(mEvent[0]);
mLm.append(mEvent[1]);
mLm.append(mEvent[2]);
mLm.append(mEvent[3]);
mLm.append(mEvent[4]);
mLm.append(mEvent[5]);
mLm.append(mEvent[6]);
/*对NPC进行处理,不需要显示的NPC进行隐藏*/
mNpc[0].setVisible(false);
mNpc[1].setVisible(false);
mNpc[2].setVisible(false);
mNpc[3].setVisible(false);
mNpc[4].setVisible(false);
mLm.append(mBoxLayer);
mLm.append(mBackLayer);
break;
case LADUO_MAP:
gotoMap(LADUO_MAP);
SoundEffects.getInstance().startTownSound();
isGameOver = false;
mLm = new LayerManager();
mLm.append(mHero);
if (isDrive) {
mLm.append(mTank);
}
if (driveMap == LADUO_MAP) {
mLm.append(mTank);
}
mLm.append(mNpc[0]);
mLm.append(mNpc[1]);
mLm.append(mNpc[2]);
mLm.append(mNpc[3]);
mLm.append(mNpc[4]);
mLm.append(mBoxLayer);
mLm.append(mBackLayer);
break;
case ZHUJUE_1F_MAP:
gotoMap(ZHUJUE_1F_MAP);
SoundEffects.getInstance().startTownSound();
isGameOver = false;
mLm = new LayerManager();
mLm.append(mHero);
if (isDrive) {
mLm.append(mTank);
}
if (driveMap == ZHUJUE_1F_MAP) {
mLm.append(mTank);
}
mLm.append(mNpc[0]);
mLm.append(mNpc[1]);
mLm.append(mNpc[2]);
mLm.append(mNpc[3]);
mLm.append(mNpc[4]);
mLm.append(mBoxLayer);
mLm.append(mBackLayer);
break;
case ZHUJUE_2F_MAP:
gotoMap(ZHUJUE_2F_MAP);
SoundEffects.getInstance().startTownSound();
isGameOver = false;
mLm = new LayerManager();
mLm.append(mHero);
if (isDrive) {
mLm.append(mTank);
}
if (driveMap == ZHUJUE_1F_MAP) {
mLm.append(mTank);
}
mLm.append(mNpc[0]);
mNpc[1].setVisible(false);
mNpc[2].setVisible(false);
mNpc[3].setVisible(false);
mNpc[4].setVisible(false);
mLm.append(mEvent[5]);
mLm.append(mEvent[6]);
mLm.append(mBoxLayer);
mLm.append(mBackLayer);
break;
case LADUO_SHANGJIN_MAP:
gotoMap(LADUO_SHANGJIN_MAP);
SoundEffects.getInstance().startTownSound();
isGameOver = false;
mLm = new LayerManager();
mLm.append(mHero);
if (isDrive) {
mLm.append(mTank);
}
if (driveMap == LADUO_SHANGJIN_MAP) {
mLm.append(mTank);
}
mLm.append(mNpc[0]);
mLm.append(mNpc[1]);
mLm.append(mNpc[2]);
mLm.append(mNpc[3]);
mLm.append(mNpc[4]);
mLm.append(mEvent[6]);
mLm.append(mBoxLayer);
mLm.append(mBackLayer);
break;
case LADUO_HEROITEM_MAP:
gotoMap(LADUO_HEROITEM_MAP);
SoundEffects.getInstance().startTownSound();
isGameOver = false;
mLm = new LayerManager();
mLm.append(mHero);
if (isDrive) {
mLm.append(mTank);
}
if (driveMap == LADUO_HEROITEM_MAP) {
mLm.append(mTank);
}
mLm.append(mNpc[0]);
mLm.append(mNpc[1]);
mLm.append(mNpc[2]);
mLm.append(mNpc[3]);
mNpc[4].setVisible(false);
mLm.append(mBoxLayer);
mLm.append(mBackLayer);
break;
case LADUO_BAR_MAP:
gotoMap(LADUO_BAR_MAP);
SoundEffects.getInstance().startTownSound();
isGameOver = false;
mLm = new LayerManager();
mLm.append(mHero);
if (isDrive) {
mLm.append(mTank);
}
if (driveMap == LADUO_BAR_MAP) {
mLm.append(mTank);
}
mLm.append(mNpc[0]);
mLm.append(mNpc[1]);
mLm.append(mNpc[2]);
mLm.append(mNpc[3]);
mLm.append(mNpc[4]);
mLm.append(mBoxLayer);
mLm.append(mBackLayer);
break;
case LADUO_INN_MAP:
gotoMap(LADUO_INN_MAP);
SoundEffects.getInstance().startTownSound();
isGameOver = false;
mLm = new LayerManager();
mLm.append(mHero);
if (isDrive) {
mLm.append(mTank);
}
if (driveMap == LADUO_INN_MAP) {
mLm.append(mTank);
}
mLm.append(mNpc[0]);
mLm.append(mNpc[1]);
mLm.append(mNpc[2]);
mLm.append(mNpc[3]);
mNpc[4].setVisible(false);
mLm.append(mEvent[5]);
mLm.append(mEvent[6]);
mLm.append(mBoxLayer);
mLm.append(mBackLayer);
break;
case LADUO_CHUANSONG_MAP:
gotoMap(LADUO_CHUANSONG_MAP);
SoundEffects.getInstance().startTownSound();
isGameOver = false;
mLm = new LayerManager();
mLm.append(mHero);
if (isDrive) {
mLm.append(mTank);
}
if (driveMap == LADUO_CHUANSONG_MAP) {
mLm.append(mTank);
}
mLm.append(mNpc[0]);
mNpc[1].setVisible(false);
mNpc[2].setVisible(false);
mNpc[3].setVisible(false);
mNpc[4].setVisible(false);
mLm.append(mBoxLayer);
mLm.append(mBackLayer);
break;
case LADUO_MINGQI_MAP:
gotoMap(LADUO_MINGQI_MAP);
SoundEffects.getInstance().startTownSound();
isGameOver = false;
mLm = new LayerManager();
mLm.append(mHero);
if (isDrive) {
mLm.append(mTank);
}
if (driveMap == LADUO_MINGQI_MAP) {
mLm.append(mTank);
}
mLm.append(mNpc[0]);
mLm.append(mNpc[1]);
mLm.append(mNpc[2]);
mNpc[3].setVisible(false);
mNpc[4].setVisible(false);
mLm.append(mEvent[6]);
mLm.append(mBoxLayer);
mLm.append(mBackLayer);
break;
case TANK1_1F_MAP:
gotoMap(TANK1_1F_MAP);
SoundEffects.getInstance().startTankfieldSound();
isGameOver = false;
mLm = new LayerManager();
mLm.append(mHero);
if (isDrive){
mLm.append(mTank);
}
if (driveMap == TANK1_1F_MAP){
mLm.append(mTank);
}
mNpc[0].setVisible(false);
mNpc[1].setVisible(false);
mNpc[2].setVisible(false);
mNpc[3].setVisible(false);
mNpc[4].setVisible(false);
mLm.append(mBoxLayer);
mLm.append(mBackLayer);
break;
case TANK1_2F_MAP:
gotoMap(TANK1_2F_MAP);
SoundEffects.getInstance().startTankfieldSound();
isGameOver = false;
mLm = new LayerManager();
mLm.append(mHero);
if (isDrive){
mLm.append(mTank);
}
if (driveMap == TANK1_2F_MAP){
mLm.append(mTank);
}
mNpc[0].setVisible(false);
mNpc[1].setVisible(false);
mNpc[2].setVisible(false);
mNpc[3].setVisible(false);
mNpc[4].setVisible(false);
mLm.append(mBoxLayer);
mLm.append(mBackLayer);
break;
case TANK1_3F_MAP:
gotoMap(TANK1_3F_MAP);
SoundEffects.getInstance().startTankfieldSound();
isGameOver = false;
mLm = new LayerManager();
mLm.append(mHero);
if (isDrive){
mLm.append(mTank);
}
if (driveMap == TANK1_3F_MAP){
mLm.append(mTank);
}
mNpc[0].setVisible(false);
mNpc[1].setVisible(false);
mNpc[2].setVisible(false);
mNpc[3].setVisible(false);
mNpc[4].setVisible(false);
mLm.append(mBoxLayer);
mLm.append(mBackLayer);
break;
default:
break;
}
System.out.println("初始化完成");
}
/**游戏开始*/
public synchronized void start() {
animationThread = new Thread(this);
animationThread.start();
startTime = System.currentTimeMillis() - gameDuration;
}
/**游戏停止*/
public synchronized void stop() {
gameDuration = System.currentTimeMillis() - startTime;
animationThread = null;
if (isGameOver) {
time = (System.currentTimeMillis() - startTime);
}
}
/**商店处理*/
public void Shop(Graphics g, int mapID, int eventID) {
/*初始化商店管理器*/
ShopManager sm = new ShopManager(mapID, eventID - 100);
/*获取键盘输入*/
int KeyState = getKeyStates();
/*获取触发的商店类型*/
shopType = sm.getShopType();
/*商店菜单,商店信息的绘制*/
g.setColor(0xffffff);
g.setFont(Font.getFont(Font.STYLE_BOLD));
g.drawImage(shopImg, 0, 0, Graphics.TOP | Graphics.LEFT);
g.drawImage(cursorImg, cursorwidth + 62, 5 + cursorheight, Graphics.TOP | Graphics.LEFT);
g.drawString(sm.getShopName(), 5, 10, Graphics.TOP | Graphics.LEFT);
g.drawString(String.valueOf(mHero.getHeroMoney()), 12, 32, Graphics.TOP | Graphics.LEFT);
g.drawString(sm.getCho1(), 80, 2, Graphics.TOP | Graphics.LEFT);
g.drawString(sm.getCho2(), 80, 12, Graphics.TOP | Graphics.LEFT);
g.drawString(sm.getCho3(), 80, 22, Graphics.TOP | Graphics.LEFT);
g.drawImage(menuImg, 0, getHeight() - menuImg.getHeight(), Graphics.TOP | Graphics.LEFT);
g.drawString("欢迎光临", 80, getHeight() -40, Graphics.TOP | Graphics.LEFT);
g.drawString(sm.getShopName(), 80, getHeight() -30, Graphics.TOP | Graphics.LEFT);
/*如果不是在显示商店库存物品的时候*/
if(isShop_ItemList || isShop_EquList){
/*根据显示的物品页数,更新商店菜单所能达到的最大深度*/
if(shopPage == 0){
listH = shopItemList.length >= 4 ? 30 : (shopItemList.length -1)*10;
}else if(shopPage == 1){
listH = (shopItemList.length % 4 - 1) * 10;
}
}else if(isShop_Sell){/*如果是在显示出售物品*/
listH = 30;
}
/*输入上键,指针坐标更新*/
if ((KeyState & UP_PRESSED) != 0) {
if (cursorheight >= 0) {
cursorheight -= 10;
}
if (cursorheight < 0){
if(shopPage == 1){
shopPage = 0;
cursorheight = 0;
cursorwidth = 0;
}
if(shopPage == 0){
cursorheight = 0;
cursorwidth = 0;
}
}
}
/*输入下键,指针坐标更新*/
if ((KeyState & DOWN_PRESSED) != 0) {
if (cursorheight <= listH) {
cursorheight += 10;
}
/*如果库存物品的数量大于4个,则进行翻页处理*/
if ((isShop_ItemList || isShop_EquList) && cursorheight > listH && (shopItemList.length / 5 > 0)){
if(shopPage == 1){
cursorheight = listH;
cursorwidth = 0;
}
if(shopPage == 0){
shopPage = 1;
cursorheight = 0;
cursorwidth = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -