⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ictankcanvas.java.bak

📁 本j2me坦克游戏是在Nokia平台下开发的
💻 BAK
📖 第 1 页 / 共 5 页
字号:
                               // 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 + -