導航:首頁 > 編程語言 > 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游戲編程相關的資料

熱點內容
阿里雲伺服器t5 瀏覽:46
命令行調用程序 瀏覽:73
汽缸壓縮比大了好嗎 瀏覽:667
工程電路分析pdf 瀏覽:48
k線圖源碼大全 瀏覽:457
c語言編譯器可以走c嘛 瀏覽:18
蘋果已經購買的app如何不再訂閱 瀏覽:150
ubuntu默認命令行 瀏覽:532
平面橢圓怎麼編程 瀏覽:516
安卓手機微信照片馬克筆怎麼去掉 瀏覽:231
編譯器工具是什麼 瀏覽:983
年底解壓的最佳方法 瀏覽:193
操作系統源碼查詢 瀏覽:853
陪聊app怎麼收費 瀏覽:88
python刪除csv文件的特定行 瀏覽:484
51單片機如何串口發送數據 瀏覽:998
文件夾的修改日期是啥 瀏覽:753
金碟雲伺服器數據稅務 瀏覽:988
java進程退出 瀏覽:849
redisjava使用 瀏覽:871