📄 gameplay.java~202~
字号:
m_Map.MapblockSize,
m_Map.MapblockSize,
X_intMan + speedX + 3,
Y_intMan + speedY + 20,
m_Map.MapblockSize,
m_Map.MapblockSize))
{
m_Map.Rool = false;
return false;
}
}
}
m_Map.Rool=true;
return true;
}
//主角位置相关属性
int X_intMan=140;//地图坐标系的坐标
int Y_intMan=100;//地图坐标系的坐标
int Man_Speed=5;//主角移动速度
public void Drawman()//主角绘制
{
if(animationx.Current_station==-1)
{
if (m_Map.RollToLeft)
{
animation = animationx.Left_run;
if (X_intMan - m_Map.MapX < Man_Speed && X_intMan > Man_Speed)
{if (Brock_check( -m_Map.MapMoveSpeed, 0))
X_intMan = X_intMan - m_Map.MapMoveSpeed;
}
else if (X_intMan > Man_Speed)
{
if (Brock_check( -Man_Speed, 0))
X_intMan = X_intMan - Man_Speed;
}
}
else if (m_Map.RollToRight)
{
animation = animationx.right_run;
if (X_intMan - m_Map.MapX >
m_View.m_i_ScreenWidth - Man_Speed - m_Map.MapblockSize &&
X_intMan < (m_Map.m_i_MapWidth - 1) * m_Map.MapblockSize)
{
if (Brock_check(m_Map.MapMoveSpeed, 0))
X_intMan = X_intMan + m_Map.MapMoveSpeed;
}
else if (X_intMan <
(m_Map.m_i_MapWidth - 1) * m_Map.MapblockSize)
{
if (Brock_check(Man_Speed, 0))
X_intMan = X_intMan + Man_Speed;
}
}
else if (m_Map.RollToUp)
{
animation = animationx.up_run;
if (Y_intMan - m_Map.MapY < Man_Speed && Y_intMan > Man_Speed)
{
if (Brock_check(0, -m_Map.MapMoveSpeed))
Y_intMan = Y_intMan - m_Map.MapMoveSpeed;
}
else if (Y_intMan > Man_Speed)
{
if (Brock_check(0, -Man_Speed))
Y_intMan = Y_intMan - Man_Speed;
}
}
else if (m_Map.RollToDown)
{
animation = animationx.down_run;
if (Y_intMan - m_Map.MapY >
m_View.m_i_ScreenHeight - Man_Speed - m_Map.MapblockSize &&
Y_intMan < (m_Map.m_i_MapHeight - 1) * m_Map.MapblockSize)
{
if (Brock_check(0, m_Map.MapMoveSpeed))
Y_intMan = Y_intMan + m_Map.MapMoveSpeed;
}
else if (Y_intMan <
(m_Map.m_i_MapHeight - 1) * m_Map.MapblockSize)
{
if (Brock_check(0, Man_Speed))
Y_intMan = Y_intMan + Man_Speed;
}
}
int image_x = animationx.Animation_run(animation);
switch (animation)
{
case 0:
case 4:
m_View.Blt(X_intMan - m_Map.MapX, Y_intMan - m_Map.MapY,
animationx.getwidth(animation),
animationx.getheight(animation),
image_x, 0, m_Surface_left);
// m_View.m_g_BackGraphy.setColor(255);
// m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX-30,Y_intMan-m_Map.MapY+20,16,16);
break;
case 1:
case 5:
m_View.Blt(X_intMan - m_Map.MapX, Y_intMan - m_Map.MapY,
animationx.getwidth(animation),
animationx.getheight(animation),
image_x, 0, m_Surface_right);
// m_View.m_g_BackGraphy.setColor(255);
// m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+65,Y_intMan-m_Map.MapY+20,16,16);
break;
case 2:
case 6:
m_View.Blt(X_intMan - m_Map.MapX - 7,
Y_intMan - m_Map.MapY + 1,
animationx.getwidth(animation),
animationx.getheight(animation),
image_x, 0, m_Surface_up);
// m_View.m_g_BackGraphy.setColor(255);
// m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX-30,Y_intMan-m_Map.MapY+20,16,16);
break;
case 3:
case 7:
m_View.Blt(X_intMan - m_Map.MapX - 7,
Y_intMan - m_Map.MapY + 1,
animationx.getwidth(animation),
animationx.getheight(animation),
image_x, 0, m_Surface_down);
// m_View.m_g_BackGraphy.setColor(255);
// m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+65,Y_intMan-m_Map.MapY+20,16,16);
break;
}
}
else
{
int image_x = animationx.Animation_ACT(animationx.Current_station);
// int image_x = animationx.Animation_run(animation);
int remove_X=0;
if(image_x<100)
remove_X=35;
switch (animationx.Current_station)
{
case 0:
case 4:
m_View.Blt(X_intMan - m_Map.MapX-38+remove_X, Y_intMan - m_Map.MapY-15,
animationx.getwidth(8),
animationx.getheight(8),
image_x, 0, m_Surface_ACT_left);
// m_View.m_g_BackGraphy.setColor(255);
// m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX-20,Y_intMan-m_Map.MapY+15,16,21);
break;
case 1:
case 5:
m_View.Blt(X_intMan - m_Map.MapX-25, Y_intMan - m_Map.MapY-15,
animationx.getwidth(9),
animationx.getheight(9),
image_x, 0, m_Surface_ACT_right);
// m_View.m_g_BackGraphy.setColor(255);
// m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+30,Y_intMan-m_Map.MapY+10,16,21);
break;
case 2:
case 6:
m_View.Blt(X_intMan - m_Map.MapX - 7-38+remove_X,
Y_intMan - m_Map.MapY + 1-15,
animationx.getwidth(10),
animationx.getheight(10),
image_x, 0, m_Surface_ACT_left);
// m_View.m_g_BackGraphy.setColor(255);
// m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX-20,Y_intMan-m_Map.MapY+15,16,21);
break;
case 3:
case 7:
m_View.Blt(X_intMan - m_Map.MapX -7-25,
Y_intMan - m_Map.MapY + 1-15,
animationx.getwidth(11),
animationx.getheight(11),
image_x, 0, m_Surface_ACT_right);
// m_View.m_g_BackGraphy.setColor(255);
// m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+30,Y_intMan-m_Map.MapY+10,16,21);
break;
}
}
// m_View.m_g_BackGraphy.setColor(255);
// m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX,Y_intMan-m_Map.MapY,16,16);
}
int npcimageX[]=new int[2];
int shine[]={0,0};
int hit[]={0,0};
public void DrawNPC()//绘制NPC
{
for(int i=0; i<npc.length;i++)
{
//AI:决定位置,行为方式
npc[i].Choice_NPCAI(i,X_intMan,Y_intMan);
if(npc[i].life<1)
{
npc[i].NPC_X = -100;
npc[i].NPC_Y = -100;
}
rolX[i+1]=npc[i].NPC_X ;
rolY[i+1]=npc[i].NPC_Y ;
}
rolX[0]=X_intMan ;
rolY[0]=Y_intMan ;
Rorline();
for(int i=0; i<line.length;i++)
{
if (line[i] == 0)
{
Drawman();
}
else
{
//动画播放部分
npcimageX[line[i]-1] = npc[line[i]-1].Animation_run(npc[line[i]-1].NPCStatic);
//根据状态绘制
// int w= (npcimageX[i]>0||npcimageX[i]<5?3:8);
if (npc[line[i]-1].Hit == true)
{
if (shine[line[i]-1] == 0)
{
shine[line[i]-1] = 10;
}
npc[line[i]-1].Hit = false;
if (hit[line[i]-1] == 0)
hit[line[i]-1] = 2;
}
if (shine[line[i]-1] > 0)
shine[line[i]-1]--;
if (hit[line[i]-1] == 2)
{
npc[line[i]-1].life = npc[line[i]-1].life - HeroACT;
hit[line[i]-1] = 1;
}
if (shine[line[i]-1] % 2 == 0)
{
switch (npc[line[i]-1].NPCStatic)
{
case 0:
case 4:
m_View.Blt(npc[line[i]-1].NPC_X - m_Map.MapX,
npc[line[i]-1].NPC_Y - m_Map.MapY,
npc[line[i]-1].getwidth(npc[line[i]-1].NPCStatic),
npc[line[i]-1].getheight(npc[line[i]-1].NPCStatic),
npcimageX[line[i]-1], 0,
m_Surface_NPC_left);
if (npcimageX[line[i]-1] > 225)
hit[line[i]-1] = 0;
// m_View.m_g_BackGraphy.setColor(255);
// m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+3,Y_intMan-m_Map.MapY+20,16,16);
break;
case 1:
case 5:
m_View.Blt(npc[line[i]-1].NPC_X - m_Map.MapX,
npc[line[i]-1].NPC_Y - m_Map.MapY,
npc[line[i]-1].getwidth(npc[line[i]-1].NPCStatic),
npc[line[i]-1].getheight(npc[line[i]-1].NPCStatic),
npcimageX[line[i]-1], 0,
m_Surface_NPC_right);
if (npcimageX[line[i]-1] > 225)
hit[line[i]-1] = 0;
// m_View.m_g_BackGraphy.setColor(255);
// m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+3,Y_intMan-m_Map.MapY+20,16,16);
break;
case 2:
case 6:
m_View.Blt(npc[line[i]-1].NPC_X - m_Map.MapX - 7,
npc[line[i]-1].NPC_Y - m_Map.MapY + 1,
npc[line[i]-1].getwidth(npc[line[i]-1].NPCStatic),
npc[line[i]-1].getheight(npc[line[i]-1].NPCStatic),
npcimageX[line[i]-1], 0,
m_Surface_NPC_up);
if (npcimageX[line[i]-1] > 225)
hit[line[i]-1] = 0;
// m_View.m_g_BackGraphy.setColor(255);
// m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+3,Y_intMan-m_Map.MapY+20,16,16);
break;
case 3:
case 7:
m_View.Blt(npc[line[i]-1].NPC_X - m_Map.MapX - 7,
npc[line[i]-1].NPC_Y - m_Map.MapY + 1,
npc[line[i]-1].getwidth(npc[line[i]-1].NPCStatic),
npc[line[i]-1].getheight(npc[line[i]-1].NPCStatic),
npcimageX[line[i]-1], 0,
m_Surface_NPC_down);
if (npcimageX[line[i]-1] > 225)
hit[line[i]-1] = 0;
// m_View.m_g_BackGraphy.setColor(255);
// m_View.m_g_BackGraphy.fillRect(X_intMan-m_Map.MapX+3,Y_intMan-m_Map.MapY+20,16,16);
break;
}
//绘制NPC生命
m_View.m_g_BackGraphy.setColor(255);
m_View.m_g_BackGraphy.fillRect(npc[line[i]-1].NPC_X -
m_Map.MapX,
npc[line[i]-1].NPC_Y - m_Map.MapY - 5,
npc[line[i]-1].life / 3, 5);
}
}
}
}
public void GotoGameOver()
{
m_View.m_pge_gamerank.GotoGameRank(m_i_CurrStage);
m_View.m_pge_gameswitch.SwitchFrame(this, m_View.m_pge_gamerank);
}
private void DrawGameOver()
{
}
int line[]={-1,-1,-1};//排列结果
boolean role[]={false,false,false};//是否完 排序
int rolX[]={0,0,0};//元素X坐标
int rolY[]={0,0,0};//元素Y坐标
//绘制排序方法
public void Rorline()//排序过程
{
for(int i=0;i<3;i++)
{
role[i] =false;
line[i]=-1;
}
for(int i=0;i<3;i++)//取出排序元素`
{
int index=0;
int Y=10000;
int X=10000;
boolean getY=false;
boolean getX=false;
for(int j=0;j<3;j++)//未取出的元素中寻找最小值
{
if(Y>rolY[j] && !role[j])
{
Y=rolY[j];
index=j;
getY=true;
continue;
}
if ( X > rolX[j] &&!role[j] && !getY)
{
X=rolX[j];
index = j;
getX=true;
continue;
}
if ( X < rolX[j] &&
!role[j]&&!getY && !getX)
{
index = j;
continue;
}
if ( Y < rolY[j]&&
!role[j] &&!getY &&!getX)
{
index = j;
continue;
}
}
role[index] = true;
line[i] = index;
System.out.println("line["+i+"]"+line[i]);
}
}
//============================================END=
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -