2012-08-10 86 views
0

你好,我想创建一个全屏游戏的开始,我有问题。我想要一个带有白色文本的蓝色背景,整个屏幕要更改为800 * 600。问题是我得到一个中间800 * 600框的屏幕(不可见,但我可以通过鼠标边界来判断),而我的背景是黑色的。 全屏游戏窗口不会正确显示


enter image description here


我的代码:

import java.awt.*; 

import javax.swing.JFrame; 
/** 
* Write a description of class Full here. 
* 
* @author (your name) 
* @version (a version number or a date) 
*/ 
public class Full extends JFrame 
{ 

    public static void main(String[] args){ 
    DisplayMode dm = new DisplayMode(800,600,16, DisplayMode.REFRESH_RATE_UNKNOWN); 
    Full full = new Full(); 
    full.run(dm); 

    } 
    public void run(DisplayMode dm){ 
    setBackground(Color.BLUE); 
    setForeground(Color.WHITE); 
    setFont(new Font("Arial", Font.PLAIN,24)); 

    Screen s = new Screen(); 
    try{ 
     s.setFullScreen(dm,this); 
     try{ 
      Thread.sleep(15000); 
     }catch(Exception ex){} 
     }finally{ 
     s.restoreScreen(); 
     } 
    } 
    public void paint(Graphics g){ 
     if(g instanceof Graphics2D){ 
      Graphics2D g2 = (Graphics2D) g; 

g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 
     } 
     g.drawString("This is gonna be awesome!!",200,200); 
    } 
} 

public class Screen 
{ 
    private GraphicsDevice vc; 
    Window myWindow; 
    public Screen(){ 
     GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
     vc = env.getDefaultScreenDevice(); 
    } 
    public void setFullScreen(DisplayMode dm, JFrame myWindow){ 
     myWindow.setUndecorated(true); 
     myWindow.setResizable(false); 
     vc.setFullScreenWindow(myWindow); 

     if(dm != null && vc.isDisplayChangeSupported()){ 
      try{ 
      vc.setDisplayMode(dm); 
      }catch(Exception ex){} 
     } 
    } 
    public Window getFullScreenWindow(){ 
     return vc.getFullScreenWindow(); 
    } 
    public void restoreScreen(){ 
     Window w = vc.getFullScreenWindow(); 
     if(w != null){ 
      w.dispose(); 
     } 
     vc.setFullScreenWindow(null); 
    } 
} 

回答

2

这是一个简单的答案,因为它似乎你是在错误的跟踪:)

游戏应该使用OpenGL或DirectX,所以图形工作由GPU完成。我强烈推荐OpenGL,因为它与每个平台都兼容。你开始的方式,游戏将完全在CPU上运行,这是不好的。

看看LWJGL (LightWeight Java Game Library)。它是一个跨平台的库,可以让你使用OpenGL。这将需要一些谷歌搜索教程,但它是非常值得的。你的游戏表现会更好,你的游戏将会以它的​​方式成为现实。只是想给你一个想法,Minecraft是用LWJGL制作的。

OpenGL允许您使用一些简单的方法快速开始游戏开发,这首先是第一次游戏体验。之后,你会发现如何做更有效率的事情,但这将是太多的信息开始:​​D
祝你好运!