?? npc.java
字號:
if (cpc.bVar == CPC.B_VAR_DOOR) {
r1x1 = cpc.nX;
r1y1 = cpc.nY;
r1x2 = cpc.nX + 16;
r1y2 = cpc.nY + 16;
r2x1 = nX;
r2y1 = nY;
r2x2 = nX + 16;
r2y2 = nY + 16;
if (r2y1 == cpc.nY) {
if (r2x1 + 16 == cpc.nX) {
isMapChange = true;
}
if (r2x1 - 16 == cpc.nX) {
isMapChange = true;
}
}
if (r2x1 == cpc.nX) {
if (r2y1 + 16 == cpc.nY) {
isMapChange = true;
}
if (r2y1 - 16 == cpc.nY) {
isMapChange = true;
}
}
if (isMapChange) {
MyGameCanvas.instance.nMapId = cpc.nMapID;
MyGameCanvas.instance
.doStateChange(MyGameCanvas.SB_STATE_GAMEING);
break;
}
}
}
// 寶物箱
for (int i = 0; i < MyGameCanvas.vecticUnits.size(); i++) {
CPC cpc = (CPC) MyGameCanvas.vecticUnits.elementAt(i);
if (cpc.bVar == CPC.B_VAR_SAVING) {
boolean tff = false;
if (!cpc.isOpened) {
// Consts.log("hello");
if (r2y1 == cpc.nY) {
if (r2x1 + 16 == cpc.nX) {
if (Canvas.RIGHT == bDirection) {
tff = true;
}
}
if (r2x1 - 16 == cpc.nX) {
if (Canvas.LEFT == bDirection) {
tff = true;
}
}
}
if (r2x1 == cpc.nX) {
if (r2y1 + 16 == cpc.nY) {
if (Canvas.DOWN == bDirection) {
tff = true;
}
}
if (r2y1 - 16 == cpc.nY) {
if (Canvas.UP == bDirection) {
tff = true;
}
}
}
if (tff) {
cpc.isOpened = true;
// adddomoe
cpc.anim.changeAction(Canvas.DOWN);
cpc.anim.isStop = true;
// Consts.log("heello");
isFighting = false;
nHP = nHPMax;
MyGameCanvas.instance.strInfo = new String(
"生命值全滿");
break;
}
}
}
}
if (isFighting) {
int num = 0;
for (int i = 0; i < MyGameCanvas.instance.vecticUnits
.size(); i++) {
CPC cpc = (CPC) MyGameCanvas.instance.vecticUnits
.elementAt(i);
if (cpc.bVar == CPC.B_VAR_BOMB) {
num++;
}
}
if (num < MyGameCanvas.instance.nBombNumCMax) {
MyGameCanvas.instance.cpc2 = new CPC(
(byte) CPC.B_VAR_BOMB);
MyGameCanvas.instance.cpc2.initBasic("LISA_BALL", 16,
20, bDirection, 0, true, true, 0);
MyGameCanvas.instance.cpc2.initAbsXY(nX, nY);
MyGameCanvas.instance.cpc2.initParam(10, 50, 50, 50,
50, 50, nAttackPower, 2);
MyGameCanvas.instance.cpc2.initAnim(MyGameCanvas.instance.animBomb.copy());
// MyGameCanvas.instance.cpc2.anim.changeAction(bDirection);
// MyGameCanvas.instance.cpc2.anim.isStop = true;
if (isBoomHere(MyGameCanvas.instance.cpc2.nX,
MyGameCanvas.instance.cpc2.nY)) {
// Consts.log("不能放置東西");
} else {
MyGameCanvas.instance.vecticUnits
.addElement(MyGameCanvas.instance.cpc2);
}
MyGameCanvas.instance.cpc2 = null;
}
//
}
} else {
for (int i = 0; i < MyGameCanvas.vecticUnits.size(); i++) {
CPC cpc = (CPC) MyGameCanvas.vecticUnits.elementAt(i);
if (cpc.bVar == CPC.B_VAR_BOX) {
if (cpc.isHandleByNPC) {
cpc.downBox();
break;
}
}
}
}
}
break;
default: {
isMoving = false;
anim.isStop = true;
}
break;
}
}
public boolean isBoomHere(int x, int y) {
for (int i = 0; i < MyGameCanvas.instance.vecticUnits.size(); i++) {
CPC cpc = (CPC) MyGameCanvas.instance.vecticUnits.elementAt(i);
if (cpc.bVar == cpc.B_VAR_BOMB) {
if (cpc.nX == x && cpc.nY == y) {
return true;
}
}
}
return false;
}
// up down left right ,是否檢測墻體?
// 對于特殊位置的碰撞進行單獨的處理
public boolean[] getCollosionWithMap(int x, int y) {
boolean[] flags = new boolean[4];
int tx[] = new int[4];
int ty[] = new int[4];
for (int i = 0; i < flags.length; i++) {
flags[i] = false;
}
for (int i = 0; i < 4; i++) {
for (int j = 0; j < nRectCollosion[i].length; j++) {
boolean flag = false;
int t_x0 = nRectCollosion[i][j][0] + x;
int t_y0 = nRectCollosion[i][j][1] + y;
int t_x1 = nRectCollosion[i][j][2] + x;
int t_y1 = nRectCollosion[i][j][3] + y;
tx[0] = t_x0 + 1;
ty[0] = t_y0 + 1;
tx[1] = t_x1 - 1;
ty[1] = t_y0 + 1;
tx[2] = t_x0 + 1;
ty[2] = t_y1 - 1;
tx[3] = t_x1 - 1;
ty[3] = t_y1 - 1;
for (int m = 0; m < 4; m++) {
int tempx = tx[m] / Consts.SN_TILE_WIDTH;
int tempy = ty[m] / Consts.SN_TILE_HEIGHT;
if (!MyGameCanvas.isXYInTiles(tempx, tempy,
MyGameCanvas.snsTiles)) {
flags[i] = true;
flag = true;
break;
} else {
byte block_val = Consts
.getTileVar((short) MyGameCanvas.snsTiles[tempy][tempx]);
if (Consts.SB_TILE_NULL != block_val) {
flags[i] = true;
flag = true;
break;
}
}
}
if (flag) {
break;
}
}
}
return flags;
}
public boolean isCollsionWithCPC(int dir) {
int r1x1 = 0;
int r1y1 = 0;
int r1x2 = 0;
int r1y2 = 0;
int r2x1 = nX;
int r2y1 = nY;
int r2x2 = nX + 16;
int r2y2 = nY + 16;
for (int i = 0; i < MyGameCanvas.vecticUnits.size(); i++) {
CPC cpc = (CPC) (MyGameCanvas.vecticUnits.elementAt(i));
r1x1 = cpc.nX;
r1y1 = cpc.nY;
r1x2 = cpc.nX + 16;
r1y2 = cpc.nY + 16;
if (MyGameCanvas.isIntersectRect(r1x1, r1y1, r1x2, r1y2, r2x1,
r2y1, r2x2, r2y2)) {
if (cpc.bVar == CPC.B_VAR_BOX || cpc.bVar == CPC.B_VAR_NPC
|| cpc.bVar == CPC.B_VAR_DOOR
|| cpc.bVar == CPC.B_VAR_SAVING) {
if (cpc.bVar == CPC.B_VAR_BOX) {
if (MyGameCanvas.instance.npcLisa.isHandleCPC) {
if (cpc.isHandleByNPC == true) {
continue;
}
}
}
return true;
}
if (isHandleCPC) {
if (cpc.bVar == CPC.B_VAR_BOMB
|| cpc.bVar == CPC.B_VAR_BOSS_SNAKE
|| cpc.bVar == CPC.B_VAR_ZHEN) {
if (cpc.bVar == CPC.B_VAR_BOSS_SNAKE) {
delHp(-1);
}
if (cpc.bVar == CPC.B_VAR_ZHEN) {
if (cpc.bBossState == 2) {
delHp(-1);
}
}
} else {
if (cpc.bVar == CPC.B_VAR_BOMB
|| cpc.bVar == CPC.B_VAR_BOSS_SNAKE
|| cpc.bVar == CPC.B_VAR_ZHEN) {
delHp(-1);
} else {
if (cpc.bVar == CPC.B_VAR_MAGIC_CPC_FIRE_BALL
|| cpc.bVar == CPC.B_VAR_RABIT
|| cpc.bVar == CPC.B_VAR_WORM) {
delHp(-1);
}
// return true;
}
}
} else {
if (cpc.bVar == CPC.B_VAR_BOMB
|| cpc.bVar == CPC.B_VAR_BOSS_SNAKE
|| cpc.bVar == CPC.B_VAR_ZHEN) {
if (cpc.bVar == CPC.B_VAR_BOSS_SNAKE) {
delHp(-1);
}
if (cpc.bVar == CPC.B_VAR_ZHEN) {
if (cpc.bBossState == 2) {
delHp(-1);
}
}
} else {
if (cpc.bVar == CPC.B_VAR_MAGIC_CPC_FIRE_BALL
|| cpc.bVar == CPC.B_VAR_RABIT
|| cpc.bVar == CPC.B_VAR_WORM) {
delHp(-1);
}
// return true;
}
}
}
}
return false;
}
public boolean isCollsionWithMap(int dir, boolean[] br) {
boolean flag = false;
switch (dir) {
case Canvas.UP: {
flag = br[0];
}
break;
case Canvas.DOWN: {
flag = br[1];
}
break;
case Canvas.LEFT: {
flag = br[2];
}
break;
case Canvas.RIGHT: {
}
break;
}
return flag;
}
public void setDirection(byte dir) {
bDirection = dir;
anim.changeAction(dir);
}
//
public void addHP(int hp_num) {
nHP += hp_num;
if (nHP > nHPMax) {
nHP = nHPMax;
}
}
public void addMP(int mp_num) {
nMP += mp_num;
if (nMP > nMPMax) {
nMP = nMPMax;
}
}
int nHpTimer = 0;
int nHpTimerMax = 10;
public void delHp(int val) {
if (MyGameCanvas.instance.bGameResult == 0) {
if (nHpTimer >= nHpTimerMax) {
nHP += val;
nHpTimer = 0;
}
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -