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

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

?? gamescreen.java

?? 大量j2me源代碼
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/**
 * The central game control class managing: rendering, cycling of world (which
 * includes actors) and other game state.
 */

//#ifdef nokia
import com.nokia.mid.ui.FullCanvas;
//#endif
import javax.microedition.lcdui.*;

import net.jscience.math.kvm.MathFP;

//#ifdef nokia

public class GameScreen extends FullCanvas implements Runnable

//#else
//# 
//# public class GameScreen extends Canvas implements Runnable, CommandListener
//#endif
{
   private static GameScreen theGameScreen;	// "there can be only one..."

   private static int t = 0;
   public static final int NOT_STARTED = t++;	// game state
   public static final int STARTING_UP = t++;   // delay prior to action
   public static final int PLAYING = t++;       // game in progress
   public static final int PAUSED = t++;        // paused
   public static final int DYING = t++;			// we pause after they die
   public static final int GAME_OVER = t++;		// showing "game over..."
   public static final int GAME_DONE = t++;		// game is finished

   private StarAssault theMidlet;
   private int cps;
   private int cyclesThisSecond;
   private long lastCPSTime = 0;

   private int score;

   private World world;
   private Ship playerShip;

   private int leftKeyCode;						// key config (set from app)
   private int rightKeyCode;
   private int fireKeyCode;
   private Command menu;

   // Rendering setup
   private int barWidth;
   private int barHeight;
   private Image osb;
   private Graphics osg;
   private Font defaultFont;
   private int defaultFontHeight;
   private int screenWidth;
   private int screenHeight;
   private int halfScreenWidth;
   private int halfScreenHeight;
   private Image energyBarImage;					// a cached image of the energy bar
   private int lastDrawnBarValue;				// last value we drew the bar at

   // Game state
   private boolean running;						// thread controller
   private int state;
   private long timeStateChanged;
   private int statePriorToPause;
   private int lives;

   // Used to pan the view position based on which way the player is facing.
   private int currentViewPosX;
   private int currentViewPosY;
   private int pixelsPerMSFP = MathFP.div(30, 1000);

   public GameScreen(StarAssault midlet)
   {
      theGameScreen = this;
      theMidlet = midlet;
      running = true;
      setState(NOT_STARTED);

      screenWidth = getWidth();
      screenHeight = getHeight();
      halfScreenWidth = screenWidth / 2;
      halfScreenHeight = screenHeight / 2;

      setKeyBindings();
      lastCycleTime = System.currentTimeMillis();

      //#ifndef nokia
      //# menu = new Command("Menu", Command.SCREEN, 1);
      //# addCommand(menu);
      //# setCommandListener(this);
      //#endif

      initResources();
      // create the game thread
      Thread t = new Thread(this);
      t.start();
   }

   public void setKeyBindings()
   {
      leftKeyCode = StarAssault.getKeyCodeFromNum(theMidlet.getLeftKeyNum());
      rightKeyCode = StarAssault.getKeyCodeFromNum(theMidlet.getRightKeyNum());
      fireKeyCode = StarAssault.getKeyCodeFromNum(theMidlet.getFireKeyNum());
   }

   public final static GameScreen getGameScreen()
   {
      return theGameScreen;
   }

   public final void setState(int newState)
   {
      state = newState;
      timeStateChanged = System.currentTimeMillis();
   }

   public final int getState()
   {
      return state;
   }

   public final int getLevel()
   {
      return world.getLevelNum();
   }

   public void incScore(int i)
   {
      score += i;
   }

   private void initResources()
   {
      //System.out.println("1: freemem=" + Runtime.getRuntime().freeMemory());
      try
      {
         barWidth = screenWidth / 5;
         barHeight = 6;
         energyBarImage = Image.createImage(barWidth, barHeight);

         defaultFont = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL);
         defaultFontHeight = defaultFont.getHeight();

         // setup the screen
         if (!isDoubleBuffered())
         {
            osb = Image.createImage(screenWidth, screenHeight);
            osg = osb.getGraphics();
            osg.setFont(defaultFont);
         }

         // create the world and playerShip
         world = new World(screenWidth, screenHeight);

         playerShip = new Ship(world);
         playerShip.init(Ship.PLAYER_SHIP, 0, 0);

         world.setPlayerShip(playerShip);
      }
      catch (Exception e)
      {
         System.out.println("App exception: " + e);
         e.printStackTrace();
      }

   }

   private static final int MAX_CPS = 100;
   private static final int MS_PER_FRAME = 1000 / MAX_CPS;
   private long cycleStartTime;
   private long timeSinceStart;
   private long lastCycleTime;
   private long msSinceLastCycle;
   private int panPixelsToMoveFP;

   public void run()
   {
      try
      {
         while (running)
         {
            // remember the starting time
            cycleStartTime = System.currentTimeMillis();
            msSinceLastCycle = System.currentTimeMillis() - lastCycleTime;

            // run the cycle
            if (state == PLAYING)
               world.cycle(msSinceLastCycle);

            if (state == STARTING_UP)
            {
               long timeSinceStateChange = System.currentTimeMillis() -
                       timeStateChanged;
               if (timeSinceStateChange > 3000)
                  setState(PLAYING);
            }

            if (state == GAME_OVER)
            {
               long timeSinceStateChange = System.currentTimeMillis() -
                       timeStateChanged;
               if (timeSinceStateChange > 3000)
               {
                  setState(GAME_DONE);
                  StarAssault.getApp().activateDisplayable(
                          new OnlineScoring(score));
               }
            }

            if (state == DYING)
            {
               long timeSinceStateChange = System.currentTimeMillis() -
                       timeStateChanged;
               if (timeSinceStateChange > 1000)
               {
                  //if (shipsLeft == 0) ...
                  setState(STARTING_UP);
               }
            }

            if (state != PAUSED && state != GAME_DONE && state != NOT_STARTED)
            {
               repaint();

               // update the view pan
               panPixelsToMoveFP += MathFP.mul(pixelsPerMSFP,
                                          MathFP.toFP((int)msSinceLastCycle));

               // Figure out how many whole pixels to move.
               int wholePixels = MathFP.toInt(panPixelsToMoveFP);

               if (wholePixels > 0)
               {
                  // Calculate the ideal position for the view based on the
                  // direction the player's ship is facing.
                  int[] targetViewPos = Actor.getProjectedPos(
                          playerShip.getX(), playerShip.getY(),
                          playerShip.getDirection(), screenWidth / 3);

                  // Adjust the current move slightly towards the ideal view
                  // point.
                  if (currentViewPosX < targetViewPos[0])
                     currentViewPosX += wholePixels;
                  if (currentViewPosX > targetViewPos[0])
                     currentViewPosX -= wholePixels;
                  if (currentViewPosY < targetViewPos[1])
                     currentViewPosY += wholePixels;
                  if (currentViewPosY > targetViewPos[1])
                     currentViewPosY -= wholePixels;

                  // Take away the pixels that were moved.
                  panPixelsToMoveFP = MathFP.sub(panPixelsToMoveFP,
                                                 MathFP.toFP(wholePixels));
               }

               // update the CPS
               if (System.currentTimeMillis() - lastCPSTime > 1000)
               {
                  lastCPSTime = System.currentTimeMillis();
                  cps = cyclesThisSecond;
                  cyclesThisSecond = 0;
               }
               else
                  cyclesThisSecond++;

               lastCycleTime = System.currentTimeMillis();

               // sleep if we've finished our work early
               timeSinceStart = System.currentTimeMillis() - cycleStartTime;

               if (timeSinceStart < MS_PER_FRAME)// && MS_PER_FRAME - timeSinceStart > 5)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩电影一区二区三区| 国产欧美精品一区二区色综合| 一区在线观看视频| 成+人+亚洲+综合天堂| 综合久久久久久| 欧美三级日韩三级| 日本视频一区二区三区| 久久丝袜美腿综合| 成人午夜激情影院| 亚洲免费观看视频| 欧美一区日韩一区| 国产精品亚洲专一区二区三区 | 精品少妇一区二区三区日产乱码| 青青青爽久久午夜综合久久午夜| 亚洲精品一线二线三线| av一区二区三区| 午夜精品在线视频一区| 久久综合九色综合欧美就去吻 | 欧美日韩亚洲综合一区二区三区| 日韩精品成人一区二区三区 | 99久久99久久精品免费观看| 亚洲欧美日韩国产手机在线 | 国产一区二区三区高清播放| 中文字幕av一区二区三区免费看 | 欧美少妇bbb| 久久99国产乱子伦精品免费| 成人欧美一区二区三区黑人麻豆| 欧美日韩国产影片| 国产成人av一区| 三级在线观看一区二区| 日本一区二区免费在线| 欧美午夜片在线看| 国产精品综合av一区二区国产馆| 一区二区免费在线播放| 久久久久久久久久看片| 欧美伊人久久久久久午夜久久久久| 蓝色福利精品导航| 亚洲一区在线看| 国产欧美精品一区二区三区四区| 欧美日韩亚洲不卡| 97久久超碰国产精品电影| 男人的j进女人的j一区| 亚洲欧美电影院| 久久色视频免费观看| 欧美影院一区二区三区| 懂色中文一区二区在线播放| 蜜桃视频在线一区| 一区二区三区四区国产精品| 久久一区二区视频| 欧美一级精品大片| 欧美色视频在线观看| jlzzjlzz亚洲女人18| 久久国产综合精品| 亚洲bt欧美bt精品| 亚洲视频一区二区在线| 国产日本欧美一区二区| 欧美一级久久久| 宅男在线国产精品| 色网站国产精品| 岛国一区二区三区| 久久激情五月激情| 亚洲mv大片欧洲mv大片精品| 伊人夜夜躁av伊人久久| 中文字幕一区二区视频| 欧美激情艳妇裸体舞| 欧美精品一区二区三区在线播放 | 精品福利在线导航| 日韩一级高清毛片| 欧美一级日韩免费不卡| 538在线一区二区精品国产| 在线免费观看视频一区| 91国偷自产一区二区三区观看 | 欧美亚洲日本国产| 91久久线看在观草草青青| 91麻豆swag| 欧美最新大片在线看| 在线亚洲一区二区| 欧美亚男人的天堂| 欧美日韩免费高清一区色橹橹| 在线免费视频一区二区| 欧美性猛片aaaaaaa做受| 欧美日韩色综合| 欧美一区二区黄| 日韩精品一区二区三区四区| 精品欧美一区二区三区精品久久| 欧美成人综合网站| 久久精品亚洲精品国产欧美kt∨ | 成人欧美一区二区三区黑人麻豆 | 久久一区二区三区四区| 国产欧美日韩精品在线| 国产精品国产三级国产| 成人欧美一区二区三区白人| 亚洲激情在线激情| 天天色天天操综合| 美国十次综合导航| 国产成人综合亚洲91猫咪| 成人晚上爱看视频| 在线一区二区三区四区五区| 欧美日韩高清在线播放| 欧美tickling挠脚心丨vk| 国产日韩一级二级三级| 亚洲视频1区2区| 日本在线不卡视频一二三区| 久草中文综合在线| 9l国产精品久久久久麻豆| 色噜噜偷拍精品综合在线| 在线综合亚洲欧美在线视频| www欧美成人18+| 亚洲免费观看高清完整版在线观看| 午夜伦理一区二区| 国产中文字幕精品| 日本精品视频一区二区| 欧美成人欧美edvon| 国产精品久久久久久久岛一牛影视 | 成人午夜免费视频| 欧美日韩一区三区| 国产午夜精品久久| 亚洲成人高清在线| 成人免费高清在线| 欧美一区中文字幕| 亚洲人123区| 另类专区欧美蜜桃臀第一页| 99久久er热在这里只有精品66| 91精品国产综合久久久久久| 中文字幕高清不卡| 日韩国产精品91| www.欧美精品一二区| 日韩一区二区在线观看视频播放| 国产精品嫩草影院com| 美女视频黄久久| 91成人看片片| 亚洲欧洲一区二区在线播放| 美国十次综合导航| 欧美日韩国产首页| 亚洲人快播电影网| 激情小说亚洲一区| 欧美乱妇一区二区三区不卡视频| 中文字幕一区二区三区在线播放| 久久精品国产亚洲5555| 欧美午夜精品免费| 亚洲日韩欧美一区二区在线| 看国产成人h片视频| 欧美日韩中文另类| 亚洲卡通动漫在线| 波多野结衣中文字幕一区| 久久综合九色综合97婷婷| 日韩电影在线观看网站| 在线视频欧美区| 综合自拍亚洲综合图不卡区| 国产精品2024| 久久精品视频在线免费观看| 日韩av成人高清| 精品视频在线免费看| 樱桃国产成人精品视频| 91视频观看视频| 亚洲欧洲精品天堂一级| www.欧美.com| 亚洲手机成人高清视频| 99精品久久久久久| 亚洲欧美日韩国产另类专区| 97精品久久久久中文字幕 | 色综合天天综合网天天看片| 久久精品在这里| 国产精品影视网| 久久久久久久网| 国产成人亚洲综合a∨婷婷图片 | 国产精品九色蝌蚪自拍| 成人黄色小视频| 成人免费一区二区三区在线观看| 成人精品鲁一区一区二区| 国产精品免费看片| 91碰在线视频| 亚洲尤物在线视频观看| 欧美视频在线不卡| 婷婷成人综合网| 欧美一区二区三区免费观看视频| 麻豆成人免费电影| 26uuu亚洲婷婷狠狠天堂| 九一久久久久久| 国产欧美精品一区aⅴ影院 | 国产乱国产乱300精品| 国产欧美1区2区3区| 成人在线一区二区三区| ㊣最新国产の精品bt伙计久久| 一本久久a久久免费精品不卡| 亚洲视频中文字幕| 欧美高清视频在线高清观看mv色露露十八 | 99riav一区二区三区| 亚洲免费伊人电影| 欧美一二区视频| 国产sm精品调教视频网站| 综合久久久久久久| 91精品久久久久久久久99蜜臂| 激情都市一区二区| 亚洲日本中文字幕区| 91精品国产色综合久久不卡电影| 国产一区二区三区精品欧美日韩一区二区三区 | 久久综合狠狠综合久久综合88| www.激情成人| 图片区小说区国产精品视频|