📄 gamecanvas.java
字号:
}
else if(select==1){
if(viewState==0||viewState==1||viewState==3){
g.drawString("不 能 使 用",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
}
else if(viewState==2){
if(v1.size()==0){
g.drawString("无可用道具",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
}
else{
g.drawString("请选择道具",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
}
}
}
else if(select==2){
if(viewState==0||viewState==1||viewState==2||viewState==3){
g.drawString("不 能 撤 消",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
}
}
}
}
else if(selected==true){
g.setColor(0xffff00);
g.setFont(font1);
if(change==1){
if(viewState==3){
g.setColor(0x000000);
g.fillRect(w/2-28,h/2-47,56,95);
g.setColor(0x494949);
for(int i=0;i<4;i++){
g.fillRect(w/2-25,h/2-43+i*23,50,20);
}
for(int i=0;i<4;i++){
if(select2==i)
g.setColor(0xff0000);
else
g.setColor(0xffff00);
g.drawString(info[i+8],w/2,h/2-42+i*23,Graphics.TOP|Graphics.HCENTER);
}
}
}
}
}
}
/***************绘制地图地点的变换***************/
private void drawPlaceChange(Graphics g){
g.setClip(w/2-50,h-72,100,40);
g.setColor(0x000000);
g.fillRect(w/2-50,h-72,100,40);
g.setColor(0x494949);
g.fillRect(w/2-47,h-69,94,34);
g.setColor(0xffff00);
g.setFont(font1);
switch(placeChange){
case 1:
g.drawString(place[checkPoint][placeChange-1],w/2,h-64,Graphics.TOP|Graphics.HCENTER);
break;
case 2:
g.drawString(place[checkPoint][placeChange-1],w/2,h-64,Graphics.TOP|Graphics.HCENTER);
break;
case 3:
g.drawString(place[checkPoint][placeChange-1],w/2,h-64,Graphics.TOP|Graphics.HCENTER);
break;
}
}
/***************绘制人物战斗场景及动画***************/
//绘制战斗地图
private int fight_outrow = 0,fight_outcol = 0;
private final byte fight_map[][] = {
{ 13, 2, 2, 2, 2, 2, 2, 2, 75, 76, 2, 2, 2, 2, 2 },
{ 13, 13, 2, 2, 2, 3, 4, 2, 87, 88, 2, 2, 7, 8, 2 },
{ 13, 13, 13, 2, 2, 15, 16, 2, 2, 2, 2, 2, 19, 20, 2 },
{ 2, 13, 13, 74, 2, 2, 2, 5, 6, 2, 3, 4, 2, 2, 2 },
{ 2, 2, 13, 13, 13, 2, 2, 17, 18, 2, 15, 16, 2, 2, 2 },
{ 2, 2, 2, 13, 74, 13, 2, 3, 4, 2, 2, 2, 2, 7, 8 },
{ 2, 2, 2, 2, 73, 13, 13, 15, 16, 49, 50, 2, 2, 19, 20 },
{ 2, 2, 2, 2, 2, 13, 13, 13, 2, 61, 62, 2, 2, 2, 2 },
{ 2, 2, 2, 5, 6, 2, 74, 13, 73, 2, 2, 5, 6, 2, 2 },
{ 2, 2, 2, 17, 18, 2, 2, 13, 13, 13, 2, 17, 18, 2, 2 },
{ 2, 2, 2, 2, 2, 2, 75, 76, 13, 74, 13, 2, 2, 2, 2 },
{ 2, 2, 2, 2, 2, 2, 87, 88, 2, 13, 73, 13, 2, 2, 2 },
{ 2, 2, 2, 49, 50, 2, 3, 4, 2, 2, 13, 13, 74, 2, 2 },
{ 2, 2, 2, 61, 62, 2, 15, 16, 2, 3, 4, 13, 13, 13, 2 },
{ 2, 3, 4, 2, 2, 2, 2, 2, 2, 15, 16, 2, 13, 13, 13 },
{ 2, 15, 16, 2, 2, 7, 8, 2, 2, 2, 2, 2, 2, 13, 13 },
{ 2, 2, 2, 2, 2, 19, 20, 2, 2, 2, 2, 2, 2, 2, 13 },
{ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }
};
private void drawFightMap(Graphics g){
int tempx = 0,tempy = 0;
for(int i=fight_outrow;i<fight_outrow+18;i++){
for(int j=fight_outcol;j<fight_outcol+15;j++){
g.setClip((j-fight_outcol)*16,(i-fight_outrow)*16,16,16);
if(fight_map[i][j]!=0){
tempx = (j-fight_outcol)*16-(fight_map[i][j]-1)%12*16;
tempy = (i-fight_outrow)*16-(fight_map[i][j]-1)/12*16;
g.drawImage(map,tempx,tempy,20);
}
}
}
}
//绘制战斗的NPC
private int[] nfrow = {3,3,3};
private int[] nfcol = {6,6,6};
private void drawFightNpc(Graphics g){
for(int i=0;i<v2.size();i++){
g.setClip((nfcol[i]-(v2.size()-1)*2+i*4-fight_outcol)*16,(nfrow[i]+(v2.size()-1)-i-fight_outrow)*16,32,48);
int[] item = (int[])v2.elementAt(i);
if(item[2]<=0){
if(item[7]==0)
g.drawRGB(npc1_shadowRgbImage,0,imgWidth[0],(nfcol[i]-(v2.size()-1)*2+i*4-fight_outcol)*16-nFrame[i]*32,
(nfrow[i]+(v2.size()-1)-i-fight_outrow)*16,imgWidth[0],imgHeight[0],true);
else if(item[7]==1)
g.drawRGB(npc2_shadowRgbImage,0,imgWidth[1],(nfcol[i]-(v2.size()-1)*2+i*4-fight_outcol)*16-nFrame[i]*32,
(nfrow[i]+(v2.size()-1)-i-fight_outrow)*16,imgWidth[1],imgHeight[1],true);
else if(item[7]==2)
g.drawRGB(boss_shadowRgbImage,0,imgWidth[2],(nfcol[i]-(v2.size()-1)*2+i*4-fight_outcol)*16-nFrame[i]*32,
(nfrow[i]+(v2.size()-1)-i-fight_outrow)*16,imgWidth[2],imgHeight[2],true);
}
else{
if(item[7]==0)
g.drawImage(npc1,(nfcol[i]-(v2.size()-1)*2+i*4-fight_outcol)*16-nFrame[i]*32,
(nfrow[i]+(v2.size()-1)-i-fight_outrow)*16,20);
else if(item[7]==1)
g.drawImage(npc2,(nfcol[i]-(v2.size()-1)*2+i*4-fight_outcol)*16-nFrame[i]*32,
(nfrow[i]+(v2.size()-1)-i-fight_outrow)*16,20);
else if(item[7]==2)
g.drawImage(boss,(nfcol[i]-(v2.size()-1)*2+i*4-fight_outcol)*16-nFrame[i]*32,
(nfrow[i]+(v2.size()-1)-i-fight_outrow)*16,20);
}
}
}
//绘制PLAYER
private int pfightFrame = 0; //战斗状态桢变化
private int pfrow = 0,pfcol = 0; //战斗状态player初始位置
private void drawFightPlayer(Graphics g){
g.setClip((pfcol-fight_outcol)*16,(pfrow-fight_outrow)*16,32,48);
g.drawRGB(player_shadowRgbImage,0,imgWidth[3],(pfcol-fight_outcol)*16-pfightFrame*32,
(pfrow-fight_outrow)*16,imgWidth[3],imgHeight[3],true);
}
//绘制战斗界面控制菜单
String[] fightMenu = {"气杀","攻击","道具","防御","撤退"};
private int blueValue = 0; //蓝色气条值
private void drawFightMenu(Graphics g){
g.setClip(10,h-78,137,40);
g.setColor(0x000000);
g.fillRect(10,h-78,137,40);
g.setColor(0x505155);
g.fillRect(12,h-76,133,36);
g.drawImage(player_head,13,h-75,20);
g.setColor(0xffff00);
g.setFont(font);
g.drawString("生命 "+current_pLifeValue+"/"+max_pLifeValue,38,h-75,20);
g.drawString("气功 "+current_pPower+"/"+max_pPower,38,h-55,20);
g.setClip(10,h-40,137,17);
g.setColor(0x000000);
g.fillRect(10,h-40,137,17);
g.setColor(0x505155);
for(int i=0;i<5;i++){
g.fillRect(12+i*27,h-38,25,13);
}
for(int i=0;i<5;i++){
if(select4==i)
g.setColor(0xff0000);
else
g.setColor(0xffff00);
g.drawString(fightMenu[i],24+i*27,h-39,Graphics.TOP|Graphics.HCENTER);
}
g.setClip(10,h-25,137,9);
g.setColor(0x000000);
g.fillRect(10,h-25,137,9);
g.setColor(0x505155);
g.fillRect(12,h-23,133,5);
g.setClip(12,h-23,blueValue,5);
g.setColor(0x7777fe); //蓝色条颜色
g.fillRect(12,h-23,blueValue,5);
}
//绘制战斗时选择箭头
private int selectX = 2,selectY = 6;
private void drawFightSelect(Graphics g){
int x1=0,y1=0,x2=0,y2=0,x3=0,y3=0;
for(int i=0;i<v2.size();i++){
g.setClip(selectY*16+8-((v2.size()-1)*2-i*4-fight_outcol)*16,selectX*16+((v2.size()-1)-i-fight_outrow)*16-16,16,16);
g.setColor(0x00ff00);
if(select5==i){
int[] item = (int[])v2.elementAt(i);
if(item[2]>0){
x1 = selectX*16+((v2.size()-1)-i-fight_outrow)*16;
y1 = selectY*16+16-((v2.size()-1)*2-i*4-fight_outcol)*16;
x2 = x1-16;
y2 = y1-8;
x3 = x1-16;
y3 = y1+8;
g.fillTriangle(y1,x1,y2,x2,y3,x3);
}
}
}
}
//绘制战斗时的状态显示
int lifeValue = 0;
int width = 0,high = 0;
//绘制被攻击时的状态
private void drawIsAttackedState(Graphics g){
if(fightTime==0){
width = 92;
high = 33;
for(int i=0;i<v2.size();i++){
g.setClip(width-((v2.size()-1)*2-i*4+fight_outcol)*16,high+((v2.size()-1)-i-fight_outrow)*16,30,15);
if(select5==i){
g.setColor(0xff0000);
g.setFont(font);
g.drawString("- "+lifeValue,width-((v2.size()-1)*2-i*4+fight_outcol)*16+15,high+((v2.size()-1)-i-fight_outrow)*16,Graphics.TOP|Graphics.HCENTER);
}
}
}
else if(fightTime==1){
width = 172;
high = 177;
g.setClip(width-fight_outcol*16,high-fight_outrow*16,30,15);
g.setColor(0xff0000);
g.setFont(font);
g.drawString("- "+lifeValue,width-fight_outcol*16+15,high-fight_outrow*16,Graphics.TOP|Graphics.HCENTER);
}
}
//绘制躲闪时的状态
private void drawUnAttackedState(Graphics g){
if(fightTime==0){
width = 92;
high = 33;
for(int i=0;i<v2.size();i++){
g.setClip(width-((v2.size()-1)*2-i*4+fight_outcol)*16,high+((v2.size()-1)-i-fight_outrow)*16,30,15);
if(select5==i){
g.setColor(0xff0000);
g.setFont(font);
g.drawString("闪避",width-((v2.size()-1)*2-i*4+fight_outcol)*16+15,high+((v2.size()-1)-i-fight_outrow)*16,Graphics.TOP|Graphics.HCENTER);
}
}
}
else if(fightTime==1){
width = 172;
high = 177;
g.setClip(width-fight_outcol*16,high-fight_outrow*16,30,15);
g.setColor(0xff0000);
g.setFont(font);
g.drawString("闪避",width-fight_outcol*16+15,high-fight_outrow*16,Graphics.TOP|Graphics.HCENTER);
}
}
//绘制战斗时选择按钮的状态
int tempDefense = 0; //加防御值
private void drawChooseState(Graphics g){
if(chooseEnd==1){
g.setClip(w/2-48,h/2-18,96,36);
g.setColor(0x000000);
g.fillRect(w/2-48,h/2-18,96,36);
g.setColor(0x494949);
g.fillRect(w/2-45,h/2-15,90,30);
g.setColor(0xffff00);
g.setFont(font);
g.drawString("气 值 不 够",w/2,h/2-15,Graphics.TOP|Graphics.HCENTER);
g.drawString("不 能 攻 击",w/2,h/2+1,Graphics.TOP|Graphics.HCENTER);
}
else if(chooseEnd==2){
g.setClip(10,10,220,269);
g.setColor(0x000000);
g.fillRect(10,10,220,269);
g.setColor(0x505155);
g.fillRect(12,12,216,265);
g.setColor(0x0bb53f);
g.drawRect(14,15,50,20);
g.drawRect(15,40,210,209);
g.drawLine(15,60,225,60);
g.drawLine(157,40,157,249);
for(int i=0;i<2;i++){
g.drawRect(14+i*54,254,50,20);
}
g.setColor(0xffff00);
g.setFont(font1);
g.drawString(info[2],39,16,Graphics.TOP|Graphics.HCENTER);
g.drawString(str[2],86,41,Graphics.TOP|Graphics.HCENTER);
g.drawString(str[4],190,41,Graphics.TOP|Graphics.HCENTER);
g.setColor(0xffff00);
g.setFont(font1);
for(int i=0;i<2;i++){
if(change==4){
if(select6==i)
g.setColor(0xff0000);
else
g.setColor(0xffff00);
}
g.drawString(info[i*2+5],39+i*54,255,Graphics.TOP|Graphics.HCENTER);
}
g.setClip(15,60,211,189);
g.setColor(0xffff00);
for(int i=0;i<v1.size();i++){
String[] data = (String[])v1.elementAt(i);
if(selected==false){
if(change==3){
if(select5==i-dy)
g.setColor(0xff0000);
else
g.setColor(0xffff00);
}
}
else{
g.setColor(0xff0000);
g.drawRect(15,60+select5*20,210,20);
g.setColor(0xffff00);
}
g.setFont(font1);
g.drawString(data[0],86,61+(i-dy)*20,Graphics.TOP|Graphics.HCENTER);
g.drawString(data[3],190,61+(i-dy)*20,Graphics.TOP|Graphics.HCENTER);
}
if(change==3){
g.setColor(0xff0000);
g.drawRect(15,60+select5*20,210,20);
}
else if(change==4){
g.setColor(0xff0000);
g.drawRect(14+select6*54,254,50,20);
}
}
else if(chooseEnd==3){
width = 168;
high = 177;
g.setClip(width-fight_outcol*16,high-fight_outrow*16,50,15);
g.setColor(0xffff00);
g.setFont(font);
g.drawString("防御 +"+tempDefense,width-fight_outcol*16+25,high-fight_outrow*16,Graphics.TOP|Graphics.HCENTER);
}
else if(chooseEnd==4){
g.setClip(w/2-48,h/2-18,96,36);
g.setColor(0x000000);
g.fillRect(w/2-48,h/2-18,96,36);
g.setColor(0x494949);
g.fillRect(w/2-45,h/2-15,90,30);
g.setColor(0xffff00);
g.setFont(font);
g.drawString("逃 跑 失 败",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
}
else if(chooseEnd==5){
g.setClip(w/2-48,h/2-18,96,36);
g.setColor(0x000000);
g.fillRect(w/2-48,h/2-18,96,36);
g.setColor(0x494949);
g.fillRect(w/2-45,h/2-15,90,30);
g.setColor(0xffff00);
g.setFont(font);
g.drawString("不 能 逃 跑",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
}
}
//绘制可用物品状态触发器
int unUse = 0; //没有被选择的状态
private void drawUseState(Graphics g){
g.setClip(w/2-48,h/2-18,96,36);
g.setColor(0x000000);
g.fillRect(w/2-48,h/2-18,96,36);
g.setColor(0x494949);
g.fillRect(w/2-45,h/2-15,90,30);
g.setColor(0xffff00);
g.setFont(font1);
if(unUse==1){
g.drawString("无可使用道具",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
}
else if(unUse==2){
g.drawString("请选择物品",w/2,h/2-9,Graphics.TOP|Graphics.HCENTER);
}
}
private boolean addMedicineState = false; //是否使用药品状态
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -