📄 ictankcanvas.java.bak
字号:
// g.fillRect(enemy[i].posX, enemy[i].posY,enemy[i].frameWidth,enemy[i].frameHeight);
if(numEnemy == 0){
gameWin = true;
overtimer.timeCounter = 0;
}
}
}
break;
case 4: //homeWall
if(!homeWall){
homeWall = true;
for (i = (mapHeight - tileW*6) / tileW;
i < (mapHeight) / tileW;
i += 2) {
for (j = (mapWidth / 2 - tileW*4) / tileW;
j < (mapWidth / 2 + tileW*4) / tileW;
j += 2) {
switch (mapInfoFormer[ (i * mapWidth / tileW) +
j]) {
case 0:
g.drawImage(tile1,
mapOffsetX + j * tileW,
mapOffsetY + i * tileW,
g.TOP | g.LEFT);
break;
case 1: //draw the brick as iron
g.drawImage(tile3,
mapOffsetX + j * tileW,
mapOffsetY + i * tileW,
g.TOP | g.LEFT);
mapInfo[ (i * mapWidth / tileW) +
j] = 2;
break;
case 2:
/* g.drawImage(tile3, mapOffsetX + j * 3,
mapOffsetY + i * 3,
g.TOP | g.LEFT);*/
break;
case 3:
/* g.drawImage(tile4, mapOffsetX + j * 3,
mapOffsetY + i * 3,
g.TOP | g.LEFT);*/
break;
case 4:
case 5:
case 6:
case 7:
default:
break;
}
}
}
}
ictimer.timeCounter = 0;
break;
case 5: //bonus tanker
life++;
break;
case 6: //cap
cap = true;
hero.capped = true;
ictimer1.timeCounter = 0;
break;
default:
break;
}
symboll.symbolState = 0;
reDraw = true;
symboll.formerSymbolX = symboll.symbolX;
symboll.formerSymbolY = symboll.symbolY;
}
}
//cancel the timer
if (ictimer.timeCounter >= 15) {
if(ifTimer){
for (i = 0; i < maxEnemy; i++) {
if (enemyAlive[i]) {
enemy[i].ifTimer = false;
}
}
ifTimer = false;
}
if (homeWall) {
for (i = (mapHeight - tileW*6) / tileW;
i < (mapHeight) / tileW;
i += 2) {
for (j = (mapWidth / 2 - tileW*4) / tileW;
j < (mapWidth / 2 + tileW*4) / tileW;
j += 2) {
switch (mapInfo[ (i * mapWidth / tileW) + j]) {
case 0:
g.drawImage(tile1, mapOffsetX + j * tileW,
mapOffsetY + i * tileW,
g.TOP | g.LEFT);
break;
case 1: //draw the brick as iron
/* g.drawImage(tile3, mapOffsetX + j * 3,
mapOffsetY + i * 3,
g.TOP | g.LEFT);
mapInfo[ (i * mapWidth / 3) + j] = 2;*/
break;
case 2:
g.drawImage(tile2, mapOffsetX + j * tileW,
mapOffsetY + i * tileW,
g.TOP | g.LEFT);
mapInfo[ (i * mapWidth / tileW) + j] = 1;
break;
case 3:
/* g.drawImage(tile4, mapOffsetX + j * 3,
mapOffsetY + i * 3,
g.TOP | g.LEFT);*/
break;
case 4:
case 5:
case 6:
case 7:
default:
break;
}
}
}
homeWall = false;
}
}
//cancel the cap
if (ictimer1.timeCounter >= 10) {
cap = false;
hero.capped = false;
}
//add by johnson to realize adding new enemy
timeCount++;
if(timeCount == 10){ //erase the bomb image
if(tempPos.size()!=0){
g.setColor(0x0);
for(i=0;i<tempPos.size();i++){
Point p = (Point)tempPos.elementAt(i);
g.fillRect(p.x,p.y,12,12);
}
tempPos.removeAllElements();
}
}
if(timeCount == 40){
// now how many enemy tankers are alive
liveCount = 0;
for (i = 0; i < maxEnemy; i++) {
if (enemyAlive[i]) {
liveCount++;
}
}
timeCount = 0;
if(maxEnemy<maxShowEnemy&&maxEnemy<numEnemy){
maxEnemy++;
//enemy[maxEnemy-1] = new Enemy(kind);
//System.out.println("numPos1="+numPos);
enemy[maxEnemy-1] = enemy[numPos];
numPos++;
enemy[maxEnemy-1].alive = true;
enemyAlive[maxEnemy-1] = true;
int pos = (maxEnemy-1)%3;
switch(pos) {
case 0:
enemy[maxEnemy-1].posX = mapOffsetX + mapWidth/2 - enemy[maxEnemy-1].frameWidth/2;
enemy[maxEnemy-1].posY = mapOffsetY + enemy[maxEnemy-1].frameHeight;
break;
case 1:
enemy[maxEnemy-1].posX = mapOffsetX;
enemy[maxEnemy-1].posY = mapOffsetY + enemy[maxEnemy-1].frameHeight;
break;
case 2:
enemy[maxEnemy-1].posX = mapOffsetX + mapWidth - enemy[maxEnemy-1].frameWidth;
enemy[maxEnemy-1].posY = mapOffsetY + enemy[maxEnemy-1].frameHeight;
default:
break;
}
//if in the timer process, the new born tanker should also be timered
if(ifTimer){
enemy[maxEnemy-1].ifTimer = true;
}
for ( int i0 = 0; i0 < maxEnemy-1; i0 ++ ){
if ( enemyAlive[i0] ) {
if ( enemy[i0].isobjCollide( enemy[maxEnemy-1].posX, enemy[maxEnemy-1].posY ) ){
enemy[maxEnemy-1].alive = false;
enemyAlive[maxEnemy-1] = false;
enemy[maxEnemy-1].ifTimer = false;
maxEnemy--;
numPos--;
break;
}
}
}
}
}
//----add new enemy finished here
for ( i = 0; i < maxEnemy; i ++ ){
if ( enemyAlive[i] ) {
enemy[i].paint(g);
// Check tank collision
for ( j = 0; j < maxEnemy; j ++ ){
if ( i == j )
continue;
if ( enemy[j].alive ) {
//collide with enemy
if ( enemy[i].isobjCollide( enemy[j].posX, enemy[j].posY ) ){
enemy[i].direction = (enemy[i].direction ^ 7)&3;
if ( enemy[i].direction == 0 )
enemy[i].direction = 4;
}
}
}
//collide with hero
if ( enemy[i].isobjCollide( hero.posX, hero.posY ) && (hero.status == 1) ){
enemy[i].direction = (enemy[i].direction ^ 7)&3;
if ( enemy[i].direction == 0 )
enemy[i].direction = 4;
if(!cap){ //when there is no cap protection
hero.status = 7;
hero.direction = hero.direction & 0x0f;
hero.count = 8;
}else{
hero.direction = (hero.direction ^ 7)&3;
}
}
if ( bullet[0].alive && (bullet[0].isobjCollide( enemy[i].posX, enemy[i].posY, enemy[i].frameWidth, enemy[i].frameHeight )) && (!bullet[0].bombFlag) ){
sD[0].stop();
sD[1].stop();
sD[0].play(1);
//account the number of the beat tanker
switch(enemy[i].kind){
case 0:
normalNum++;
break;
case 1:
redNum++;
break;
case 2:
if(enemy[i].lifeCount == 1){
greenNum++;
}
break;
case 3:
superNum++;
break;
default:
break;
}
//add by johnson
if(enemy[i].kind == 1){
reDraw = true;
symboll.formerSymbolX = symboll.symbolX;
symboll.formerSymbolY = symboll.symbolY;
Random r = new Random();
//restore later
int num = Math.abs(r.nextInt()%6)+1;
//int num = 3;
symboll.symbolState = num;
symboll.symbolX = Math.abs(r.nextInt() % (mapWidth - 50)) +
mapOffsetX;
symboll.symbolY = Math.abs(r.nextInt() %
(mapHeight - 50)) + mapOffsetY;
}
//end adding
if(enemy[i].kind == 2){
enemy[i].lifeCount--;
// System.out.println("enemy[i].lifeCount="+enemy[i].lifeCount);
if(enemy[i].lifeCount!=0){
bullet[0].alive = false;
g.fillRect(bullet[0].posX,bullet[0].posY,bullet[0].frameWidth,bullet[0].frameHeight);
}
}
if(enemy[i].lifeCount <= 0){
bullet[0].BposX = enemy[i].posX;
bullet[0].BposY = enemy[i].posY;
bullet[0].bombFlag = true;
bullet[0].bombCount = 8;
enemyAlive[i] = false;
numEnemy--;
enemyover = true;
}
if ( numEnemy == 0 ){
gameWin = true;
overtimer.timeCounter = 0;
}
g.fillRect(enemy[i].posX, enemy[i].posY, enemy[i].frameWidth, enemy[i].frameHeight);
if(enemy[i].lifeCount <= 0){
if(i!=maxEnemy-1){
enemy[i].posX = -1000;
enemy[i].posY = -1000;
}
}
}
} else {
if ( numEnemy >= maxEnemy ||(numEnemy>0&&liveCount<maxEnemy&&liveCount<numEnemy)){
//add by johnson
liveCount++;
Random r = new Random();
j = Math.abs(r.nextInt()%3);
enemy[i] = enemy[numPos];
numPos++;
switch(j) {
case 0:
enemy[i].posX = mapOffsetX + mapWidth/2 - enemy[0].frameWidth/2;
enemy[i].posY = mapOffsetY + 2;
break;
case 1:
enemy[i].posX = mapOffsetX;
enemy[i].posY = mapOffsetY + 2;
break;
case 2:
enemy[i].posX = mapOffsetX + mapWidth - enemy[2].frameWidth;
enemy[i].posY = mapOffsetY + 2;
default:
break;
}
enemy[i].alive = true;
enemyAlive[i] = true;
if(enemy[i].kind == 2){
enemy[i].lifeCount = 3;
}
if(ifTimer){
enemy[i].ifTimer = true;
}
// maxEnemy++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -