我相信大多數軟件開發人員可能會在年輕人(年輕人)一生中的某一時刻被迫創建游戲來幫助他們學習編程語言(我知道我確實做到了)。 以前,我的第一臺計算機實際上是Franklin Ace 1000 ,后來是Apple [] 。 在這些系統上開發游戲時,這非常具有挑戰性。 對于初學者,您必須學習匯編語言(6502),實際上幾乎沒有工具來創建精靈(圖形資產)。 我認為我最喜歡的一款游戲可能是第一款實時策略(RTS)游戲,是Rescue Raiders (1984)。
讓我們向前邁進2012年,此后,計算機,圖形工具包,庫和游戲引擎已經走了很長一段路。 許多API都會提供很多屏蔽API用戶的管道,以便他們可以專注于使游戲變得有趣和刺激。 談到API JavaFX 2.x不僅是創建美觀應用程序的出色UI工具包,而且還可以使游戲變得有趣。 使用JavaFX 2.x,您將能夠創建可以消磨時間并帶來數小時樂趣的游戲!
![]() |
圖1太空飛船的SVG |
長大后我總是對科幻電影如“星球大戰”和“ 星際迷航”著迷。 我一直想創建一個簡單的頂視圖顯示游戲(2D),在其中我可以像經典游戲《小行星》一樣控制飛船。 但是,隨著時間的流逝,一位朋友與我分享了《 星際爭霸 1》和《 母巢之戰》,我感到非常驚訝。 我真的很喜歡今天的比賽,所以我想采用游戲的某些元素,例如使用鼠標指針和按鈕(例如:Terran Battle Cruiser)導航部隊和部隊。
在此博客文章(第1部分)中,我將簡要說明使用簡單形狀的簡單太空船的游戲或導航。 在第1部分(此博客條目)中沒有顯示代碼,而是一個簡單的應用程序來演示飛船在最終游戲中的行為。 隨著系列的進行,您會注意到漸進式的變化,例如酷炫的精靈,聲音等。記住,最后一場比賽將是一艘宇宙飛船,避開敵艦并以聲音效果向后射擊。 該船將看起來像此博客條目開頭所描述的船(圖1)。
我想創建一系列博客條目( 六個部分 ),詳細介紹如何創建JavaFX 2.x游戲的教程。 。 以下是該系列的簡要摘要:
第1部分–簡介( 單擊此處以運行演示 )
第2部分– 游戲循環
第3部分-輸入/(鼠標,鍵盤) 第4部分–精靈/碰撞 第五部分–聲音 第六部分–結論性思想
需求與設計
- 使用基本形狀創建太空飛船的原型。
- 根據鼠標右鍵單擊的屏幕位置,順時針或逆時針旋轉飛船。
- 按下主按鈕時發射射彈。
- 顯示鼠標按下(x,y)屏幕坐標
- 顯示角度以旋轉船頭(船前)
- 顯示飛船旋轉的方向(順時針或逆時針)
圖2中顯示的是一個使用簡單形狀的簡單原型,以幫助我們專注于數學。 一個好的原則是在投入大量時間來繪制圖形資產之前,先創建一個功能原型。
![]() |
圖2太空飛船原型 |
- (MX,MY)–鼠標按下(x,y)可以協調JavaFX Scene上的空間。
- (vx,vy)–相對于船心的結束角或鼠標按下(x,y)坐標轉換為笛卡爾坐標。
- (ux,uy)–起始角或上次鼠標按下(x,y)坐標轉換為相對于船中心的笛卡爾坐標。
- U形角:船首旋轉角度。 在笛卡爾坐標系(1,0)中,鼻子指向西或零度。 隨著船舶逆時針旋轉,角度會增加。 當沿順時針方向移動時,旋轉角度將為負數。
- V角:船頭應在其停止位置旋轉的角度。 在笛卡爾坐標系(1,0)中,鼻子指向東或零度。 隨著船舶逆時針旋轉,角度會增加。 當沿順時針方向移動時,旋轉角度將為負數。
- 方向:旋轉船頭以順時針或逆時針旋轉船。 當單擊鼠標以在小于180度的角度旋轉船舶時,船舶將轉向鼠標單擊,而不是轉向大于180度的另一種方式(長距離)。
演示版
要求:
- Java 7或更高版本
- JavaFX 2.0或更高版本
- Windows XP或更高版本(應該很快可用于Linux / MacOS)
飛船導航和武器系統的簡單原型。
說明:
- 右鍵單擊(在Windows上)鼠標以飛船。
- 主武器(在Windows鼠標上單擊鼠標左鍵)以射擊武器。
單擊此處運行演示
參考文獻
富蘭克林Ace –老式計算機:http://www.vintage-computer.com/franklin.shtml
Apple] [ –老式計算機:http://en.wikipedia.org/wiki/Apple_II
救援攻略 –維基百科:http://en.wikipedia.org/wiki/Rescue_Raiders
星球大戰 –電影數據庫:http://www.imdb.com/title/tt0076759/
星際迷航 –電影數據庫:http://www.imdb.com/title/tt0796366/
星際飛船 –維基百科:http://en.wikipedia.org/wiki/Star_Craft
星際飛船母巢之戰 –維基百科:http://en.wikipedia.org/wiki/StarCraft:_Brood_War
http://en.wikipedia.org/wiki/Rescue_Raiders
參考:來自我們的JCG合作伙伴 Carl Dea的JavaFX 2 GameTutorial第1部分 ,位于Carl's FX博客上。
翻譯自: https://www.javacodegeeks.com/2012/04/javafx-2-gametutorial-part-1.html