📄 hero.java
字号:
case 4:
g.drawImage(imgHeroDown, posX, posY, g.TOP | g.LEFT);
default:
break;
}
}
}
if (grassPaint)
{
canvas.grassPaint = true;
canvas.reDraw(3,g);
}
}
boolean isMapCollide()
{
boolean collFlag = false;
int collX, collY;
int i;
int tileW = canvas.tileW;
collX = posX - canvas.mapOffsetX;
collY = posY - canvas.mapOffsetY;
int pos = 0;
boolean movable = false;
boolean upCol = true;
boolean leftCol = true;
switch (direction & 0x0f)
{
case 1:
collX = collX - speed;
if (collX <= 0)
collFlag = true;
else
{
collFlag = false;
for (i = (collY / tileW * (canvas.mapWidth /
tileW) + collX / tileW); i <= ((collY + frameHeight) /
tileW * (canvas.mapWidth / tileW) + collX /
tileW); i += (canvas.mapWidth / tileW))
{
if (canvas.mapInfo[i] == 3)
{
grassPaint = true;
}
if (canvas.mapInfo[i] != 0 &&
canvas.mapInfo[i] != 3)
{
collFlag = true;
pos = i - (collY / tileW *
(canvas.mapWidth / tileW) + collX /
tileW);
if (pos <= (frameHeight / 8) / tileW *
(canvas.mapWidth / tileW))
{
upCol = true;
if (canvas.mapInfo[((collY +
frameHeight / 8) / tileW *
(canvas.mapWidth / tileW) + collX
/ tileW)] != 0 && canvas.mapInfo[
((collY + frameHeight / 8) / tileW *
(canvas.mapWidth / tileW) + collX
/ tileW)] != 3)
{
movable = false;
}
else
{
movable = true;
}
}
else if (pos >= (7 * frameHeight / 8) / tileW *
(canvas.mapWidth / tileW))
{
movable = true;
upCol = false;
}
else
{
movable = false;
}
break;
}
}
if (collFlag && movable)
{
if (upCol)
{
posY = posY + 1;
}
else
{
posY = posY - 1;
}
}
}
break;
case 2:
collX = collX + frameWidth + speed;
if (collX >= canvas.mapWidth)
collFlag = true;
else
{
collFlag = false;
for (i = (collY / tileW * (canvas.mapWidth /
tileW) + collX / tileW); i <= ((collY + frameHeight) /
tileW * (canvas.mapWidth / tileW) + collX /
tileW); i += (canvas.mapWidth / tileW))
{
if (canvas.mapInfo[i] == 3)
{
grassPaint = true;
}
if (canvas.mapInfo[i] != 0 &&
canvas.mapInfo[i] != 3)
{
collFlag = true;
pos = i - (collY / tileW *
(canvas.mapWidth / tileW) + collX /
tileW);
if (pos <= (frameHeight / 8) / tileW *
(canvas.mapWidth / tileW))
{
upCol = true;
if (canvas.mapInfo[((collY +
frameHeight / 8) / tileW *
(canvas.mapWidth / tileW) + collX
/ tileW)] != 0 && canvas.mapInfo[
((collY + frameHeight / 8) / tileW *
(canvas.mapWidth / tileW) + collX
/ tileW)] != 3)
{
movable = false;
}
else
{
movable = true;
}
}
else if (pos >= (7 * frameHeight / 8) / tileW *
(canvas.mapWidth / tileW))
{
movable = true;
upCol = false;
}
else
{
movable = false;
}
break;
}
}
if (collFlag && movable)
{
if (upCol)
{
posY = posY + 1;
}
else
{
posY = posY - 1;
}
}
}
break;
case 3:
collY = collY - speed;
if (collY <= 0)
collFlag = true;
else
{
collFlag = false;
for (i = (collY / tileW * (canvas.mapWidth /
tileW) + collX / tileW); i <= (collY / tileW *
(canvas.mapWidth / tileW) + (collX +
frameWidth) / tileW); i++)
{
if (canvas.mapInfo[i] == 3)
{
grassPaint = true;
}
if (canvas.mapInfo[i] != 0 &&
canvas.mapInfo[i] != 3)
{
collFlag = true;
pos = i - (collY / tileW *
(canvas.mapWidth / tileW) + collX /
tileW);
if (pos <= (frameWidth / 8) / tileW)
{
leftCol = true;
if (canvas.mapInfo[(collY / tileW *
(canvas.mapWidth / tileW) +
(collX + frameWidth / 8) / tileW)] != 0 &&
canvas.mapInfo[(collY / tileW *
(canvas.mapWidth / tileW) +
(collX + frameWidth / 8) / tileW)] != 3)
{
movable = false;
}
else
{
movable = true;
}
}
else if (pos >= (7 * frameWidth / 8) / tileW)
{
leftCol = false;
movable = true;
}
else
{
movable = false;
}
break;
}
}
if (collFlag && movable)
{
if (leftCol)
{
posX = posX + 1;
}
else
{
posX = posX - 1;
}
}
}
break;
case 4:
collY = collY + frameHeight + speed;
if (collY >= canvas.mapHeight)
collFlag = true;
else
{
collFlag = false;
for (i = (collY / tileW * (canvas.mapWidth /
tileW) + collX / tileW); i <= (collY / tileW *
(canvas.mapWidth / tileW) + (collX +
frameWidth) / tileW); i++)
{
if (canvas.mapInfo[i] == 3)
{
grassPaint = true;
}
if (canvas.mapInfo[i] != 0 &&
canvas.mapInfo[i] != 3)
{
collFlag = true;
pos = i - (collY / tileW *
(canvas.mapWidth / tileW) + collX /
tileW);
if (pos <= (frameWidth / 8) / tileW)
{
leftCol = true;
if (canvas.mapInfo[(collY / tileW *
(canvas.mapWidth / tileW) +
(collX + frameWidth / 8) / tileW)] != 0 &&
canvas.mapInfo[(collY / tileW *
(canvas.mapWidth / tileW) +
(collX + frameWidth / 8) / tileW)] != 3)
{
movable = false;
}
else
{
movable = true;
}
}
else if (pos >= (7 * frameWidth / 8) / tileW)
{
leftCol = false;
movable = true;
}
else
{
movable = false;
}
break;
}
}
if (collFlag && movable)
{
if (leftCol)
{
posX = posX + 1;
}
else
{
posX = posX - 1;
}
}
}
default:
break;
}
return collFlag;
}
boolean isObjCollide(int objX, int objY, int objWidth, int objHeight)
{
boolean collFlag = false;
int collX, collY;
int i;
collX = posX;
collY = posY;
switch (direction & 0x0f)
{
case 1:
collX = collX - speed;
break;
case 2:
collX = collX + speed;
break;
case 3:
collY = collY - speed;
break;
case 4:
collY = collY + speed;
default:
break;
}
if (collX < (objX + objWidth) && (collX + frameWidth) > objX && collY <
(objY + objHeight) && (collY + frameHeight) > objY)
collFlag = true;
return collFlag;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -