-
1 # 一一哥Sun
-
2 # 魚塘愛69
1
所以我們需要定義swing元件,並在類初始化時初始化這些元件,新增元件。因為後面設計遊戲的時候,我們要確切知道遊戲區的大小,所以這裡設定遊戲區固定大小值。本來想用佈局來更好的管理,但作者對佈局也掌握不夠,所以就先設定固定大小吧。
3
定義我們的遊戲。貪吃蛇遊戲其實就是包含很多細小網格,然後蛇在網格中移動。蛇由一連串的網格組成,為了視覺效果,蛇身用藍色標記,食物用紅色標記,背景白色。如第一張圖片所示。所以,我們需要定義二維陣列,儲存網格資訊,儲存蛇身和食物的位置資訊等。初始化時,還需要新增鍵盤事件控制上下左右移動。
4
食物的位置資訊是二維的,所以我簡單定義了一個類用來儲存二維資訊。
5
6
在蛇身移動時進一步做吃掉食物、撞牆、撞到自己的處理。這是遊戲的主要邏輯。
7
最後,遊戲結束我們彈出一個對話方塊提示是否儲存遊戲得分。我們製作了排行榜資訊,只保留前10名的遊戲得分。首先定義了一個實現Comparable介面的遊戲得分類,按得分高,時間最早來排序。
8
遊戲結束時儲存得分資訊,看是否進入到排行榜中。而之前在初始化排行榜元件時就會載入遊戲排行榜資訊。
透過儲存和讀取排行榜資訊,我們也熟悉一下檔案讀取操作,還有集合、排序演算法的功能。
9
總之,沒有一技之長或者經過訓練,還是不要有這個想法了,不切合實際。
並且,遊戲做好之後,還需要經過一系列的遊戲認證,稽核。
在小範圍內可以傳播,但如果沒有透過的話,就不可以在大範圍內傳播。
-
3 # 搬磚碼農的人生
其實使用java開發遊戲也可以,java中開發遊戲可以選用libgdx或者jMonkeyEngine(JME)這兩款框架。
libgdx是一個跨平臺的2d/3d遊戲開發框架,它相容多個平臺,不過它對於ios的支援是基於RoboVM的,而RoboVM聽說快掛了,Libgdx主要是用Java寫的,其中也摻雜了一些C/C++程式碼,這些程式碼是為了處理一些對效能要求很高的操作,比如物理引擎或者音訊處理。作為使用者,你只需要關注Java的封裝就可以了,它已經把所有的原生代碼封裝好了。相比於其他遊戲引擎,libgdx的效率優勢十分明顯。
Libgdx由audio、files、graphics、math、physics、scenes、utils這些主要模組所組成,它們分別對應了Libgdx中的音訊操作,檔案讀取,2D/3D渲染,Libgdx繪圖相關運算,Box2D封裝,2D/3D遊戲元件,以及Libgdx內建工具類。
jme是專門開發3d遊戲的框架,它的後續版本將支援JOGL。JME和Java 3D具有類似的場景結構,開發者必須以樹狀方式組織自己的場景。JME有一套很好的最佳化機制,這使得它得執行速度要比Java 3D快很多。JME主要由Render系統、Material系統、GUI系統、Texture和圖片解碼器、檔案解碼器、Scene外掛(主要是地形系統)、粒子系統、日誌、物理系統、光照系統等構成。可以說JME是一個功能齊全,效能卓越的3D圖形引擎。
這兩款框架開發的遊戲一般執行在安卓或者桌面就可以了,桌面的話直接java –jar執行就行,不過前提得有java環境,如果想以exe執行的話也有其他工具轉換的,只是有時候坑很多。
一直java由於效能等原因,java並不是3D圖形應用的主流平臺,但隨著各種新技術的出現,這種情況有了很大改變。從開始的JIT、Static compilers,到現代的HotSpot技術,使Java程式的執行效率越來越高,已經接近於C++程式。此外,透過JNI技術,Java程式可以呼叫任意第三方庫,包括OpenGL和DirectX等圖形庫。基於JNI技術,Java平臺上出現了很多3D圖形API,這在效能上已經越來越不錯了。
回覆列表
一般來說,Java開發有這麼幾個方向,JavaME,可以進行一些早期的手機軟體開發,但是目前已經基本淘汰;JavaEE企業級專案開發,一般都是進行web方向的開發;JavaSE+Android系統進行原生Android開發;還有就是GUI方向PC軟體的開發。
但是無論哪個方向,其實Java都不適合做遊戲開發,當然一些小的比如貪吃蛇,掃雷等小遊戲開放起來還是沒問題的,稍大點的或者專業性的遊戲開發都不會選擇Java。
並不是Java不夠強大,而是Java不是做遊戲開發的。一般開發遊戲的技術是C,C++,C#系列語言,結合Unity,Cocos2D,Cocos3D等技術進行開發。
目前世界上大多數Web專案,一般都是選擇Java進行開發,我們常見的各種電商網站後臺,銀行專案,金融專案等各種網站或後臺,一般都是Java開發的,比較穩定安全可靠。但是Java真的不是開發遊戲的料,你要非得用Java開發吃雞遊戲,估計玩不幾下就得Over。
就好比Java是一箇中餐大廚,川魯湘粵八大菜系都精通,但是你現在非讓他去做西餐牛排,可能也能做出來,但是總歸是怪怪的。