📄 enemy.java
字号:
g.drawImage(enemyDown, posX, posY, g.TOP|g.LEFT); default: break; } if(grassPaint){ SuperTank.canvas.grassPaint = true; // SuperTank.canvas.reDraw(3,g); } } boolean ismapCollide() { boolean collFlag = false; int collX, collY; int i; int tileW = SuperTank.canvas.tileW; collX = posX-SuperTank.canvas.mapOffsetX; collY = posY-SuperTank.canvas.mapOffsetY; switch(direction & 0x0f) { case 1: //left collX = collX - speed; if ( collX <= 0 ) collFlag = true; else { collFlag = false; for ( i = (collY/tileW * (SuperTank.canvas.mapWidth/tileW) + collX/tileW); i <= ((collY + frameHeight)/tileW * (SuperTank.canvas.mapWidth/tileW) + collX/tileW); i += (SuperTank.canvas.mapWidth/tileW) ){ if (SuperTank.canvas.mapInfo[i] == 3) { grassPaint = true; } if ( SuperTank.canvas.mapInfo[i] != 0 && SuperTank.canvas.mapInfo[i] != 3){ collFlag = true; break; } } } break; case 2: //right collX = collX + frameWidth + speed; if (collX >= SuperTank.canvas.mapWidth) collFlag = true; else { collFlag = false; for ( i = (collY/tileW * (SuperTank.canvas.mapWidth/tileW) + collX/tileW); i <= ((collY + frameHeight)/tileW * (SuperTank.canvas.mapWidth/tileW) + collX/tileW); i += (SuperTank.canvas.mapWidth/tileW) ){ if (SuperTank.canvas.mapInfo[i] == 3) { grassPaint = true; } if ( SuperTank.canvas.mapInfo[i] != 0 && SuperTank.canvas.mapInfo[i] != 3){ collFlag = true; break; } } } break; case 3: //up collY = collY - speed; if (collY <= 0) collFlag = true; else { collFlag = false; for ( i = (collY/tileW * (SuperTank.canvas.mapWidth/tileW) + collX/tileW); i <= (collY/tileW * (SuperTank.canvas.mapWidth/tileW) + (collX + frameWidth)/tileW); i ++ ){ if (SuperTank.canvas.mapInfo[i] == 3) { grassPaint = true; } if ( SuperTank.canvas.mapInfo[i] != 0 && SuperTank.canvas.mapInfo[i] != 3){ collFlag = true; break; } } } break; case 4: //down collY = collY + frameHeight + speed; if (collY >= SuperTank.canvas.mapHeight) collFlag = true; else { collFlag = false; for ( i = (collY/tileW * (SuperTank.canvas.mapWidth/tileW) + collX/tileW); i <= (collY/tileW * (SuperTank.canvas.mapWidth/tileW) + (collX + frameWidth)/tileW); i ++ ){ if (SuperTank.canvas.mapInfo[i] == 3) { grassPaint = true; } if ( SuperTank.canvas.mapInfo[i] != 0 && SuperTank.canvas.mapInfo[i] != 3){ collFlag = true; break; } } } break; default: break; } return collFlag; } boolean isobjCollide( int objX, int objY ) { boolean collFlag = false; int collX, collY; int i; collX = posX; collY = posY; switch(direction & 0x0f) { case 1: //left collX = collX - speed; break; case 2: //right collX = collX + speed; break; case 3: //up collY = collY - speed; break; case 4: //down collY = collY + speed; default: break; } if ( collX < (objX + frameWidth) && (collX + frameWidth) > objX && collY < (objY + frameHeight) && (collY + frameHeight) > objY ) collFlag = true; return collFlag; } int tankAI() { int direction_bak; direction_bak = direction; if (kind == 3) { if ( (direction & 0x0f) == 4 | (direction & 0x0f) == 3) { if ( (direction_bak & 0x0f) == 3) { //check up direction = 4; if (!ismapCollide()) return direction | 0x10; } if ( (myrandom.nextInt() & 1) == 0) { //check left direction = 1; if (!ismapCollide()) return direction | 0x10; //check right direction = 2; if (!ismapCollide()) return direction | 0x10; } else { //check right direction = 2; if (!ismapCollide()) return direction | 0x10; //check left direction = 1; if (!ismapCollide()) return direction | 0x10; } if ( (direction_bak & 0x0f) == 3) { //check up direction = 4; if (!ismapCollide()) return direction | 0x10; } else { //check down direction = 3; if (!ismapCollide()) return direction | 0x10; } } if ( (direction & 0x0f) == 2 | (direction & 0x0f) == 1) { if ( (myrandom.nextInt() & 1) == 0) { //check up direction = 4; if (!ismapCollide()) return direction | 0x10; //check down direction = 3; if (!ismapCollide()) return direction | 0x10; } else { //check down direction = 3; if (!ismapCollide()) return direction | 0x10; //check up direction = 4; if (!ismapCollide()) return direction | 0x10; } if ( (direction_bak & 0x0f) == 1) { //check left direction = 2; if (!ismapCollide()) return direction | 0x10; } else { //check right direction = 1; if (!ismapCollide()) return direction | 0x10; } } } else { if ( (direction & 0x0f) == 4 | (direction & 0x0f) == 3) { if ( (myrandom.nextInt() & 1) == 0) { //check left direction = 1; if (!ismapCollide()) return direction | 0x10; //check right direction = 2; if (!ismapCollide()) return direction | 0x10; } else { //check right direction = 2; if (!ismapCollide()) return direction | 0x10; //check left direction = 1; if (!ismapCollide()) return direction | 0x10; } if ( (direction_bak & 0x0f) == 3) { //check up direction = 4; if (!ismapCollide()) return direction | 0x10; } else { //check down direction = 3; if (!ismapCollide()) return direction | 0x10; } } if ( (direction & 0x0f) == 2 | (direction & 0x0f) == 1) { if ( (myrandom.nextInt() & 1) == 0) { //check up direction = 4; if (!ismapCollide()) return direction | 0x10; //check down direction = 3; if (!ismapCollide()) return direction | 0x10; } else { //check down direction = 3; if (!ismapCollide()) return direction | 0x10; //check up direction = 4; if (!ismapCollide()) return direction | 0x10; } if ( (direction_bak & 0x0f) == 1) { //check left direction = 2; if (!ismapCollide()) return direction | 0x10; } else { //check right direction = 1; if (!ismapCollide()) return direction | 0x10; } } } return direction_bak; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -