📄 gamecanvas.java
字号:
int addMedicineValue = 0;
int tempLifeValue = 0; //加生命值
int tempPowerValue = 0; //加气值
//绘制加药值的状态显示
private void drawAddMedicineState(Graphics g){
width = 168;
high = 177;
g.setClip(width-fight_outcol*16,high-fight_outrow*16,50,15);
g.setFont(font);
if(addMedicineValue==1){
g.setColor(0xff0000);
g.drawString("生命 +"+tempLifeValue,width-fight_outcol*16+25,high-fight_outrow*16,Graphics.TOP|Graphics.HCENTER);
}
else if(addMedicineValue==2){
g.setColor(0x0000ff);
g.drawString("气功 +"+tempPowerValue,width-fight_outcol*16+25,high-fight_outrow*16,Graphics.TOP|Graphics.HCENTER);
}
}
//绘制战斗结束状态显示
private void drawFightOver(Graphics g){
g.setClip(w/2-53,h/2-33,106,66);
g.setColor(0x000000);
g.fillRect(w/2-53,h/2-33,106,66);
g.setColor(0x494949);
g.fillRect(w/2-50,h/2-30,100,60);
g.setColor(0xffff00);
g.setFont(font);
if(overEvent==1){
g.drawString("获得经验 "+tExp,w/2,h/2-15,Graphics.TOP|Graphics.HCENTER);
g.drawString("获得金钱 "+tMoney,w/2,h/2+5,Graphics.TOP|Graphics.HCENTER);
}
else if(overEvent==2){
g.drawString("恭喜您,升级了",w/2,h/2-15,Graphics.TOP|Graphics.HCENTER);
g.drawString("当前等级 "+pLevel+"级",w/2,h/2+5,Graphics.TOP|Graphics.HCENTER);
}
else if(overEvent==3){
g.setFont(font1);
g.drawString("G A M E",w/2,h/2-15,Graphics.TOP|Graphics.HCENTER);
g.drawString("O V E R"+tMoney,w/2,h/2+5,Graphics.TOP|Graphics.HCENTER);
}
}
//绘制游戏初始进度条
private void drawWin(Graphics g){
g.setColor(0x000000);
g.fillRect(0,0,w,h);
g.setColor(0xffff00);
g.drawString("第"+(checkPoint+1)+"层山",w/2,h/4,Graphics.TOP|Graphics.HCENTER);
g.drawString("资源装载中......"+loadNum+"%",w/2,h/2-22,Graphics.TOP|Graphics.HCENTER);
g.setClip(w/2-53,h/2-4,106,8);
g.setColor(0x0000ff);
g.fillRect(w/2-53,h/2-4,106,8);
g.setColor(0x494949);
g.fillRect(w/2-50,h/2-2,100,4);
g.setClip(w/2-50,h/2-2,loadNum,4);
g.setColor(0xff0000);
g.fillRect(w/2-50,h/2-2,loadNum,4);
}
//绘制游戏进程暂停状态
String[] pauseMenu = {"返回游戏","退 出"};
private void drawPauseState(Graphics g){
g.setClip(w/2-40,h/2-23,80,46);
g.setColor(0x000000);
g.fillRect(w/2-40,h/2-23,80,46);
g.setColor(0x494949);
for(int i=0;i<2;i++)
g.fillRect(w/2-38,(h/2-21)+i*22,76,20);
g.setColor(0xffff00);
for(int i=0;i<2;i++){
if(select==i)
g.setColor(0xff0000);
else
g.setColor(0xffff00);
g.drawString(pauseMenu[i],w/2,(h/2-20)+i*22,Graphics.TOP|Graphics.HCENTER);
}
}
//绘制游戏通关后的介绍
String[] gameOverInfo = {
" 战斗结束了,天魔山从此恢复了和平与安宁,",
"村民们也得到了自由。干将几经沙场终于将",
"妻子莫邪从魔爪中救出生天。可是......",
"天下妖魔众多,单靠个人力量却无法斩除妖",
"孽,干将与莫邪心意相通,决定开杂货铺(",
"开个玩笑),是兵器铺。二人决定要为世上",
"英雄铸造神兵利器,以天下人的力量来铲除",
"邪魔歪道。几年之久,干将莫邪共同铸造了",
"无数的绝世兵器,成为天下人的英雄!"
};
private void drawGameOver(Graphics g){
g.setColor(0x000000);
g.fillRect(10,h/2-100,220,200);
g.setColor(0x505155);
g.fillRect(12,h/2-70,216,140);
g.setColor(0xffff00);
g.setFont(font);
g.setClip(12,h/2-70,216,140);
for(int i=0;i<9;i++){
g.drawString(gameOverInfo[i],15,infoY+i*20,20);
}
}
/***************按键状态及触发***************/
private boolean gameSelect = false; //游戏进程开关
int keyState = 0; //按键状态
private final int GAME_UP = 1;
private final int GAME_DOWN = 2;
private final int GAME_LEFT = 4;
private final int GAME_RIGHT = 8;
private final int GAME_FIRE = 16;
public void keyPressed(int keyCode){
int key = getGameAction(keyCode);
switch(key){
case UP:
keyState |= GAME_UP;
break;
case DOWN:
keyState |= GAME_DOWN;
break;
case LEFT:
keyState |= GAME_LEFT;
if(buy==true){
subtract = true;
}
break;
case RIGHT:
keyState |= GAME_RIGHT;
if(buy==true){
add = true;
}
break;
case FIRE:
keyState |= GAME_FIRE;
break;
}
if(keyCode==-6){
if(screenState==1){
if(function==false){
function = true;
fightState = 0;
change = 0;
viewState = 0;
select = 0;
}
else{
if(prow<=36&&prow>9){
fightState = 1;
}
function = false;
select = 0;
}
}
}
if(keyCode==-7){
if(screenState==0){
if(infoStart==true){
if(infomation==2){
if(infoY>h/2-124){
infoY = h/2-124;
}
else if(infoY==h/2-124){
infoStart = false;
infoY = h/2+72;
}
}
else if(infomation==3){
infoStart = false;
}
}
}
else if(screenState==1){
gameSelect = true;
canGoState = false;
select = 0;
}
if(gameOver==true){
if(infoY>h/2-104){
infoY = h/2-104;
}
else if(infoY==h/2-104){
gameOver = false;
infoY = h/2+72;
}
}
}
}
public void keyReleased(int keyCode){
int key = getGameAction(keyCode);
switch(key){
case UP:
keyState -= GAME_UP;
pFount = 2;
pFrame = 0;
break;
case DOWN:
keyState -= GAME_DOWN;
pFount = 0;
pFrame = 0;
break;
case LEFT:
keyState -= GAME_LEFT;
pFount = 1;
pFrame = 0;
if(buy==true){
subtract = false;
}
break;
case RIGHT:
keyState -= GAME_RIGHT;
pFount = 3;
pFrame = 0;
if(buy==true){
add = false;
}
break;
case FIRE:
keyState -= GAME_FIRE;
break;
}
}
/**********方法集合**********/
//移动方法上
private void moveUP(){
if(talk==false&&buy==false&&function==false){
if(pFount==2){
if(pFrame<3)
pFrame++;
if(pFrame==3)
pFrame = 0;
if(prow-outrow>9||outrow==0){
if(prow>0){
if(MyMap_collides[prow][pcol]==1||MyMap_collides[prow][pcol+1]==1){
}
else{
prow--;
}
}
}
else{
if(MyMap_collides[prow][pcol]==1||MyMap_collides[prow][pcol+1]==1){
}
else{
prow--;
outrow--;
}
}
switch(prow){
case 57:
placeState = true;
placeChange = 1;
break;
case 36:
placeState = true;
placeChange = 2;
break;
case 9:
if(pcol>7&&pcol<12){
placeState = true;
placeChange = 3;
}
break;
}
if(prow<57&&prow>36){
fightState = 0;
}
else if(prow<=36&&prow>9){
fightState = 1;
}
else if(prow<=9){
if(MyMap_collides[prow][pcol]==2){
canGoState = false;
fightState = 2;
}
else{
if(canGoState==true){
fightState = 1;
}
}
if(MyMap_collides[prow][pcol]==6){
loadOver = false;
screenState = -2;
prow = 58;
pcol = 4;
pfrow = 12;
pfcol = 11;
outrow = 42;
outcol = 0;
cun_X = 57;
cun_Y = 15;
fang_X = 42;
fang_Y = 15;
medicine_X = 28;
medicine_Y = 18;
talkNum = -1;
buyTalk = -1;
fightState = 0;
recordState = 0;
talkState = 0;
fightTime = 0;
chooseEnd = 0; //攻击状态按钮选择效果
select = 0;
infoY = h/2+72;
for(int i=8;i<11;i++){
MyMap_collides[9][i]=2;
}
checkPoint++;
if(checkPoint==7){
gameOver = true;
}
}
}
}
else{
pFount = 2;
pFrame = 0;
}
}
else if(talk==true){ //对话状态打开
if(talkState==2||talkState==3){
if(buyTalk==1){
if(select>0)
select--;
}
}
}
else if(buy==true){ //买卖状态打开
if(change==0){
change = 2;
select = 0;
}
else if(change==1){
if(viewState==0){
if(select1>-1)
select1--;
if(select1==-1){
change = 0;
select = 0;
}
}
else if(viewState==1){
if(v.size()+v1.size()<10){
if(select1>-1)
select1--;
if(select1==-1){
change = 0;
select = 1;
}
}
else{
if(select1>-1){
select1--;
if(select1<0){
select1 = 0;
dy--;
}
if(select1==-dy-1){
dy = 0;
change = 0;
select = 1;
}
}
}
}
}
else if(change==2){
if(viewState==0){
change = 1;
select1 = 3;
}
else if(viewState==1){
if(v.s
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -