2012-08-10 4 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
행운을 빈다!

관련 문제