导航:首页 > 编程语言 > java5游戏编程

java5游戏编程

发布时间:2022-11-27 20:26:16

A. java游戏开发要学什么

Java游戏开发要学什么?所谓的游戏开发编程语言其实有很多,基本上任何一种语言都可以作为游戏服务器的编程语言。这需要根据自己游戏的类型和要求加以选择。比如C++,Java,Erlang,go等等。目前我用过的只有C++和Java.但是以Java为主。所以接下来就以自己的经验,谈谈以Java为核心的游戏服务器开发技术体系。

Java目前作为游戏服务器开发语言已经很是普遍。但是大多数是作为页游或手游的服务器,而端游戏一般选择C++,因为端游对服务器的性能要求相对比较高一些。两种语言各有利弊。C++效率高,但是掌握度难些。没有Java易于掌握。而目前对于追求快速上线率的页游和手游来说,Java成了一个不错的选择。

一、Java的技术系统

需要学习的技术:

(1)Java基础知识

(2)JavaNIO编程

(3)Netty,Mina网络框架精通一种,其它作为了解。

(4)一种缓存框架:Redis;memcache熟悉使用一个。

(5)SQL语言,用于数据库:mysql数据库

(6)springmvc主要用于http协议的服务器

(7)多线程编程,明白线程安全的重要性。

(8)Java并发集合的掌握。

(9)linux常用的基本命令及shell脚本。

(10)数据库操作,比如mybatis。

以Java为服务器编程语言来说,掌握Java的基本知识就不必说了,是必不可少的。可以参考《Java编程思想》,《Java核心技术》等书。根据游戏通信协议的不同,大致有两种实现方式:Socket和http。先说简单些的http协议,这个协议已经很成熟的应用到了网站上。而Java语言也可以用于网站开发,所以相当就简单些。现在有很多开源的服务器软件,比如:tomcat,resin等。游戏前端不管是页游flash,还是手游的Android,IOS都支持http协议,只要把游戏的逻辑数据按post方法向服务器发出请求即可了。

二、学习流程

当然了,学习这些东西并不是一蹴而就的。需要根据实践循环渐进,这里推荐一个学习流程:

(1)对于初学Java的人来说,如果自学能力好些,可以买些书自己练习,而现在又更的多选择参加Java培训机构,以快速的掌握Java的知识。

(2)掌握了Java知识之后,要多写代码实践。这个时候可以结合mysql学习SQL语言,掌握数据库的操作。比如用springmvc写一个小网站,用mybatis实现网站数据的增,删,改,查等功能。

(3)完成上步之后,可以在服务器程序和数据库之间加一个缓存,学习redis或memcache。

(4)把程序部署到linux服务器上,练习linux的基本命令及shell脚

免责声明:内容来源于公开网络,若涉及侵权联系尽快删除!

B. Java游戏高级编程的前 言

花代价所换来的一点才智,抵过别人传授的数倍不止。
—— 本杰明?富兰克林
本书针对的是那些想使用最新的高性能技术,创建面向Web和桌面的复杂2D计算机游戏的Java程序员。本书循序渐进地介绍了一个可重用的动画库,每一章都依赖于前面的一些章节。在需要说明这些主题的地方,都详细地介绍了每一个新库类的源代码,并且给出了实际使用这些类的示例游戏。免费许可使您可以直接修改和调整库代码和示例游戏,开发自己的游戏程序。
目的
本书也可取名为《现代Java游戏编程》。在以前出版的Java游戏编程的书籍中介绍的很多技术和主题,已被Java编程语言和它的高级类库所淘汰。这包括像线程管理、事件管理、图形用户界面、网络通信、持久性和部署等方面。在本书中,我对这些变更作了适当的注释,并简要地对这些技术作了一些对比。
虽然通过将每一帧中需要重绘像素的数量最小化就可以在Java中创建高速的动画,但是在最近发布的Java编程语言的1.4版中引入的新类,又提供了通过可移植方式直接访问视频硬件的方法。正如在本书中介绍的一样,即使每一帧中需要更新的像素很多,也可以实现高速的帧速率。在这里介绍了一个示例程序,用来演示在真彩色高分辨率模式中,成功地将全屏动画和显示器75Hz的刷新率同步。
尽管本书最初的设计是面向游戏,但是读者应该知道这里介绍的技术也可以用在其他应用方面,包括广告和仿真。嵌在Web页面中的动画调幅广告applet会立即闪现在您的大脑中。调幅广告可以使用强大的通用编程语言(例如Java)编写的这个事实,充分发掘它们超越动画的辅助功能的潜能,包括活动数据连接。在仿真领域,学生和科学家都可以从可视化上获益。当这些模型使用Java表示的时候,用户就可以与它们进行交互、更改参数并观察新的结果。
读者对象
本书专门针对具有丰富经验、正准备和渴望将他们独特的游戏设计思想转换为部署实体的Java开发人员。对这些读者而言,从想了解有趣的游戏特定逻辑以来,一直在学习Java编程语言和实现基本的基础结构代码。
同时,这些Java高级开发人员希望详细地了解可能会影响游戏性能的可重用库中的优化选项。在介绍游戏库和本书示例游戏中的这些源代码时,我假定读者已经掌握了一些基本的主题,例如Java编程语言、面向对象的编程(Object Oriented Programming,OOP)技术、图形用户界面(Graphical User Interface,GUI)组件库,以及一些设计模式等。
范围
本书简要(没有深入地)介绍了那些虽然必需但又不是专门用于Java游戏编程的技术。这包括通用的开放源代码开发工具和通用的标准以及应用编程接口(API),这些都是很多经验丰富的Java游戏程序员已经使用过的技术。在书中,还提供了在这些方面需要进一步阅读的参考书目。
本书介绍的很多可重用库都利用了在核心Java平台里可用的最新API、当前的J2SE 1.4版。本书没有介绍那些过时的API,例如AWT(Abstract Window Toolkit)。相反,深入地研究了应用现代API的具体技术,包括Java游戏编程用于动画设计的Swing。
除了Java 2D和Image I/O API以外,Java Media API中绝大部分API都没有在本书中介绍,因为我考虑到它们在游戏开发中会有一些限制。在游戏中使用Java 3D、JMF(Java Media Framework)或者Java Speech API,就强制玩家下载安装一个可选包和它的本地代码实现。我相信这种附加的步骤将会使很多潜在的玩家退缩,尤其是那些遇到安装问题和下载延迟问题的玩家。尽管已经对J2SE内核库的一部分进行了安装,但是Java Sound API仍然需要一个soundbank文件,这个文件对有些操作系统而言是默认包含在Java运行库环境(JRE)发布中的,而对Windows而言则不是。Java共享数据工具包(Java Shared Data Toolkit,JSDT)API,尽管也可以在网络游戏中使用,但是它们好像已经被废止了。我在游戏编程里,还没有发现确实需要使用Java高级图像(Java Advanced Imaging,JAI)的地方。
本书并没有回避将Java与平台专用代码混合的Java本地接口(JNI)API的使用,但是也不鼓励这样使用。本书中给出的所有代码都是用纯粹、可移植的Java语言编写的,它们能够在所有安装有Java虚拟机的平台上运行。作为一个开发人员,我发现不使用定制的本地库也可以实现高性能。作为一个玩家,我更加喜欢用纯Java编写的游戏,因为我不必因为安全风险而烦恼,并且我知道游戏将会运行在我喜欢的平台上,而不管这是个什么平台。
本书没有介绍使用Java 2 Micro Edition(J2ME)平台进行Java游戏开发。我希望像摩尔定律中描述的那样,硬件性能的快速发展能使J2ME很快过时。如今的手持PDA使用的微处理器的性能已经与3年以前使用的最好计算机的处理器性能一样强大了。现在在PDA上安装J2SE和运行Swing应用程序已经成为可能。如果在近几年内看到J2EE运行在手表上,我将不会感到惊奇。
在学习后面的关于多玩家联网模式的相关章节时,确实需要读者具有一些J2EE的知识。然而,这也限制使用Servlet API进行开发。更为复杂的J2EE API(例如Enterprise Java Beans(EJBs))的使用方法,本书并没有进行介绍。所有示例的网络游戏都会运行在一个简单的servlet容器以内,并且也不需要安装一个完全的应用服务器。

C. Java各种小游戏的编程思路

Java小游戏主要的是使用java swing,通过组件化示例一个模型,鼠标监听移动,刷新界面,进行交互。

D. java小游戏编程

/**
* File: ControlPanel.java
* User:相思无偿
* Date: 2004.12.3
* Describe: 俄罗斯方块的 Java 实现
*/

import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EtchedBorder;
import java.awt.*;
import java.awt.event.*;

/**
* 控制面板类,继承自JPanel.
* 上边安放预显窗口、等级、得分、控制按钮
* 主要用来控制游戏进程。
*/
class ControlPanel extends JPanel {
private JTextField
tfLevel = new JTextField("" + ErsBlocksGame.DEFAULT_LEVEL),
tfScore = new JTextField("0");

private JButton
btPlay = new JButton("Play"),
btPause = new JButton("Pause"),
btStop = new JButton("Stop"),
btTurnLevelUp = new JButton("Turn hard"),
btTurnLevelDown = new JButton("Turn easy");

private JPanel plTip = new JPanel(new BorderLayout());
private TipPanel plTipBlock = new TipPanel();
private JPanel plInfo = new JPanel(new GridLayout(4, 1));
private JPanel plButton = new JPanel(new GridLayout(5, 1));

private Timer timer;
private ErsBlocksGame game;

private Border border = new EtchedBorder(
EtchedBorder.RAISED, Color.white, new Color(148, 145, 140));

/**
* 控制面板类的构造函数
* @param game ErsBlocksGame, ErsBoxesGame类的一个实例引用,
* 方便直接控制ErsBoxesGame类的行为。
*/
public ControlPanel(final ErsBlocksGame game) {
setLayout(new GridLayout(3, 1, 0, 4));
this.game = game;

plTip.add(new JLabel("Next block"), BorderLayout.NORTH);
plTip.add(plTipBlock);
plTip.setBorder(border);

plInfo.add(new JLabel("Level"));
plInfo.add(tfLevel);
plInfo.add(new JLabel("Score"));
plInfo.add(tfScore);
plInfo.setBorder(border);

tfLevel.setEditable(false);
tfScore.setEditable(false);

plButton.add(btPlay);
plButton.add(btPause);
plButton.add(btStop);
plButton.add(btTurnLevelUp);
plButton.add(btTurnLevelDown);
plButton.setBorder(border);

add(plTip);
add(plInfo);
add(plButton);

addKeyListener(new ControlKeyListener());

btPlay.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
game.playGame();
}
});
btPause.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (btPause.getText().equals(new String("Pause"))) {
game.pauseGame();
} else {
game.resumeGame();
}
}
});
btStop.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
game.stopGame();
}
});
btTurnLevelUp.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
try {
int level = Integer.parseInt(tfLevel.getText());
if (level < ErsBlocksGame.MAX_LEVEL)
tfLevel.setText("" + (level + 1));
} catch (NumberFormatException e) {
}
requestFocus();
}
});
btTurnLevelDown.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
try {
int level = Integer.parseInt(tfLevel.getText());
if (level > 1)
tfLevel.setText("" + (level - 1));
} catch (NumberFormatException e) {
}
requestFocus();
}
});

addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent ce) {
plTipBlock.fanning();
}
});

timer = new Timer(500, new ActionListener() {
public void actionPerformed(ActionEvent ae) {
tfScore.setText("" + game.getScore());
int scoreForLevelUpdate =
game.getScoreForLevelUpdate();
if (scoreForLevelUpdate >= ErsBlocksGame.PER_LEVEL_SCORE
&& scoreForLevelUpdate > 0)
game.levelUpdate();
}
});
timer.start();
}

/**
* 设置预显窗口的样式,
* @param style int,对应ErsBlock类的STYLES中的28个值
*/
public void setTipStyle(int style) {
plTipBlock.setStyle(style);
}

/**
* 取得用户设置的游戏等级。
* @return int, 难度等级,1 - ErsBlocksGame.MAX_LEVEL
*/
public int getLevel() {
int level = 0;
try {
level = Integer.parseInt(tfLevel.getText());
} catch (NumberFormatException e) {
}
return level;
}

/**
* 让用户修改游戏难度等级。
* @param level 修改后的游戏难度等级
*/
public void setLevel(int level) {
if (level > 0 && level < 11) tfLevel.setText("" + level);
}

/**
* 设置"开始"按钮的状态。
*/
public void setPlayButtonEnable(boolean enable) {
btPlay.setEnabled(enable);
}

public void setPauseButtonLabel(boolean pause) {
btPause.setText(pause ? "Pause" : "Continue");
}

/**
* 重置控制面板
*/
public void reset() {
tfScore.setText("0");
plTipBlock.setStyle(0);
}

/**
* 重新计算TipPanel里的boxes[][]里的小框的大小
*/
public void fanning() {
plTipBlock.fanning();
}

/**
* 预显窗口的实现细节类
*/
private class TipPanel extends JPanel {
private Color backColor = Color.darkGray, frontColor = Color.lightGray;
private ErsBox[][] boxes =
new ErsBox[ErsBlock.BOXES_ROWS][ErsBlock.BOXES_COLS];

private int style, boxWidth, boxHeight;
private boolean isTiled = false;

/**
* 预显窗口类构造函数
*/
public TipPanel() {
for (int i = 0; i < boxes.length; i++) {
for (int j = 0; j < boxes[i].length; j++)
boxes[i][j] = new ErsBox(false);
}
}

/**
* 预显窗口类构造函数
* @param backColor Color, 窗口的背景色
* @param frontColor Color, 窗口的前景色
*/
public TipPanel(Color backColor, Color frontColor) {
this();
this.backColor = backColor;
this.frontColor = frontColor;
}

/**
* 设置预显窗口的方块样式
* @param style int,对应ErsBlock类的STYLES中的28个值
*/
public void setStyle(int style) {
this.style = style;
repaint();
}

/**
* 覆盖JComponent类的函数,画组件。
* @param g 图形设备环境
*/
public void paintComponent(Graphics g) {
super.paintComponent(g);

if (!isTiled) fanning();

int key = 0x8000;
for (int i = 0; i < boxes.length; i++) {
for (int j = 0; j < boxes[i].length; j++) {
Color color = (((key & style) != 0) ? frontColor : backColor);
g.setColor(color);
g.fill3DRect(j * boxWidth, i * boxHeight,
boxWidth, boxHeight, true);
key >>= 1;
}
}
}

/**
* 根据窗口的大小,自动调整方格的尺寸
*/
public void fanning() {
boxWidth = getSize().width / ErsBlock.BOXES_COLS;
boxHeight = getSize().height / ErsBlock.BOXES_ROWS;
isTiled = true;
}
}

private class ControlKeyListener extends KeyAdapter {
public void keyPressed(KeyEvent ke) {
if (!game.isPlaying()) return;

ErsBlock block = game.getCurBlock();
switch (ke.getKeyCode()) {
case KeyEvent.VK_DOWN:
block.moveDown();
break;
case KeyEvent.VK_LEFT:
block.moveLeft();
break;
case KeyEvent.VK_RIGHT:
block.moveRight();
break;
case KeyEvent.VK_UP:
block.turnNext();
break;
default:
break;
}
}
}
}

E. 自学Java 自学手机游戏编程如何起步

1。 要有java基础。 j2se要学得入门。 你如果有大把时间,每天学五小时。 半年就行了。 前提是每天不间断学理论。一学学理论一边做大量的习题。大学教材里的习题要全做完,做完后还要到处找题目做。不会做的发贴问别人。但要搞懂为什么。

2。 j2se精了,j2me手机版最多三个月就能出师!

别信别人卖广告的,有很多学校都是骗钱的!
这个世界上,你唯一可以相信的人就是自己,唯一可以依靠的就是你自己的努力加恒心!

我可以告诉你,学java的路很漫长,很艰苦。 但如果你非常努力,可以比别人更快出师。
而且你出师后上班后经过几年奋斗月薪上万也不是什么稀奇事!

再补充一句: 公司里的软件精英,在大学四年也没学到什么东西,一点点理论,大部分都是自学的。你自己想想,大学总共四年,第一年不用学,第四年有半年找工作去了,只有两年半在学java, 每周才几节课, 每节课才一至两个小时。如果你每天不间断,每天学三到五个小时,天天做练习,不懂就上网问,一定比大学里的学生学得快。 你要上网找朋友,入java群,出入网络提问,出入各种java论坛提问题,交朋友,就更加快了。 googel是好东西。不能少

F. java 5 游戏编程`` 为什么叫JAVA 5呢书中实例的环境是什么版本的

java 5 就是基于 JDK1.5 开发的java程序,书中实例就是基于 JDK1.5 开发的

G. Java游戏高级编程的内容简介

在第1章“配置开发环境”中,我向读者介绍了将要在整本书中使用的代码库。描述了这个库的设计,并给出了编译示例游戏的说明。可能会在游戏开发环境中使用的一些附加代码、图形和音频文件,也在本章确定了下来,还介绍了软件开发的一些流行工具。以模板的形式给出了一个演示Java游戏编程基础知识的游戏示例。
在第2章“部署框架”中,我们关注的重点是在可以安装在多种不同类型的平台上的一个框架中部署游戏。在动画线程管理技术的相关内容中,介绍了一个被广泛使用的框架接口以及applet生命周期。在对适合于游戏的不同发布而进行不同部署的选项进行了一个简要的回顾以后,给出了允许游戏部署在不同开发环境中而不需要任何修改的一个抽象层的源代码示例。
在第3章“Swing动画”中,介绍了一个基于Swing的动画库,这个动画库会在整本书中使用。这一章主要考虑的问题是动画的性能和灵活性。在介绍核心动画引擎类的源代码时简单介绍了优化权衡。
在第4章“动画库”中,介绍了通用动画任务的一个类集合。这些类提供了很多功能,例如场景管理和Sprite实现。它们也用来介绍怎样开发与核心动画引擎类互操作的游戏特定代码。
在第5章“高级图形技术”中,介绍了高级图形技术,包括硬件加速图形、多缓冲和全屏独占模式。给出了使这些技术的使用变得更加方便的可重用类和使用这些可重用类的示例游戏。对其中的每一个技术,都介绍了关于它们使用方法的一些限制。
在第6章“持久数据”中,对在各种部署框架中加载和保存游戏数据的机制进行了对比。在这个过程中还介绍了可以用于大多数游戏编程的可重用数据持久性的类库。对更加高级的持久性需求的其他选择也进行了考虑。
在第7章“游戏体系结构”中,介绍了适合于Java游戏开发的面向对象的软件体系结构的优点。使用这种体系结构的一个示例游戏是作为新游戏开发模板进行介绍的。本章还简单介绍了一下数据驱动的设计。
在第8章“A*算法”中,介绍了现在在游戏行业中最流行和最常用的一个人工智能(AI)算法的实现。本章还介绍了使用A*算法绕过障碍物寻找路径的示例。
在第9章“HTTP隧道技术”中,介绍一个可以在大部分Java游戏部署环境里常见的安全限制以内进行操作的一个联网库。本章还给出了一个示例,在这个示例中,数据在服务器和客户机之间进行传递。
在第10章“HTTP轮询机制”中,将联网库扩展以支持在线多玩家游戏。使用轮询来同步客户机和服务器上的游戏状态。在由单玩家游戏向多玩家联网游戏的转换中,介绍了我所推荐的软件体系结构的灵活性。
在第11章“HTTP Pulling机制”中,事件驱动的消息是作为轮询的另一个选择而推荐使用的。使用在前面两章中介绍的这些类,演示了这是怎样在无符号applet的安全限制以内实现的。使用这些技术进行进一步开发的一些建议已经超出了本书的范围,这里只进行简单的介绍。
本书合作站点
本书应该保持其“高级性”。为此,我专门为这本书建立了一个Web站点。从这个站点上,您能够订阅与本书相关的电子邮件列表,包括补充的指南和勘误表。您将能够测试和运行本书所介绍的示例游戏,并下载开放源代码库和用来创建这些游戏的公共领域的多媒体文件。针对老师,我已经在Creative Commons Attribution License下发布了我在讲授游戏开发课程中使用的课程提纲、幻灯片和布置给学生的作业。我也提供了我的联系方式,这样您可以将您的建议和意见反馈给我,以便我以后进行更正。
在开始阅读第1章以前,请先访问网站,并订阅Advanced Java Game Programming通知邮件列表。
IV
Java游戏高级编程

H. 怎么用Java编程游戏

不太推荐用java来开发游戏,java开发3D游戏虽然以前出了个java3D的东西来支持,但是渲染出来的效果很差.如果你做一些2D的小游戏自己玩的话.javafx应该可以满足。开发游戏还是用c++吧..工具什么的U3D好像也很流行。

I. java编程:实现一个玩游戏并晋级的编程(用户玩游戏,每次玩5局,每次玩游戏不足5局则不能晋级.

package com;

import java.util.ArrayList;
import java.util.List;

public class Main {

/**
* @param args
*/
public static void main(String[] args) {
List<Integer> list = new ArrayList();
for(int i=0;i<5;i++){
int count=80;
System.out.println("第"+i+1+"次游戏,本次游戏分数为"+count);
list.add(count);

}
if(list.size()!=5){
System.out.println("游戏次数小于5次,不能晋级");
}else{
int j=0;
for(int i=0;i<list.size();i++){
if(list.get(i)>=80){
j++;
}
}
if(j>=4){
System.out.println("游戏晋级一级");
}else if(j>=3&&j<4){
System.out.println("游戏晋级二级");
}else{
System.out.println("很抱歉,不能晋级");
}
}
}

}

阅读全文

与java5游戏编程相关的资料

热点内容
在文件夹什么word文档 浏览:991
刺激爱情片 浏览:644
电影迷途少女微笑片段 浏览:722
现在还有什么网站能看 浏览:161
韩国电影在哪个视频看 浏览:808
android观察者模式使用 浏览:567
服务器03系统和08有什么区别 浏览:723
程序员都是如何自学的 浏览:938
迅雷影院类似的网站 浏览:492
韩国电影吻戏电影推荐5个小时合集 浏览:82
有一部小说女主角叫苏 浏览:299
一女主多男主的小说在线阅读 浏览:810
电影院的人可以携带多大孩子 浏览:630
云服务器nginx集群怎么弄 浏览:741
热感1975在线观看 浏览:205
女主被几个男主囚禁,逃跑4年后回来 浏览:126
都市绝世战神叶凌天 浏览:754
拍摄指南txt百度云下载 浏览:829
女主是大学老师的小说男主是总裁 浏览:184
方舟编译器在哪升级 浏览:704