您好我正在尝试创建全屏游戏的开头,我遇到了问题。我想要一个带有白色文字的蓝色背景,整个屏幕要改为800 * 600。问题是我得到一个屏幕,中间有一个800 * 600的盒子(不可见,但我可以通过鼠标边界判断),我的背景是黑色的。
<小时/>
<小时/> 我的代码:
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);
}
}
答案 0 :(得分:2)
这是一个简短的答案,因为你似乎错误的追踪:)
游戏应该使用OpenGL或DirectX,因此图形工作由GPU完成。我强烈推荐OpenGL,因为它与每个平台兼容。你开始的方式,游戏将完全在CPU上运行,这是不好的。
看看LWJGL (LightWeight Java Game Library)。它是一个跨平台的库,允许您使用OpenGL。它需要一些谷歌搜索教程,但它确实值得。你的游戏表现会好很多,你的游戏也会按照它的方式进行。为了给你一个想法,Minecraft是用LWJGL制作的。
OpenGL允许您使用一些简单的方法快速开始游戏开发,这首先是第一次游戏体验。稍后,您将了解如何更有效地完成工作,但这将是太多的信息开始:D
祝你好运!