ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏03全屏显示游戏窗口

2021-12-31 13:34:40  阅读:169  来源: 互联网

标签:java 游戏 一步 DisplayMode mainFrame device bestDisplayModes 街机 modes


项目源码

项目源码

实现全屏

游戏一般都是全屏显示的,那我们如何使用java实现一个全屏窗体呢?本节我们就来教大家这个技巧。

新增一个managers包,包里新建一个ScreenManager.java类,代码如下:
主要代码就一行:device.setFullScreenWindow(mainFrame);

package managers;

import config.Config;

import java.awt.*;


public class ScreenManager {
	
	public static GraphicsDevice device = null;
	
	private DisplayMode[] _bestDisplayModes = new DisplayMode[] {
		new DisplayMode(640, 480, 32, 0),
		new DisplayMode(640, 480, 16, 0)
	};
	

	public ScreenManager(Frame mainFrame){
		 GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
		 device = env.getDefaultScreenDevice();
	     device.setFullScreenWindow(mainFrame);
	     if(device.isDisplayChangeSupported()){
	    	 _chooseBestDisplayMode(device);
	     }
	     mainFrame.createBufferStrategy(Config.BUFFERS);

	}
	

	private DisplayMode _getBestDisplayMode(GraphicsDevice device){
		for(int x = 0; x < _bestDisplayModes.length; x++){
			DisplayMode[] modes = device.getDisplayModes();
			for(int i = 0; i < modes.length; i++){
				if(modes[i].getWidth() == _bestDisplayModes[x].getWidth() &&
				modes[i].getHeight() == _bestDisplayModes[x].getHeight() &&
				modes[i].getBitDepth() == _bestDisplayModes[x].getBitDepth()){
					return _bestDisplayModes[x];
				}
			}
		}
		return null;
	}
	

	private void _chooseBestDisplayMode(GraphicsDevice device){
		DisplayMode bestMode = _getBestDisplayMode(device);
		if (bestMode!=null){
			device.setDisplayMode(bestMode);
		}else{
			System.out.println("ERROR!");
		}
	}

	
}

GameApp.java 修改如下:

1640590049(1).png

标签:java,游戏,一步,DisplayMode,mainFrame,device,bestDisplayModes,街机,modes
来源: https://www.cnblogs.com/songboriceboy/p/15752701.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有