看到最近基于java的游戏文章不少,写一段关于java游戏编程的基本知识。很多内容参考自David Brackeen 个人网址,作为笔记。今日开第一题,日后慢慢更新。有不得当的地方还请多包涵,我会努力改进。
首先说说java游戏编程的基础。 这次总结是基于awt swing java2D这些知识。废话不多说,先来第一部分。
1.全屏图形。
显示的硬件分 显卡和显示器。显卡的内存将存储屏幕上的内容,并且将内存中的内容在显示器上显示。显示器的屏幕用像素表示。一般是800*600/1280*1024之类。
另外还有位深度的概念。比如8,16,24,32位。
8是2的八次方 =216中颜色,以此类推。越小越快。
将显示转换为全屏
Jframe,模拟屏幕或说画布等
DisplayMode,指定显示切换到什么样的分辨率,位深度刷新率。
GraphicsDevice,改变现实方式和检查显示属性靠它。
GraphicsEnvironment,获得GraphicsDevice。
首先来一个屏幕管理类
package com.jsheng.game.util;
import java.awt.DisplayMode;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Window;
import javax.swing.JFrame;
/** function:
* company: jsheng
* @author wanghn wanghaining9999@sina.com
* describe:
*/
public class MyScreenMgr {
private GraphicsDevice device;
public MyScreenMgr() {
GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
device = environment.getDefaultScreenDevice();
}
public void setFullScreen(DisplayMode displayMode,JFrame window){
window.setUndecorated(true);
window.setResizable(false);
device.setFullScreenWindow(window);
if (displayMode != null && device.isDisplayChangeSupported())
{
try {
device.setDisplayMode(displayMode);
}
catch (IllegalArgumentException ex) {
//处理
}
}
}
public Window getFullScreenWindow() {
return device.getFullScreenWindow();
}
public void reScreen() {
Window window = device.getFullScreenWindow();
if (window != null) {
window.dispose();
}
device.setFullScreenWindow(null);
}
}
接下来是测试
package com.jsheng.game.test1;
import java.awt.*;
import javax.swing.JFrame;
import com.jsheng.game.util.MyScreenMgr;
/** function:
* company: jsheng
* @author wanghn wanghaining9999@sina.com
*/
public class FullScreenTest extends JFrame {
private static final long serialVersionUID = 1L;
public static void main(String[] args) {
DisplayMode displayMode = new DisplayMode(800, 600, 16,
DisplayMode.REFRESH_RATE_UNKNOWN);
FullScreenTest test = new FullScreenTest();
test.run(displayMode);
}
public void run(DisplayMode displayMode) {
setBackground(Color.black);
setForeground(Color.white);
setFont(new Font("Dialog", 0, 24));
MyScreenMgr screen = new MyScreenMgr();
try {
screen.setFullScreen(displayMode, this);
Thread.sleep(4000);
}catch (InterruptedException ex) { }
finally {
screen.reScreen();
}
}
public void paint(Graphics g) {
if(g instanceof Graphics2D){
Graphics2D g1 = (Graphics2D) g;
g1.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
}
g.drawString("欢迎访问J盛科技!我的qq6668220", 20, 50);
}
}
window.setUndecorated(true); 删除边框和标题栏。
g1.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
这两句抗齿边文本,是文本的边缘模糊化,没有齿边。
这样一个全屏幕的demo就出来了。
2.添加图像。
package com.jsheng.game.test1;
import java.awt.*;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import com.jsheng.game.util.MyScreenMgr;
/** function:
* company: jsheng
* @author wanghn wanghaining9999@sina.com
*/
public class FullScreenTest2 extends JFrame {
private static final long serialVersionUID = 1L;
private Image bgImage;
private Image myImage;
private Image myImage2;
private boolean flag;
public static void main(String[] args) {
DisplayMode displayMode = new DisplayMode(800, 600, 16,
DisplayMode.REFRESH_RATE_UNKNOWN);
FullScreenTest2 test = new FullScreenTest2();
test.run(displayMode);
}
public void loadImages() {
bgImage = loadImage("images/Blue hills.jpg");
myImage = loadImage("images/a1.jpg");
myImage2 = loadImage("images/a2.jpg");
flag = true;
repaint();
}
private Image loadImage(String fileName) {
return new ImageIcon(fileName).getImage();
}
public void run(DisplayMode displayMode) {
setBackground(Color.black);
setForeground(Color.white);
setFont(new Font("Dialog", 0, 24));
MyScreenMgr screen = new MyScreenMgr();
try {
screen.setFullScreen(displayMode, this);
loadImages();
Thread.sleep(4000);
}catch (InterruptedException ex) { }
finally {
screen.reScreen();
}
}
public void paint(Graphics g) {
if(g instanceof Graphics2D){
Graphics2D g1 = (Graphics2D) g;
g1.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
if (flag) {
g1.drawImage(bgImage, 0, 0, null);
g1.drawImage(myImage, 100, 0, null);
g1.drawImage(myImage2, 305, 0, null);
g1.drawString("欢迎访问J盛科技!我的qq6668220", 200, 500);
}
else {
g.drawString("正在读取图片", 5, 24);
}
}
}
}
分享到:
相关推荐
Java游戏编程是一个不断发展和更新的领域,开发者需要不断学习新的库、框架和技术。参与开源项目,利用GitHub、Stack Overflow等社区资源,能加速学习进程。 总的来说,Java游戏编程涵盖了广泛的编程知识,从基础到...
Java游戏编程是软件开发领域中的一个分支,它利用Java编程语言来创建各种类型的游戏,从简单的2D小游戏到复杂的3D大作。本资源“Java游戏编程(游戏开发与编程序列).rar”可能包含一系列教程、源代码示例或者相关...
JAVA游戏编程 JAVA入门 JAVA游戏编程 JAVA入门 JAVA游戏编程 JAVA入门 JAVA游戏编程 JAVA入门 JAVA游戏编程 JAVA入门 JAVA游戏编程 JAVA入门
《Java 2游戏编程》是一本专为游戏开发爱好者和专业人士设计的教程,由美国作者Thomas Petchel撰写,并由晏利斌、孙淑敏、邵荣等人翻译成中文。这本书深入浅出地介绍了如何使用Java 2平台进行游戏开发,涵盖了从基础...
Java游戏编程原理与实践教程是一本深入探讨如何使用Java语言进行游戏开发的专业书籍。它涵盖了游戏编程的基础概念、核心技术以及实战技巧,旨在帮助读者从零基础到熟练掌握Java游戏开发。书中结合了大量的实例和源...
Java游戏编程原理与实践是计算机科学中的一个重要领域,它结合了Java编程语言的特性与游戏设计的技巧。在这个教程源码包中,包含了多种经典游戏的实现,如推箱子、俄罗斯方块、超级玛丽等,这些都是游戏开发初学者和...
Java游戏编程导学 在Java游戏开发领域,Java以其跨平台、高效稳定的特点,成为许多开发者的选择。本导学将深入探讨如何利用Java语言来创建引人入胜的游戏。Java游戏编程不仅涉及到基本的编程概念,还涵盖了图形渲染...
Java游戏编程原理与实践教程是一本深入探讨如何使用Java语言进行游戏开发的专业书籍,由陈锐、夏敏捷、葛丽萍三位专家共同编著。这本书不仅涵盖了基础的编程概念,还详细介绍了游戏开发中的关键技术和实战技巧。通过...
总的来说,这个课程资料集覆盖了JAVA游戏编程的多个重要方面,从基础编程到高级图形和音频处理,再到游戏逻辑和用户交互,都是成为一名成功的JAVA游戏开发者所需掌握的知识。通过深入学习和实践,你将能够利用JAVA...
在深入探讨Java游戏编程的世界之前,我们先要理解Java作为一种编程语言的基础特性。Java是由Sun Microsystems(现为Oracle公司)于1995年推出的,它是一种面向对象、跨平台的语言,具有“一次编写,到处运行”的特性...
Java游戏编程是一个涵盖广泛的主题,它涉及到使用Java编程语言来创建各种类型的游戏,从简单的2D小游戏到复杂的3D大作。在这个领域中,开发者需要掌握基础的编程概念,以及特定于游戏开发的技术。 首先,Java是一种...
想学JAVA游戏编程吗?快来了解下吧!这个资源是Java初学者的极品教程,讲的简单透彻。
总之,Java游戏编程源码教程为初学者提供了一个全面的学习路径,从基本概念到实战项目,通过实践与理论相结合的方式,帮助他们掌握游戏开发的核心技能。在这个过程中,不断挑战自我,持续学习新的技术和工具,将有助...
本资源是一个Java游戏编程的小手册,涵盖了Java游戏开发的基本概念、技术和框架。下面是从该资源中提炼出的知识点: 一、Java游戏开发概述 Java游戏开发是使用Java语言创建游戏的过程。Java语言可以用于开发2D和...
java游戏编程光盘源代码!~
Java游戏编程开发教程是针对那些想要利用Java语言创建游戏的开发者设计的一套全面学习资源。Java作为一种跨平台、面向对象的编程语言,因其强大的性能和灵活性,在游戏开发领域有着广泛的应用。本教程将深入探讨如何...
在《Java游戏编程入门》这本书中,作者向我们揭示了使用Java语言开发游戏的基本概念和技术。这是一本适合初学者的教程,旨在帮助那些对编程和游戏开发感兴趣的人快速掌握必要的技能。书中不仅包含了Java语言的基础...
以下将详细介绍与"JAVA游戏编程源代码"相关的技术要点。 1. **Java基础知识**:Java是面向对象的语言,理解类、对象、封装、继承和多态等核心概念至关重要。同时,熟悉Java语法,如控制流(if-else,switch,循环)...
在百科里搜索“Java游戏编程” (http://baike.baidu.com/view/647813.htm),就能发现一部好书——《Java游戏编程》,是深入学习java可望而不可求(难买)的好书
本书的出版标志着Java游戏编程技术的深入探索和应用,是对游戏开发人员和爱好者来说一本非常实用的参考书籍。 从书的内容来看,涵盖了Java游戏编程的众多方面,主要包括以下几点: 1. Java 2D游戏编程基础:书中从...