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

📄 tankcanvas.java

📁 J2ME手机游戏源码 整个游戏有八个类组成: &#61548 主类:TankMIDlet &#61548 敌人坦克:Enemy &#61548 图片池:EnemyPool &#61548
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                    g.setColor(0x00, 0xfe, 0xfe);
                    g.drawString("开始游戏", CanvasWidth / 2, (CanvasHeight -
                        imgTitle.getHeight()) / 3+imgTitle.getHeight(), g.TOP |
                        g.HCENTER);
                    g.drawString("选择关卡", CanvasWidth / 2, (CanvasHeight -
                        imgTitle.getHeight()) / 3+imgTitle.getHeight() +
                        fontHeight, g.TOP | g.HCENTER);
                    g.drawString("游戏说明", CanvasWidth / 2, (CanvasHeight -
                        imgTitle.getHeight()) / 3+imgTitle.getHeight() + 2 *
                        fontHeight, g.TOP | g.HCENTER);
                    g.setColor(0xfe, 0x3f, 0x00);
                    g.drawString("退出程序", CanvasWidth / 2, (CanvasHeight -
                        imgTitle.getHeight()) / 3+imgTitle.getHeight() + 3 *
                        fontHeight, g.TOP | g.HCENTER);
                    break;
                default:
                    break;
                }
                break;
            default:
                break;
        }
    }
    private void drawGame(Graphics g)
    {
    	
    	if(!isPaused){
    		 g.setColor(0x3f, 0x3f, 0x3f);
        g.fillRect(0, 0, CanvasWidth, mapOffsetY);
        g.fillRect(0, 0, mapOffsetX, mapOffsetY+mapHeight);
        g.fillRect(mapOffsetX + mapWidth, 0, CanvasWidth - mapOffsetX - mapWidth, mapOffsetY+mapHeight);
        if (isShowLevel)
        {
            g.setColor(0);
            g.fillRect(0, 0, CanvasWidth, CanvasHeight);
            g.setColor(fadeColor, fadeColor, fadeColor);
            g.setFont(font);
            g.drawString("第 " + level + " 关", CanvasWidth / 2, CanvasHeight /
                2, 17);
            if (isFadeIn)
            {
                if (fadeColor < 0xfc)
                {
                 
                    fadeColor += 16;
                    if (fadeColor > 0xfc)
                    {
                        fadeColor -= 16;
                        isFadeIn = false;
                    }
                }
                else
                    isFadeIn = false;
            }
            else
            {
                if (fadeColor > 0)
                {
                   
                    fadeColor -= 16;
                    if (fadeColor < 0)
                    {
                        isShowLevel = false;
                    }
                }
                else
                {
                    isShowLevel = false;
                }
            }
            return ;
        }
        if ( isFirstTime ){
            isVictorShowed = false;
            g.setColor(0x3f, 0x3f, 0x3f);
            g.fillRect(0, 0, CanvasWidth, CanvasHeight);
        
            for ( i = 0; i < mapHeight/tileW; i += 2 ){
                for ( j = 0; j < mapWidth/tileW; j += 2 ){
                    switch( mapInfo[(i*mapWidth/tileW)+j] ) {
                    case 0:
                        g.drawImage(imgTile1, mapOffsetX+j*tileW, mapOffsetY+i*tileW, g.TOP|g.LEFT);
                        break;
                    case 1:
                        g.drawImage(imgTile2, mapOffsetX+j*tileW, mapOffsetY+i*tileW, g.TOP|g.LEFT);
                        break;
                    case 2:
                        g.drawImage(imgTile3, mapOffsetX+j*tileW, mapOffsetY+i*tileW, g.TOP|g.LEFT);
                        break;
                    case 3:
                        g.drawImage(imgTile4, mapOffsetX+j*tileW, mapOffsetY+i*tileW, g.TOP|g.LEFT);
                        break;
                    case 4:
                    case 5:
                    case 6:
                    case 7:
                        if ( !isVictorShowed ){
                            g.drawImage(imgVictor, mapOffsetX+j*tileW, mapOffsetY+i*tileW, g.TOP|g.LEFT);
                            isVictorShowed = true;
                        }
                    default:
                        break;
                    }
                }
            }
            g.setColor(0x0);
            if ( isNotationDown ){
                g.drawImage(imgLogoPlayer, mapOffsetX+mapWidth+2, mapOffsetY+2 , g.TOP|g.LEFT);
                g.drawImage(imgLogoEnemy, mapOffsetX+mapWidth+2, mapOffsetY+mapHeight/2, g.TOP|g.LEFT);
            }else {
                g.drawImage(imgLogoPlayer, mapOffsetX+2, mapOffsetY+mapHeight+2 , g.TOP|g.LEFT);
                g.drawImage(imgLogoEnemy, mapOffsetX+mapWidth/2, mapOffsetY+mapHeight+2, g.TOP|g.LEFT);
            }
            isFirstTime = false;
        }
       
         g.setFont(Font.getFont(Font.FACE_SYSTEM,  Font.STYLE_ITALIC, Font.SIZE_SMALL));
        if ( isNotationDown){		//draw the string
            g.setColor(0x3f, 0x3f, 0x3f);
            g.fillRect(mapOffsetX+mapWidth+1, mapOffsetY+hero.frameHeight+3, 20, fontHeight);
            g.fillRect(mapOffsetX+mapWidth+1, mapOffsetY+mapHeight/2+hero.frameHeight+2, 20, fontHeight);
            g.setColor(0xff, 0xff, 0xfe);
            g.drawString(" "+ life, mapOffsetX+mapWidth+2, mapOffsetY+hero.frameHeight+1, g.TOP|g.LEFT);
            g.drawString(" "+ leftEnemy, mapOffsetX+mapWidth+2, mapOffsetY+mapHeight/2+hero.frameHeight+0, g.TOP|g.LEFT);
        }else {				//vertical
            g.setColor(0x3f, 0x3f, 0x3f);
            g.fillRect(mapOffsetX+hero.frameWidth+3, mapOffsetY+mapHeight+1, 20, fontHeight);
            g.fillRect(mapOffsetX+mapWidth/2+hero.frameWidth+1, mapOffsetY+mapHeight+1, 20, fontHeight);
            g.setColor(0xff, 0xff, 0xfe);
            g.drawString(" "+ life, mapOffsetX+hero.frameWidth+2, mapOffsetY+mapHeight+1, g.TOP|g.LEFT);
            g.drawString(" "+ leftEnemy, mapOffsetX+mapWidth/2+hero.frameWidth, mapOffsetY+mapHeight+1, g.TOP|g.LEFT);
        }
      g.setColor(0xffffff);
      g.setFont(font);

	       
	       
	         if(reDraw ){
          
            if (bonus.formerBonusX != -1) {
                int fromX = bonus.formerBonusX - mapOffsetX - tileW*2;
                int fromY = bonus.formerBonusY - mapOffsetY - tileW*2;
                int toX = bonus.formerBonusX - mapOffsetX + bonus.bonusWidth + tileW*2;
                int toY = bonus.formerBonusY - mapOffsetY + bonus.bonusHeight + tileW*2;
              
                if(fromX<0){
                    fromX = 0;
                }else if((fromX%(tileW*2))!=0){
                    fromX = fromX - (fromX%(tileW*2));
                }
                if(fromY<0){
                    fromY = 0;
                }else if((fromY%(tileW*2))!=0){
                    fromY = fromY - (fromY%(tileW*2));
                }
                if(toX>mapWidth){
                    toX = mapWidth;
                }
                if(toY>mapHeight){
                    toY = mapHeight;
                }
               for (i = fromY / tileW;
                     i < toY / tileW;
                     i += 2) {
                    for (j = fromX / tileW;
                         j < toX / tileW;
                         j += 2) {
                        switch (mapInfo[ (i * mapWidth / tileW) + j]) {
                            case 0:
                                g.drawImage(imgTile1, mapOffsetX + j * tileW,
                                            mapOffsetY + i * tileW,
                                            g.TOP | g.LEFT);
                                break;
                            case 1:
                                g.drawImage(imgTile2, mapOffsetX + j * tileW,
                                            mapOffsetY + i * tileW,
                                            g.TOP | g.LEFT);
                                break;
                            case 2:
                                g.drawImage(imgTile3, mapOffsetX + j * tileW,
                                            mapOffsetY + i * tileW,
                                            g.TOP | g.LEFT);
                                break;
                            case 3:
                                g.drawImage(imgTile4, mapOffsetX + j * tileW,
                                            mapOffsetY + i * tileW,
                                            g.TOP | g.LEFT);
                                break;
                            default:
                                break;
                        }
                    }
                }
       }
   
       reDraw = false;

        }

        if(bonus.bonusKind!=0){
            bonus.paint(g);
        }
        
      
        if(bonus.bonusKind != 0){
            if (hero.isObjCollide(bonus.bonusX, bonus.bonusY,
                                  bonus.bonusWidth, bonus.bonusHeight)) {
                bonusMark = bonusMark + 500;
                switch(bonus.bonusKind){
                    case 1:  //timer
                        for ( i = 0; i < currentEnemy; i ++ ){
                            if (enemyAlive[i]) {
                                enemy[i].ifTimer = true;
                            }
                            ifTimer = true;
                            timeCount = 0;
                        }
                        break;
                    case 2:
                        if(bullet[0].starNum<3){
                            bullet[0].starNum = bullet[0].starNum + 1;
                        }
                        break;
                    case 3: 
                    
                        timeCount = 0;
                        for ( i = 0; i < currentEnemy; i ++ ){
                            enemy[i].alive = false;
                            if ( enemyAlive[i] ){
                                enemyAlive[i] = false;
                                leftEnemy--;
                                g.drawImage(bombImage, enemy[i].posX, enemy[i].posY, g.TOP|g.LEFT);
                                Point p = new Point(enemy[i].posX,enemy[i].posY);
                                tempPos.addElement(p);
                                enemy[i].posX = -1000;
                                enemy[i].posY = -1000;
                               
                                if(leftEnemy == 0){
                                    isWin = true;
                                    timeCount = 0;
                                }
                            }
                        }
                        break;
                    case 4:  
                        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(imgTile1,
                                                mapOffsetX + j * tileW,
                                                mapOffsetY + i * tileW,
                                                g.TOP | g.LEFT);
                                            break;
                                        case 1: 
                                            g.drawImage(imgTile3,
                                                mapOffsetX + j * tileW,
                                                mapOffsetY + i * tileW,
                                                g.TOP | g.LEFT);
                                            mapInfo[ (i * mapWidth / tileW) +
                                                j] = 2;
                                            break;
                                        default:
                                            break;
                                    }
                                }
                            }
                        }
                        timeCount = 0;
                        break;
                    case 5:  
                        life++;
                        break;
                    case 6:  
                        isCapped = true;
                        hero.isCapped = true;
                        timeCount = 0;
                        break;
                    default:
                        break;
                }
                bonus.bonusKind = 0;
                reDraw = true;
                bonus.formerBonusX = bonus.bonusX;
                bonus.formerBonusY = bonus.bonusY;
            }
        }
     
        if (timeCount == 15) {
            if(ifTimer){
                for (i = 0; i < currentEnemy; 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(imgTile1, mapOffsetX + j * tileW,
                                                mapOffsetY + i * tileW,
                                                g.TOP | g.LEFT);
                                    break;
                                case 2:
                                    g.drawImage(imgTile2, mapOffsetX + j * tileW,
                                                mapOffsetY + i * tileW,
                                                g.TOP | g.LEFT);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -