Java游戏开发之一

用Java开发MMOPG游戏是一个挑战, 接下来的这个系列我将结合最近正在开发的一款网络游戏,写一些游戏开发方面的技巧。

使用Java开发游戏除了了解基本的类库,还要了解供游戏使用的多种API:

  1. 首当其冲的是全屏切换API:GraphicsDevice .setDisplayMode(DisplayMode dm)GraphicsDevice .setFullScreenWindow(Window w),具体的使用可以参考Java教程:FullScreen
  2. 还要了解可以操作显卡内存的API,不过Java提供了很好的抽象,隐藏了底层的实现细节:Window.createBufferStrategy(int),Window.getBufferStrategy(),Frame是Window的子类,可以直接使用相关的方法,还有Canvas.createBufferStrategy(int),Canvas.getBufferStrategy()等。
  3. 使用Java的这些API有很多技巧,下边是我们项目中的一段例子代码:
         private   void  show() {
        
    if (fullScreen) {
            
    if (fullScreenFrame  ==   null ) {
            fullScreenFrame 
    =  createFrame(fullScreen);
            }
            device.setFullScreenWindow(fullScreenFrame);
            changeDisplayMode(displayMode);        
            fullScreenFrame.createBufferStrategy(
    2 );
            bs 
    =  fullScreenFrame.getBufferStrategy();
        } 
    else  {
            
    if (normalFrame  ==   null ) {
            normalFrame 
    =  createFrame(fullScreen);
            }
            normalFrame.pack();
            normalFrame.setLocationRelativeTo(
    null );
            normalFrame.setVisible(
    true );
            canvas.requestFocus();
            canvas.createBufferStrategy(
    2 );
            bs 
    =  canvas.getBufferStrategy();         
        }
        }
    上边这段代码创建适应全屏或者窗口模式的硬件加速对象BufferStrategy.
        Graphics g  =  bs.getDrawGraphics();
        
    try  {
            render((Graphics2D)g);
            
    if (bs.contentsLost()) {
            Thread.yield();
            }
        } 
    finally  {
            g.dispose();
        }
        bs.show();
    上边这段代码得到硬件加速的Graphics,将游戏中的Sprite进行绘制后通过调用show方法显示到屏幕上。
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值