java 游戏

java 游戏

周六无聊,花了二个小时写了一个游戏的大体框架.
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;
    }

}


 还有三个类在下一篇.

你可能感兴趣的:(java 游戏)