亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gamescene.java

?? 還記得兒時在游戲機上玩坦克大戰嗎?如今這種經典游戲不在游戲機上玩了
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
//------------------------------------------------------------------------------
//                         COPYRIGHT 2007 GUIDEBEE
//                           ALL RIGHTS RESERVED.
//                     GUIDEBEE CONFIDENTIAL PROPRIETARY
///////////////////////////////////// REVISIONS ////////////////////////////////
// Date       Name                 Tracking #         Description
// ---------  -------------------  ----------         --------------------------
// 15JAN2008  James Shen                 	      Initial Creation
////////////////////////////////////////////////////////////////////////////////
//Permission is hereby granted, free of charge, to any person obtaining a copy
//of this software and associated documentation files (the "Software"), to deal
//in the Software without restriction, including without limitation the rights
//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//copies of the Software, and to permit persons to whom the Software is
//furnished to do so, subject to the following conditions:
//
//The above copyright notice and this permission notice shall be included in all
//copies or substantial portions of the Software.
//
//The Software shall be used for Good, not Evil.
//
//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
//SOFTWARE.
//Any questions, feel free to drop me a mail at james.shen@guidebee.biz.
//--------------------------------- PACKAGE ------------------------------------
package com.pstreets.game.battlecity;

//--------------------------------- IMPORTS ------------------------------------
import java.io.*;
import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

//[------------------------------ MAIN CLASS ----------------------------------]
////////////////////////////////////////////////////////////////////////////////
//--------------------------------- REVISIONS ----------------------------------
// Date       Name                 Tracking #         Description
// --------   -------------------  -------------      --------------------------
// 15JAN2008  James Shen                 	      Initial Creation
////////////////////////////////////////////////////////////////////////////////
/**
 * The scene screen for the game.
 * <p>
 * <hr><b>&copy; Copyright 2008 Guidebee, Inc. All Rights Reserved.</b>
 * @version     1.00, 15/01/08
 * @author      Guidebee, Inc.
 */
public final class GameScene extends GameCanvas implements Runnable{
    
    ////////////////////////////////////////////////////////////////////////////
    //Game content variables,here used class public static member variables.
    /**
     * enemy tank killed in each level for each tank type.
     */
    public static int []enemyTanksCount=new int[4];
    
    /**
     * Total enemy tanks in one leve.
     */
    private static final int TOTAL_ENEMY_TANKS=20;
    
    /**
     * total enemy tanks remains.
     */
    public static int enemyTankRemains=TOTAL_ENEMY_TANKS;
    
    /**
     * whether can put a poweup, it's because a red tank is been shot dead or
     * in the given period.
     */
    public static boolean canPutPowerup=false;
    
    ////////////////////////////////////////////////////////////////////////////
    
    /**
     * The layer manager manage all actors in the game.
     */
    private LayerManager layerManager=new LayerManager();
    
    /**
     * Player's tank.
     */
    private PlayerTank playerTank;
    
    /**
     * Resource Manager.
     */
    private static ResourceManager resourceManager=ResourceManager.getInstance();
    
    /**
     * The battle field object.
     */
    private BattleField battleField=null;
    
    /**
     * This thread is core game logic.
     */
    private volatile Thread animationThread = null;
    
    /**
     * time taken and MILLIS_PER_TICK control the game speed
     */
    private long timeTaken = 0;
    
    /**
     *time taken and MILLIS_PER_TICK control the game speed
     */
    private static final int MILLIS_PER_TICK = 1;
    
    /**
     * the width of the game scene.
     */
    private static int sceneWidth;
    
    /**
     * the height of the game scene.
     */
    private static int sceneHeight;
    
    /**
     * the height of the score bar.
     */
    private static int barHeight=32;
    
    /**
     * the X origin of the battle field.
     */
    private int battleFieldX;
    
    /**
     * the Y origin of the battle field.
     */
    private int battleFieldY;
    
    /**
     * default lives of player
     */
    private final static int DEFAULT_PLAYER_LIVE=9;
    
    /**
     *  maximum game leves.
     */
    private static final int TOTAL_GAME_LEVELS=50;
    
    /**
     * total actors in the scene.
     */
    private int totalLayers=0;
    
    /**
     * is game over?
     */
    private boolean isGameover=false;
    
    /**
     * game over image
     */
    private static Image imgGameover=
            resourceManager.getImage(ResourceManager.GAME_OVER_SMALL);
    
    /**
     * pause image
     */
    private static Image imgPause=
            resourceManager.getImage(ResourceManager.PAUSE);
    
    /**
     * black number image from 0 to 9
     */
    private static Image imgNumberBlack=
            resourceManager.getImage(ResourceManager.NUMBER_BLACK);
    
    /**
     * enemy icon
     */
    private static Image imgEnemyIcon=
            resourceManager.getImage(ResourceManager.ENEMY_ICON);
    
    /**
     * first player icon
     */
    private static Image imgIP=
            resourceManager.getImage(ResourceManager.IP);
    
    /**
     * flag image
     */
    private static Image imgFlag=
            resourceManager.getImage(ResourceManager.FLAG);
    
    /**
     * offset X where start to draw the score bar
     */
    private int marginX=0;
    
    /**
     * offset Y where start to draw the score bar
     */
    private int marginY=0;
    
    /**
     * Random object to create random numbers.
     */
    private static Random rnd=new Random();
    
    /**
     * time control to create new enemy tank
     */
    private long enemySpawnStartTime=0;
    
    /**
     * minimun spawn timer
     */
    private final static long enemySpawnPeriod=2000;
    
    /**
     * timer control when to put an poweup in the battle field
     */
    private long putPowerupStartTime=0;
    
    /**
     * put poweup minimum period, 2 minutes
     */
    private final static long putPowerupPeriod=120000;
    
    /**
     * display game over or pause
     */
    private static Sprite gameStatus=null;
    
    /**
     * timer control when game over to display game over image,from bottom
     * to the middle of the screen.
     */
    private long gameOverStartTime=0;
    
    /**
     * after this period, display the score screen,default 4 seconds.
     */
    private final static long gameOverPeriod=4000;
    
    
    ////////////////////////////////////////////////////////////////////////////
    //--------------------------------- REVISIONS ------------------------------
    // Date       Name                 Tracking #         Description
    // ---------  -------------------  -------------      ----------------------
    // 19JAN2008  James Shen                 	          Initial Creation
    ////////////////////////////////////////////////////////////////////////////
    /**
     * Constructor.
     */
    public GameScene() {
        super(false);
        setFullScreenMode(true);
        sceneWidth=getWidth();
        sceneHeight=getHeight();
        try{
            int xTiles=sceneWidth/ResourceManager.TILE_WIDTH;
            int yTiles=(sceneHeight-barHeight)/ResourceManager.TILE_WIDTH;
            if(xTiles % 2 ==0) xTiles--;
            xTiles=Math.min(xTiles,yTiles);
            yTiles=xTiles;
            battleFieldX=(sceneWidth-xTiles*ResourceManager.TILE_WIDTH)/2;
            battleFieldY=(sceneHeight-battleFieldX-xTiles*ResourceManager.TILE_WIDTH);
            battleField=new BattleField(xTiles,yTiles);
            battleField.initBattlefield(this.getClass().getResourceAsStream("/1.txt"));
            Powerup.setBattleField(battleField);
            Powerup.setLayerManager(layerManager);
            Tank.setBattleField(battleField);
            Tank.setLayerManager(layerManager);
            Bullet.setBattleField(battleField);
            Bullet.setLayerManager(layerManager);
            Explosion.setBattleField(battleField);
            Explosion.setLayerManager(layerManager);
            Score.setBattleField(battleField);
            Score.setLayerManager(layerManager);
            playerTank=Tank.getPlayerTank();
            layerManager.append(battleField);
            int offset=8;
            marginX=(sceneWidth-(imgEnemyIcon.getWidth()*10+offset*2
                    +imgIP.getWidth()+imgFlag.getWidth()+imgNumberBlack.getHeight()))/2;
            marginY=(sceneHeight-battleField.getHeight())/2;
            totalLayers=layerManager.getSize();
            gameStatus=new Sprite(imgGameover);
            gameStatus.setPosition((sceneWidth-gameStatus.getWidth())/2,
                    (sceneHeight-gameStatus.getHeight())/2);
            gameStatus.setVisible(false);
            newGame();
        }catch(IOException e){
            //Alert()
        }
        
    }
    
    ////////////////////////////////////////////////////////////////////////////
    //--------------------------------- REVISIONS ------------------------------
    // Date       Name                 Tracking #         Description
    // ---------  -------------------  -------------      ----------------------
    // 19JAN2008  James Shen                 	          Initial Creation
    ////////////////////////////////////////////////////////////////////////////
    /**
     * Start a new game.
     */
    public void newGame(){
        if(ResourceManager.isPlayingSound){
            ResourceManager.playSound(ResourceManager.OPEN_SOUND);
        }
        playerTank.initTank();
        playerTank.setAvaiableLives(DEFAULT_PLAYER_LIVE);
        EnemyTank.explodeAllEmenies();
        Bullet.stopAllBullets();
        Explosion.stopAllExplosions();
        Powerup.removeAllPowerups();
        Powerup.putNewPowerup(Powerup.HOME);
        enemyTankRemains=TOTAL_ENEMY_TANKS;
        timeTaken=0;
        canPutPowerup=false;
        enemySpawnStartTime=0;
        enemySpawnStartTime=0;
        putPowerupStartTime=0;
        gameOverStartTime=0;
        gameStatus.setVisible(false);
        //reset player's score to zero.
        if(isGameover){
            playerTank.setScore(0);
        }
        isGameover=false;
        rnd=new Random();
        for(int i=0;i<4;i++) enemyTanksCount[i]=0;
        String fileName="/level" + ResourceManager.gameLevel;
        try{
            //battleField.initBattlefield(this.getClass().getResourceAsStream(fileName));
            battleField.readBattlefieldFromHZK(ResourceManager.gameLevels[
                    ResourceManager.gameLevel]);
        }catch(Exception e){
            //inglore the exception.
        }
        stop();
        start();
    }
    
    ////////////////////////////////////////////////////////////////////////////
    //--------------------------------- REVISIONS ------------------------------
    // Date       Name                 Tracking #         Description
    // ---------  -------------------  -------------      ----------------------
    // 20JAN2008  James Shen                 	          Initial Creation
    ////////////////////////////////////////////////////////////////////////////
    /**
     * draw number in score bar
     * @param g the graphics object
     * @param number the number need to be drawn
     * @param x the x coordinate.
     * @param y the y coordinate.
     */
    private void drawNumber(Graphics g, int number,int x,int y){
        Image imageNumber=imgNumberBlack;
        String strNumber=String.valueOf(number);
        int numberWidth=imageNumber.getHeight();
        for(int i=0;i<strNumber.length();i++){
            char ch=strNumber.charAt(i);
            int index=(ch-'0') % 10;
            Image oneNumber=Image.createImage(imageNumber,index*numberWidth,0,
                    numberWidth,numberWidth,0);
            g.drawImage(oneNumber,x+i*numberWidth,y,0);
        }
    }
    
    ////////////////////////////////////////////////////////////////////////////
    //--------------------------------- REVISIONS ------------------------------
    // Date       Name                 Tracking #         Description
    // ---------  -------------------  -------------      ----------------------
    // 20JAN2008  James Shen                 	          Initial Creation
    ////////////////////////////////////////////////////////////////////////////
    /**
     * put an power up in the battle field.
     */
    private void putAnPowerup(){
        int powupSelection=Math.abs(rnd.nextInt()) %100;
        int type=Powerup.STAR;
        if(powupSelection>95){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合激情另类小说区| 亚洲精品国产一区二区精华液| 99国产精品国产精品久久| 九色|91porny| 黄色日韩网站视频| 国产在线精品不卡| 成人黄色免费短视频| 成人午夜精品一区二区三区| 成人激情av网| 91网站在线播放| 欧美午夜一区二区三区| 欧美久久久久久蜜桃| 777欧美精品| 精品久久人人做人人爽| 国产亚洲欧洲一区高清在线观看| 久久影院午夜论| 国产精品国产三级国产aⅴ原创 | 偷拍亚洲欧洲综合| 偷拍亚洲欧洲综合| 国产一区二区三区观看| 国产福利一区二区三区| 97精品国产露脸对白| 色猫猫国产区一区二在线视频| 欧美午夜精品电影| 91精品国产综合久久精品麻豆| 欧美不卡视频一区| 国产精品久久毛片| 午夜电影一区二区三区| 国产一区二区三区免费播放| 91在线云播放| 日韩欧美亚洲国产另类| 国产精品色在线| 日韩成人精品在线| 东方aⅴ免费观看久久av| 在线免费观看视频一区| 久久久精品影视| 亚洲香肠在线观看| 国产精品一区二区在线观看不卡 | 91丨porny丨户外露出| 制服丝袜日韩国产| 国产精品黄色在线观看| 久久精品国产成人一区二区三区| 成人精品一区二区三区四区| 欧美日韩极品在线观看一区| 国产精品女人毛片| 日本系列欧美系列| 色婷婷综合久色| 精品日韩欧美一区二区| 一区二区三区免费在线观看| 国产精品一区二区不卡| 日韩一卡二卡三卡四卡| 一区二区三区久久久| 高清免费成人av| 精品国产一区二区国模嫣然| 一区二区三区高清不卡| 国产午夜亚洲精品理论片色戒| 国产精品久久久久久久久动漫 | 亚洲自拍偷拍av| 国产一区二区毛片| 日韩欧美精品在线视频| 日韩国产欧美在线视频| 欧美写真视频网站| 一区二区高清视频在线观看| eeuss国产一区二区三区| 久久精品亚洲精品国产欧美| 黑人精品欧美一区二区蜜桃| 91精品国产福利在线观看| 亚洲午夜免费电影| 欧洲国内综合视频| 亚洲黄色av一区| 色婷婷激情综合| 一区二区不卡在线播放 | 欧美一二三区在线| 日本不卡视频在线| 日韩一级片在线观看| 强制捆绑调教一区二区| 制服丝袜成人动漫| 久久精品国产一区二区| 日韩一区二区中文字幕| 麻豆精品视频在线| 精品捆绑美女sm三区| 精品一区二区三区在线观看国产 | 在线观看中文字幕不卡| 亚洲欧美精品午睡沙发| 91黄视频在线观看| 丝袜诱惑制服诱惑色一区在线观看| 欧美性生活影院| 日韩成人av影视| 精品国产亚洲在线| 国产99精品视频| 亚洲欧美日韩中文字幕一区二区三区| 99精品国产91久久久久久| 一级日本不卡的影视| 欧美日本在线视频| 国产自产高清不卡| 国产精品卡一卡二| 欧美日本在线播放| 激情五月婷婷综合网| 中文av一区特黄| 欧美综合天天夜夜久久| 免费精品99久久国产综合精品| 久久午夜色播影院免费高清| 成人av网站在线| 五月天久久比比资源色| 久久综合九色综合97_久久久| 国产99久久久久| 无吗不卡中文字幕| 久久无码av三级| 欧洲亚洲国产日韩| 国产精品一线二线三线精华| 亚洲欧美日韩成人高清在线一区| 欧美顶级少妇做爰| 波多野结衣欧美| 日韩国产一二三区| 亚洲欧美自拍偷拍| 日韩区在线观看| 色呦呦国产精品| 国产一区二区三区电影在线观看| 一区二区三区在线视频观看58 | 亚洲色图19p| 欧美v国产在线一区二区三区| 99久精品国产| 国模一区二区三区白浆| 亚洲成人综合网站| 中文字幕一区日韩精品欧美| 91精品视频网| 91激情五月电影| 白白色 亚洲乱淫| 久久疯狂做爰流白浆xx| 亚洲成a人片在线不卡一二三区 | 色综合久久久久| 国产精品一线二线三线精华| 天堂影院一区二区| 亚洲狠狠丁香婷婷综合久久久| 久久久久久久性| 欧美大片日本大片免费观看| 欧美亚洲动漫精品| 91免费在线视频观看| 成人免费观看av| 国产高清久久久久| 国产一区亚洲一区| 久久精品久久精品| 老司机精品视频导航| 偷拍与自拍一区| 天天色图综合网| 午夜精品久久久久久久99樱桃| 亚洲精选在线视频| 亚洲老司机在线| 亚洲国产你懂的| 亚洲无线码一区二区三区| 亚洲欧美电影院| 一区二区三区在线免费播放| 亚洲黄色尤物视频| 亚洲综合色视频| 亚洲午夜免费福利视频| 亚洲一区自拍偷拍| 午夜视频一区二区| 亚洲图片欧美一区| 日本亚洲天堂网| 九九久久精品视频| 国产成人精品网址| 高清视频一区二区| 一本色道久久综合亚洲精品按摩| 色综合一区二区| 欧美性大战xxxxx久久久| 欧美剧在线免费观看网站| 欧美精品一二三区| 欧美一区二区三区不卡| 精品久久人人做人人爱| 国产婷婷色一区二区三区在线| 欧美激情资源网| 怡红院av一区二区三区| 日韩国产精品91| 国产最新精品免费| 91亚洲男人天堂| 日韩一区二区免费高清| 国产日韩欧美a| 亚洲一区二区视频| 国产一区二区看久久| 99久久免费精品高清特色大片| 日本精品一区二区三区四区的功能| 欧美性大战久久| 久久久蜜桃精品| 亚洲国产成人高清精品| 九九精品一区二区| 99在线精品观看| 欧美一区二视频| 亚洲欧洲日韩av| 日本最新不卡在线| proumb性欧美在线观看| 欧美人牲a欧美精品| 国产女同性恋一区二区| 爽爽淫人综合网网站| 成人黄色大片在线观看| 在线91免费看| 亚洲人成电影网站色mp4| 韩国成人福利片在线播放| 欧美性色黄大片| 国产精品久久久久永久免费观看| 日韩国产欧美在线视频|