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

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

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

    夢幻之旅

    DEBUG - 天道酬勤

       :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      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;
        
        
    /** 雙緩存作圖區 */
        
    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())
            
    {
                
    /** 刪除已經刪除的圖項 */
                
    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 
    {
        
    /** 緩存作圖區 */
        
    private Image imageBuffer;

        
    public GameFrame() 
        
    {
            
    this.setTitle("游戲作圖區");
            
    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无码国产精品麻豆天美| 91丁香亚洲综合社区| 97av免费视频| 日韩免费在线中文字幕| 国产高清在线免费视频| 久久久久久亚洲精品无码| 国产婷婷高清在线观看免费| 男女啪啪免费体验区| 亚洲一区精品伊人久久伊人| 成人国产精品免费视频| 久久久久久久综合日本亚洲 | 亚洲AV电影院在线观看| 久久久精品免费视频| 久久久久亚洲精品天堂| 久久国内免费视频| 国产亚洲一卡2卡3卡4卡新区 | 国产婷婷综合丁香亚洲欧洲| 成人毛片免费观看视频大全| 亚洲AV成人片无码网站| 色噜噜AV亚洲色一区二区| a级在线免费观看| 亚洲国产日韩在线| 国产男女猛烈无遮挡免费网站| 一级做a爰片性色毛片免费网站| 亚洲成AV人片一区二区密柚| 免费观看无遮挡www的视频 | 中文字幕免费在线视频| 久久亚洲AV成人无码电影| 毛片免费视频观看| 在线观看亚洲天天一三视| 久久国产精品萌白酱免费| 在线综合亚洲中文精品| 亚洲av区一区二区三| 特级无码毛片免费视频尤物| 亚洲人成电影网站免费| 亚洲韩国精品无码一区二区三区 | 亚洲成AV人片久久| 亚洲福利精品电影在线观看| 无码国产精品一区二区免费16| 国产亚洲精aa在线看|