夢幻之旅

          DEBUG - 天道酬勤

             :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            671 隨筆 :: 6 文章 :: 256 評(píng)論 :: 0 Trackbacks

          周六無聊,花了二個(gè)小時(shí)寫了一個(gè)游戲的大體框架.
          Game.java

          @SuppressWarnings("unused")
          public class Game 
          {
              
          private Scene scene;
              
          private GameEngine gameEngine;
              
              
          public Game()
              
          {
                  
          this.scene = new Scene();
                  
          this.gameEngine = new GameEngine();
              }

              
              
          public static void main(String[] args)
              
          {
                  
          new Game();
              }

          }

          GameEngine.java

          import java.awt.Graphics2D;
          import java.awt.Image;


          public class GameEngine implements Runnable
          {
              
          /** 引擎重畫間隔 */
              
          private int engineInterval = 30;
              
              
          /** 游戲引擎刷新線程 */
              
          private Thread refresher;
              
              
          /** 游戲主窗口 */
              
          private GameFrame gameFrame;
              
              
          /** 雙緩存作圖區(qū) */
              
          private Image imageBuffer;
              
              
          /** ImageIterm緩存 */
              
          public static ImageItermCahe imageItermCache = new ImageItermCahe();
              
              
          public GameEngine()
              
          {
                  
          this.refresher = new Thread(this);
                  
          this.gameFrame = new GameFrame();
                  
          this.imageBuffer = this.gameFrame.createImage(
                          
          this.gameFrame.getWidth(), this.gameFrame.getHeight());
                  
                  
          /** 啟動(dòng)游戲引擎 */
                  
          this.refresher.start();
              }

              
              
          private void working()
              
          {
                  Graphics2D imageBufferGraphics 
          = (Graphics2D)(this.imageBuffer.getGraphics());
                  imageBufferGraphics.clearRect(
          00785360);
                  
          for(ImageIterm imgIterm : GameEngine.imageItermCache.getImgItermLst())
                  
          {
                      
          /** 刪除已經(jīng)刪除的圖項(xiàng) */
                      
          if(GameEngine.imageItermCache.getImgItermMap().get(imgIterm.getId()) == null)
                      
          {
                          GameEngine.imageItermCache.getImgItermLst().remove(imgIterm);
                          
          continue;
                      }

                      imageBufferGraphics.drawImage(imgIterm.getImg(),
                              imgIterm.getXTargetTop(),
                              imgIterm.getYTargetTop(),
                              imgIterm.getXTargetBot(),
                              imgIterm.getYTargetBot(),
                              imgIterm.getXSourceTop(),
                              imgIterm.getYSourceTop(),
                              imgIterm.getXSourceBot(),
                              imgIterm.getYSourceBot(), 
          null);
                  }

                  
          this.gameFrame.setImageBuffer(this.imageBuffer);
                  
          this.gameFrame.repaint();
              }

              
              
          public void run()
              
          {
                  
          while(true)
                  
          {
                      
          this.working();
                      
          try
                      
          {
                          Thread.sleep(
          this.engineInterval);
                      }

                      
          catch(Exception ex)
                      
          {
                          ex.printStackTrace();
                      }

                  }

              }

              
              
          public void setEngineInterval(int engineInterval)
              
          {
                  
          this.engineInterval = engineInterval;
              }

          }

          GameFrame.java

           

          import java.awt.Graphics;
          import java.awt.Image;

          import javax.swing.JFrame;

          @SuppressWarnings(
          "serial")
          public class GameFrame extends JFrame 
          {
              
          /** 緩存作圖區(qū) */
              
          private Image imageBuffer;

              
          public GameFrame() 
              
          {
                  
          this.setTitle("游戲作圖區(qū)");
                  
          this.setSize(785360);
                  
                  
          /** 定位游戲窗口在屏幕上的位置 */
                  
          this.setLocation((this.getToolkit().getScreenSize().width - this.getWidth()) / 2,
                          (
          this.getToolkit().getScreenSize().height - this.getHeight()) / 2);

                  
          this.setDefaultCloseOperation(3);
                  
          this.setResizable(false);
                  
          this.setVisible(true);
              }


              
          public void update(Graphics g) 
              
          {
                  
          if (this.imageBuffer != null
                  
          {
                      
          this.getGraphics().drawImage(imageBuffer, 00this);
                  }

              }

              
              
          public void setImageBuffer(Image imageBuffer)
              
          {
                  
          this.imageBuffer = imageBuffer;
              }

          }


           還有三個(gè)類在下一篇.

          posted on 2010-03-21 10:13 HUIKK 閱讀(239) 評(píng)論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 广州市| 甘谷县| 德化县| 靖远县| 浦城县| 德格县| 静安区| 普宁市| 兴隆县| 左权县| 遂溪县| 登封市| 文山县| 古蔺县| 镇雄县| 确山县| 江都市| 高青县| 广灵县| 金塔县| 和政县| 大同县| 察雅县| 尚义县| 白河县| 文登市| 卢湾区| 北海市| 乌海市| 黄冈市| 囊谦县| 偃师市| 教育| 镇江市| 巨野县| 察雅县| 赞皇县| 高密市| 衡东县| 鱼台县| 南宁市|