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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? gamescene.java

?? 還記得兒時(shí)在游戲機(jī)上玩坦克大戰(zhàn)嗎?如今這種經(jīng)典游戲不在游戲機(jī)上玩了
?? JAVA
?? 第 1 頁 / 共 2 頁
字號(hào):
//------------------------------------------------------------------------------
//                         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){

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一级免费一区| 91精品久久久久久久久99蜜臂| 亚洲香蕉伊在人在线观| 精品盗摄一区二区三区| 色婷婷久久99综合精品jk白丝| 久久国产精品露脸对白| 一区二区三区不卡在线观看| 精品精品欲导航| 欧美综合欧美视频| 不卡av免费在线观看| 日本伊人午夜精品| 亚洲主播在线观看| 中文字幕精品综合| 欧美成人精精品一区二区频| 欧美日韩一区三区| 91在线观看地址| 国产成人亚洲综合色影视| 亚洲成av人片一区二区| 亚洲人成伊人成综合网小说| 久久久久久久久久久久久夜| 欧美一区二区三区在线| 欧美日韩视频在线观看一区二区三区| 成人av集中营| 国产福利电影一区二区三区| 蜜乳av一区二区| 日韩精品色哟哟| 亚洲国产视频在线| 亚洲男人天堂av| 亚洲欧洲精品成人久久奇米网| 精品国产免费久久| 日韩精品一区二区三区swag| 欧美三级在线视频| 欧美日韩视频在线第一区| 色视频一区二区| 91丨九色丨蝌蚪富婆spa| www.av亚洲| 91蜜桃免费观看视频| 成人久久视频在线观看| 国产成人av资源| 国产精品2024| 成人午夜视频在线| 成人午夜激情影院| 99视频精品免费视频| 91日韩一区二区三区| 色婷婷精品久久二区二区蜜臂av | 中文字幕av不卡| 国产精品天天摸av网| 欧美激情一区二区三区全黄| 国产欧美精品一区| 久久久精品免费观看| 欧美激情一区二区三区不卡| 国产精品久久久久aaaa樱花 | 全国精品久久少妇| 久久成人免费日本黄色| 精品无人区卡一卡二卡三乱码免费卡| 极品尤物av久久免费看| 国产成人免费视频| 99精品热视频| 欧美日韩一区视频| 精品日韩在线一区| 国产精品美女www爽爽爽| 亚洲激情图片一区| 麻豆精品一区二区av白丝在线| 久久精品国产亚洲高清剧情介绍| 国产一区二区在线观看视频| 9人人澡人人爽人人精品| 91传媒视频在线播放| 欧美一区二区三区思思人| 26uuu色噜噜精品一区二区| 国产精品三级视频| 亚洲成人免费视| 久久99精品久久久| 99国产欧美另类久久久精品| 欧美日韩1区2区| 26uuu色噜噜精品一区| 亚洲日本中文字幕区| 三级欧美在线一区| 国产精品中文字幕一区二区三区| 97久久精品人人爽人人爽蜜臀 | 欧美国产精品一区二区三区| 亚洲欧美日韩电影| 奇米一区二区三区| 99在线精品免费| 日韩三级中文字幕| 国产精品不卡视频| 全部av―极品视觉盛宴亚洲| 波多野结衣在线一区| 3atv一区二区三区| 国产精品久99| 另类人妖一区二区av| 91原创在线视频| 久久一日本道色综合| 夜色激情一区二区| 风间由美一区二区三区在线观看| 欧美日韩在线三区| 中文字幕亚洲欧美在线不卡| 秋霞午夜鲁丝一区二区老狼| 97久久久精品综合88久久| 精品成人a区在线观看| 亚洲国产毛片aaaaa无费看| 盗摄精品av一区二区三区| 欧美精品久久久久久久多人混战| 亚洲国产精品二十页| 日本欧美在线观看| 色激情天天射综合网| 欧美激情一区二区三区不卡| 日韩电影在线免费| 日本乱码高清不卡字幕| 国产午夜精品久久久久久久| 免费av网站大全久久| 欧洲av在线精品| 中文字幕亚洲综合久久菠萝蜜| 经典三级视频一区| 日韩一区二区三区免费观看| 一区二区免费视频| 91免费观看视频| 日本一区二区三区免费乱视频 | 欧美日韩色综合| 日韩一区中文字幕| 国产成人夜色高潮福利影视| 欧美变态凌虐bdsm| 轻轻草成人在线| 欧美精品少妇一区二区三区| 亚洲最大色网站| 色网综合在线观看| 亚洲美女屁股眼交| 99v久久综合狠狠综合久久| 欧美国产精品久久| 成人小视频在线观看| 久久免费精品国产久精品久久久久| 日韩va欧美va亚洲va久久| 精品视频一区二区三区免费| 一区二区不卡在线视频 午夜欧美不卡在 | av一区二区三区四区| 国产精品国产自产拍高清av王其| 国产福利一区在线| 国产精品麻豆网站| 成人黄色片在线观看| 国产精品久久久久久久蜜臀| 成人免费福利片| 国产精品国产三级国产普通话99 | 日日夜夜免费精品视频| 欧美色综合天天久久综合精品| 亚洲最大成人综合| 在线观看www91| 亚洲成人激情av| 91精品国产91综合久久蜜臀| 日韩成人一级大片| 欧美sm极限捆绑bd| 国产美女精品在线| 国产精品美女久久久久久2018| heyzo一本久久综合| 日韩毛片视频在线看| 91国产丝袜在线播放| 天天综合日日夜夜精品| 7878成人国产在线观看| 麻豆极品一区二区三区| 久久久综合激的五月天| 99免费精品视频| 亚洲一区二区视频| 欧美大尺度电影在线| 粉嫩久久99精品久久久久久夜| 中文字幕中文乱码欧美一区二区| 91成人国产精品| 久久成人免费网| 1024成人网| 51精品视频一区二区三区| 国产精品中文欧美| 亚洲综合成人网| 欧美mv日韩mv亚洲| 97se亚洲国产综合自在线| 亚洲第一精品在线| 国产偷v国产偷v亚洲高清| 欧洲一区在线观看| 久久精品国产亚洲5555| 国产精品高清亚洲| 5858s免费视频成人| 成人自拍视频在线观看| 亚洲电影在线播放| 久久先锋资源网| 色视频欧美一区二区三区| 另类小说欧美激情| 一区二区在线免费| 精品国产a毛片| 欧美中文字幕一区| 国产精品中文字幕一区二区三区| 一个色妞综合视频在线观看| 久久综合九色综合欧美就去吻| 91色|porny| 国产精品亚洲а∨天堂免在线| 亚洲成年人影院| 中文字幕日韩精品一区| 日韩一区二区三区av| 91欧美一区二区| 国产盗摄一区二区三区| 亚洲成人激情自拍| 亚洲日本护士毛茸茸| 久久精品欧美日韩| 日韩一区二区三区四区| 91国产成人在线|