999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于java的手機游戲設計的研究

2017-09-18 01:25:32
數碼設計 2017年11期
關鍵詞:按鈕程序游戲

張 敏

?

基于java的手機游戲設計的研究

張 敏

(武漢信息傳播職業技術學院 湖北 武漢 430223)

隨著手機、ipad、筆記本電腦等移動設備的普及,Java功能在移動設備上的普遍應用更為明顯,基于Java功能的手機增值服務日益體現出其影響力,J2ME(Java 2 Micro Edition)技術應運而生,它主要定位在消費性電子產品上,完美地解決了設備的智能化、多樣化,極大地豐富了人們的生活,為人們提供了快捷的咨詢和服務。

本文介紹了一個基于J2ME的手機游戲的設計過程。本文采用開源的Eclipse為基本的開發環境,以J2ME開發套件為基本開發工具,設計了名為瘋狂賽車的java小游戲。本文從游戲的需求分析開始,詳細描述了設計概要,并且對于游戲的具體實現過程作了詳細的闡述,最后也對游戲的調試做了簡單的介紹。本文為一個完整的基于J2ME的手機游戲設計過程,有助于推廣到基于java的其他手機增值業務的開發和設計。

Java;J2ME;MIDP2.0;手機游戲

1 引言

隨著手機的日漸普及,基于手機的應用越來越多:QQ、MP3、視頻、攝像、導航定位、新聞快訊、電子錢包等等。這些應用都是為了滿足人們的需要而開發的,都取得了不同程度的發展。而其中的一個應用——手機游戲已經成為整個視頻游戲領域發展速度最快的部分。手機游戲給人以極大的想象空間,激勵著眾多知名企業和創業團隊加入到手機游戲的產業之中,其擁有的巨大的商業潛力,在不久的將來必將成為游戲行業的下一個金礦。盡管每個手機游戲都不貴,但是巨大的使用量將使得這個市場商機無限。隨著3G時代的到來,手機游戲必然有著不可限量的發展前景。

2 開發環境及其優勢

眾所周知,現在的手機具備了越來越多的新的功能,比如藍牙、視頻、GPS等,當然游戲功能也越來越強大,而開發這些手機應用軟件主要依賴于這些平臺:J2ME、Brew、Symbian。J2ME平臺的優點是開發速度快、周期短、支持的手機多、開發資源豐富、移動已商用。而缺點是代碼可以反編譯。各廠商SDK不兼容,同一廠商的不同型號手機不兼容,限制比較多,不完全支持Socket,執行效率低。BREW的優點:API功能較強,速度較快,聯通已商用。缺點是目前只支持C,支持手機不多。Symbian的優點是獨立操作系統,功能強大,支持幾乎所有新功能,是未來手機的趨勢。缺點是開發難度很大,成本相對較高,各種資源較少。

綜上比較以上幾種開發平臺的優缺點,可以發現J2ME具有移植性強、開發速度快、跨平臺、開發資源豐富的優勢,選用J2ME平臺來進行手機游戲的開發是很理想的選擇。這個版本針對資源有限的電子消費產品的需求精簡核心類庫,并提供了模塊化的架構讓不同類型產品能夠隨時增加支持的能力。由此看來使用J2ME平臺來開發游戲項目是最理想不過的。本文采用開源的Eclipse為基本的開發環境,以J2ME開發套件為基本開發工具,完成游戲的設計。

3 游戲環境實現

3.1 游戲開發環境搭建

(1)安裝JDK:由于Eclipse自身并沒有附帶Java運行環境JDK,所以安裝前要先安裝JDK。本文采用的是jdk1.6.0_10。

(2)Eclipse的安裝:本文采用的Eclipse版本為Eclipse3.2。Eclipse安裝很簡單,只需要將下載的Eclipse壓縮包解壓到任何一個選定的目錄即可。本文將其解壓到C:Program Fileseclipse。本文采用的是中文開發環境,因此需將Eclipse的語言包NLpack-eclipse-SDK-3.0解壓到與Eclipse相同的目錄下,即C:Program Fileseclipse即可。

(3)安裝并配置EclipseME插件:EclipseME作為Eclipse一個插件,致力于幫助開發者開發J2ME應用程序。但是EclipseME并沒有為開發者提供移動設備模擬器。所以后面還要進行加載WTK模擬器。

(4)加載WTK(j2me_wireless_toolkit-2_1_01-windows.exe):WTK是Sun J2ME Wireless Toolkit的簡稱。它是sun公司所提供的一個無線開發工具包,該工具包包含生成工具、實用程序及設備仿真器。它向用戶提供一個集成環境,把程序的編譯、連接和運行等操作全部集中在一個環境上運行,使用十分方便。它通用性高,開發出的應用程序可保證能運行在大部分設備上。由于EclipseME并沒有為開發者提供移動設備模擬器。所以,為了能為開發者提供一種無縫的統一集成開發環境,還需要將手機廠商的模擬器配置到Eclipse開發環境中。

3.2 環境檢測

(1)建立工程及文件

在Eclipse平臺上順序選擇“文件”、“新建”、“J2ME”、“J2ME Midlet Suite”,然后命名該工程名為:helloworld。與此同時在上述工程下建立一個MIDlet文件:helloworld。操作:在Eclipse平臺上右鍵單擊工程名,然后在彈出的快捷菜單中順序選擇“新建”、“J2ME”、“J2ME Midlet”,接著命名該文件名為:helloworld,將上述代碼復制到helloworld文件下并保存。

(2)調試運行

在Eclipse平臺上,右鍵單擊工程名,然后再彈出的快捷菜單中順序選擇“運行方式”、“運行”、“Wireless Toolkit Emulator”。右擊“Wireless Toolkit Emulator”選項,在彈出的快捷菜單中選擇“new”,彈出上面那個對話框。指定helloworld為可執行MIDlet程序的入口文件,然后單擊“應用”,最后單擊“運行”運行。Eclipse自動啟動WTK的模擬器,顯示“歡迎J2ME&EclipseME!”。

每個MIDlet程序都必須有一個主類,該類必須繼承自MIDlet。它控制著整個程序的運行,并且可以通過相應函數從程序描述文件中獲取相關的信息。該類中擁有可以管理程序的創建、開始、暫停、結束的函數。

4 需求分析

4.1 本游戲實現的功能及要解決的技術問題

本游戲主要實現的功能是小車躲避障礙物(炸彈),具體是通過方向鍵控制小車的方向(上、下、左、右)從而躲避自上而下降落的炸彈,在游戲開始的同時,開始計分,到最終程序檢測到有碰撞事件發生時(也即游戲結束時)停止計分,退出游戲同時顯示得分。要實現以上功能必須解決以下這些問題:

4.1.1關于碰撞檢測的算法

發現在碰撞發生時其實并不是兩個物體的相切時,而是還隔有一小段距離就發生碰撞事件,原因是采用了矩形和矩形進行碰撞:一般規則的物體碰撞都可以處理成矩形碰撞,實現的原理就是檢測兩個矩形是否重疊。但是矩形碰撞只是一種比較粗糙的碰撞檢測方法,因為很多實際的物體可能不是一個規則的矩形。解決方法是:

(1)盡量使用物體是矩形的圖片;

(2)采用圓形和圓形的碰撞,因為在數學上對于兩個圓形是否發生重疊,有計算兩個圓心之間的距離的公式。那么條件就變為:計算兩個圓心之間的距離是否小于兩個圓的半徑之和。

4.1.2邊界檢測

通過程序控制賽車和炸彈在屏幕上的出現位置,避免越界。這個問題只需通過比較坐標與屏幕的大小即可實現。如程序:炸彈的邊界檢測:

if (x < bombWidth) x = bombWidth;

if (x > gameCtrl.width - bombWidth) x = gameCtrl.width - bombWidth;

if (gameCtrl.bombPosY[i] > gameCtrl.height + bombHeight / 2)

gameCtrl.bombCanUse[i] = false; // 炸彈出界檢測:

4.1.3動態背景畫面的實現

用數組循環在屏幕上出現的虛線。程序在后面的“游戲背景的制作”中會有詳細講解。

4.1.4計分功能

該功能是通過一個計數器來實現。在每次碰撞檢測過后判斷是否gameCtrl.score++。

4.2 游戲開發流程設計

本程序采用面向對象的設計模式,對游戲中的所有物體賦予對象的概念和屬性。運行程序后允許用戶選擇執行選項菜單,在開始游戲后將先從外部文件載入賽車和炸彈的圖文件,對背景的所有物體進行繪圖。在主程序運行的線程中,實時反映整個游戲的進行狀態。用戶控制的賽車運行在主線程中,隨屏幕刷新的頻率而移動。

本游戲共建立三個.java文件,分別是:RacingMIDlet.java、GameCtrl.java和NextFrame.java。程序一開始執行是先從主類RacingMIDlet.java來開始。這個類從MIDlet類繼承過來,在程序的開始函數startApp()中調用下面函數來暫時顯示一個屏幕對象。

Alert splashScreen = new Alert(null,"歡迎來玩瘋狂賽車,方向鍵控制方向",logo,AlertType.INFO);

當Alert對象超時,系統會顯示另一個Displayable對象。

Displayable current = display.getCurrent();

display.setCurrent(current);

這兩個語句把程序的執行轉向GameCtrl.java文件來。而這個類繼承CommandListener,這個CommandListener類用來截獲按鈕點擊事件,也就是監聽按鈕的點擊,然后調用相應的方法:

(1)當點擊“退出”時,游戲退出。

(2)當點擊“開始”時,程序轉到GameCtrl類中的paint(Graphics g)函數中去,這個函數是用來繪制游戲界面的,里面包括游戲背景的繪圖,炸彈和賽車的繪圖。然后轉到initialize()函數來初始化一些變量。接著轉到keyPressed(int keyCode)來偵聽并響應按鍵操作。然后NextFrame類中的run()開始進行邊界檢測及碰撞檢測,當檢測到碰撞事件時游戲結束,定時器停止工作,返回gameCtrl.score值,顯示分數。見圖4.1所示。

圖4.1 程序流程圖

5 游戲設計與實現

5.1 程序設計

(1)游戲進入前的選擇

本設計程序進入時,首先載入畫面的不是游戲運行狀態,而是提供選項,當選擇開始時正式運行。這部分由RacingMIDlet.java文件實現。在類RacingMIDlet中的startApp()函數中,隨即調用了Displable的setCurrent()函數將當前屏幕設置為Displayable current = display.getCurrent()。另外需要建立一個Alert對象,其用于顯示提示、警告,還有版權信息等告之用戶信息的臨時閃現的屏幕,它可作為setCurrent的參數,提前顯示在最終需要顯示的屏幕前。GameCtrl繼承了接口commandListener,這樣就可以使用高級界面的Command按鈕。繼承了CommandListener的類必須擁有commandAction(),以決定對按鍵采取什么樣的行為。即按鈕事件觸發后需執行的函數。在設置好Commandlistener后,需要調用setCommandListener()以將按鈕事件激活。鍵盤事件中,可用getCommandType()返回的Command類型來確定選擇的是什么按鈕。keyPressed(int keyCode)用來處理游戲按鍵操作。repaint()重新繪圖。

(2)游戲的登陸界面制作

這個寫在GameCtrl.java文件中,通過使用高級界面的Command按鈕來實現游戲的“開始”、“退出”命令。繼承了CommandListener的類必須擁有commandAction(),以決定對按鍵采取什么樣的行為。即按鈕事件觸發后需執行的函數。在設置好Commandlistener后,需要調用setCommandListener()以將按鈕事件激活。

再用commandAction(Command arg0,Displayable arg1)函數來控制游戲的開始與結束。登陸界面圖畫則通過paint(Graphics g)實現。

(3)游戲背景的制作

本游戲要在手機屏幕上顯示一段公路,具體說就是在屏幕上畫兩條線,這要用到繪圖類Graphics。首先設置背景顏色setColor(255, 255, 255)為白色并填充屏幕fillRect()。然后用setColor(0,0,25)確定繪圖所用顏色為藍色,并用g.drawLine()實現繪制線條的功能。為了能表現出賽車奔馳的場面,故而采用虛線繪制(LineMode=true)。

(4)賽車的控制

操作非常簡單,僅僅是通過手機方向鍵控制賽車的上、下、左、右移動。

首先偵聽按鍵操作,語句如下:keyPressed(int keyCode);

獲得按鍵操作后,然后將按鍵操作復制給專門的游戲按鍵。

int gameAction = getGameAction(keyCode);

接著進行按鍵響應,執行按鍵操作,從而控制賽車的移動。

switch (gameAction)

{ case RIGHT;carPos += 5; case LEFT:carPos -= 5;

case DOWN:carPoc += 5;case UP:carPoc -= 5;}

(5)炸彈的運行及控制

首先判斷炸彈是否在屏幕上出現,采用如下判斷語句。if (gameCtrl.bombCanUse[i] == false),若炸彈沒顯示時設置初始位置,顯示后水平位置固定。

if(x > bombWidth) x = bombWidth;

if(x > gameCtrl.width - bombWidth) x > gameCtrl.width – bombWidt;

然后將炸彈設置在虛擬屏幕,gameCtrl.bombPosY[i] = -y;

接著開始炸彈的下移。gameCtrl.bombPosY[i] += 6;

與此同時要檢測炸彈是否出界,若沒出界則繼續執行下降操作,否則返回到初始時刻重新設置初始位置。

6 總結

本文采用開源的Eclipse為基本的開發環境,使用J2ME為開發套件,依次安裝了JDK1.6.0_10、Eclipse3.2、EclipseME1.7.9、WTK2.1_01這四個軟件及插件搭建起手機游戲開發平臺——J2ME,從而進行手機游戲——瘋狂賽車的設計與實現過程。本文分別介紹了該游戲設計的背景及相關技術,開發工具及平臺的搭建,手機游戲的需求分析、概要設計和詳細設計。

[1]陳旭東.《J2ME應用教程》[M].北京:清華大學&北京交通大學出版社,2006

[2]汪永松.《J2ME手機高級編程》[M].北京:機械工業出版社,2009

with the mobile phone, tablet, the popularity of mobile devices such as notebook computer, Java features on mobile devices widely used is more apparent, mobile value-added services based on Java function increasingly reflects its influence, J2ME (Java 2 Micro Edition) technology arises at the historic moment, its main role in consumer electronics, perfectly solve the intelligent equipment, diversified, have greatly enriched the life of people, provides people with quick consulting and services.

This article introduces the design process of a mobile game based on J2ME. This article USES the open source Eclipse as a basic development environment, and USES the J2ME development suite as the basic development tool to design a Java mini game called crazy racing. In this paper, from the beginning of the game needs analysis, detailed design profiles, and for the game in detail on the concrete implementation process, finally also debugging made simple introduction to the game. This paper is a complete j2me-based mobile game design process, which can be extended to the development and design of other mobile value-added services based on Java.

Java J2ME MIDP2.0 mobile game.

10.19551/j.cnki.issn1672-9129.2017.11.030

TP311.52

A

1672-9129(2017)11-0025-02

猜你喜歡
按鈕程序游戲
這些按鈕能隨便按嗎?
當你面前有個按鈕
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
主站蜘蛛池模板: 久久99蜜桃精品久久久久小说| 久久影院一区二区h| 三上悠亚一区二区| 一级毛片免费不卡在线| 亚洲成人网在线观看| 国产成人AV大片大片在线播放 | 精品国产Ⅴ无码大片在线观看81| 亚洲床戏一区| 中文字幕在线观| 色成人亚洲| 最新国产在线| 毛片免费高清免费| 亚洲第一成人在线| 极品性荡少妇一区二区色欲| 久久视精品| 色综合久久88色综合天天提莫| 国产欧美综合在线观看第七页| 亚洲无码视频图片| 国产在线一二三区| 久久亚洲国产一区二区| 青青久视频| 无码免费视频| www中文字幕在线观看| 成人日韩欧美| AV熟女乱| 天天综合网色| 免费毛片视频| 91精品国产自产91精品资源| 精品国产乱码久久久久久一区二区| 九色在线视频导航91| 国产亚洲欧美在线人成aaaa| 免费女人18毛片a级毛片视频| 污网站在线观看视频| 久久精品国产精品一区二区| 欧美yw精品日本国产精品| 亚洲 欧美 偷自乱 图片| 伊人久久精品亚洲午夜| 国产精女同一区二区三区久| 91日本在线观看亚洲精品| 亚洲天堂视频网站| 毛片基地美国正在播放亚洲 | 久久久91人妻无码精品蜜桃HD| 久久鸭综合久久国产| 亚洲日韩高清无码| 欧美人与牲动交a欧美精品| 四虎AV麻豆| 丁香五月亚洲综合在线| 四虎在线观看视频高清无码| 国产成人久视频免费| 91青青草视频| 亚洲一区二区三区国产精品 | 亚洲黄网在线| 亚洲美女操| 超薄丝袜足j国产在线视频| 国产在线91在线电影| 国产精品不卡永久免费| 全部毛片免费看| 中文字幕在线看| 丰满人妻久久中文字幕| 狠狠做深爱婷婷综合一区| 亚洲综合精品香蕉久久网| 欧美日韩一区二区三区在线视频| 久久狠狠色噜噜狠狠狠狠97视色| 黄片在线永久| 久久狠狠色噜噜狠狠狠狠97视色| 亚洲精品爱草草视频在线| 日韩美毛片| 亚洲日本一本dvd高清| 日韩人妻无码制服丝袜视频| 成人无码区免费视频网站蜜臀| 亚洲无码一区在线观看| 国产精品人成在线播放| 国产精品美女自慰喷水| 日韩成人免费网站| 亚洲国产成人超福利久久精品| 亚洲高清在线天堂精品| 欧美福利在线| 99久久性生片| 在线免费观看AV| 亚洲免费毛片| 日韩精品毛片| 国产主播喷水|