<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    夢幻之旅

    DEBUG - 天道酬勤

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

    周六無聊,花了二個小時寫了一個游戲的大體框架.
    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());
            
            
    /** 啟動游戲引擎 */
            
    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;
        }

    }


     還有三個類在下一篇.

    posted on 2010-03-21 10:13 HUIKK 閱讀(238) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 污视频在线免费观看| 亚洲AV无码乱码在线观看| 亚洲av片在线观看| 国产亚洲成人久久| 嘿嘿嘿视频免费网站在线观看| 青草久久精品亚洲综合专区| 亚洲人JIZZ日本人| 在线不卡免费视频| 国产偷伦视频免费观看| 亚洲爆乳成av人在线视菜奈实| 亚洲精品无码久久久久AV麻豆| 曰批全过程免费视频播放网站| 杨幂最新免费特级毛片| 亚洲国产精品yw在线观看| 久久久久亚洲av成人无码电影| 国产曰批免费视频播放免费s| A国产一区二区免费入口| 亚洲一区二区三区丝袜| 国产日韩亚洲大尺度高清| 日韩一级免费视频| 日本免费网站视频www区| 一级特级aaaa毛片免费观看| 亚洲宅男精品一区在线观看| 亚洲av日韩av不卡在线观看| 亚洲av无码专区在线观看素人| 久草视频在线免费| 鲁丝片一区二区三区免费| 特色特黄a毛片高清免费观看| 亚洲 欧洲 视频 伦小说| 亚洲色四在线视频观看| 中文字幕精品无码亚洲字| 日本成人免费在线| 91情侣在线精品国产免费| 久久久久免费精品国产小说| 午夜成人无码福利免费视频| 欧美亚洲国产SUV| 一本色道久久88—综合亚洲精品| 亚洲日韩中文字幕| 色拍自拍亚洲综合图区| 亚洲免费观看视频| 亚洲中文久久精品无码|