4.1游戲的的思路、構(gòu)想
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、梅列ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的梅列網(wǎng)站制作公司
4.1.1游戲想法的產(chǎn)生
相信大家一定都在8位機(jī)機(jī)上玩過《冒險(xiǎn)島》這款游戲,非常有趣味性。
游戲中玩家通過不斷的闖關(guān),來解救公主。在每個(gè)關(guān)都很很多的怪物阻擋著你,所以需要運(yùn)用各種機(jī)關(guān)或者秘籍來殺死它們。殺死他們的同時(shí)還可以獲得各種獎(jiǎng)勵(lì),加生命,加血等,增加了游戲的趣味性。
如圖2所示:
這款《冒險(xiǎn)島》游戲的實(shí)現(xiàn)相對于其他RPG或者網(wǎng)絡(luò)版手機(jī)游戲稍簡單一些,適合初學(xué)者作為練習(xí),所以我決定編寫一款類似的手機(jī)游戲。
由于之前對手機(jī)游戲的編程知識以及游戲的設(shè)計(jì)只有初步的了解,因此,我們在游戲的構(gòu)架和思路上經(jīng)歷了幾個(gè)階段。
這款《冒險(xiǎn)島》游戲的實(shí)現(xiàn)相對于其他RPG或者網(wǎng)絡(luò)版手機(jī)游戲稍簡單一些,適合初學(xué)者作為練習(xí),所以我決定編寫一款類似的手機(jī)游戲。
由于之前對手機(jī)游戲的編程知識以及游戲的設(shè)計(jì)只有初步的了解,因此,我們在游戲的構(gòu)架和思路上經(jīng)歷了幾個(gè)階段。
4.1.2對游戲設(shè)計(jì)的初步認(rèn)識
剛開始我們只對J2ME有初步的了解。這時(shí)我們只是模仿之前在PC上看到的游戲,用語言把游戲的實(shí)現(xiàn)感性的描述為幾大部分:
游戲界面系統(tǒng):包括游戲開始界面;游戲開局界面;游戲運(yùn)行界面;游戲結(jié)束界面。
游戲元素:菜單類;畫布類;人物類;排行榜類。
4.1.3模塊成型階段
在進(jìn)一步熟悉了J2ME知識后,對框架做出了一些修改,逐步把游戲的基本功能確定。游戲依次進(jìn)入加載界面;主菜單;游戲運(yùn)行界面;游戲結(jié)束界面。
具體實(shí)現(xiàn)的功能為:
1.主菜單,有如下選項(xiàng):
(1)開始游戲——進(jìn)入游戲界面。
(2)聲音——設(shè)置聲音的有無選項(xiàng)。
(3)幫助——介紹游戲的玩法。
(4)排行榜——玩家所得分?jǐn)?shù)的排行榜。
(5)關(guān)于——用來顯示說明信息以及背景圖片。
2.游戲運(yùn)行界面,包括:
游戲界面;目前游戲得分;游戲關(guān)數(shù);生命次數(shù);
3.游戲結(jié)束界面:游戲結(jié)束后,顯示一行說明信息,然后退回到菜單。
游戲的主要模塊為:
1.游戲主MIDlet(GameMIDlet)——對游戲生命周期的判斷;對畫布類的調(diào)用;管理游戲程序中各個(gè)屏幕之間的轉(zhuǎn)換。
2.游戲畫布(MyGame)——對游戲所用變量,常量的設(shè)定;游戲的初始化;游戲中精靈運(yùn)動(dòng)軌跡的控制;精靈與磚塊的碰撞檢測以及磚塊狀態(tài)的控制;游戲中各關(guān)卡的基本設(shè)定;游戲中對按鍵狀態(tài)的處理。
3.菜單類——游戲中菜單事件的處理。
4.GameOgre類——游戲中怪物的類。
5.GamePlayer類——玩家控制的精靈類。
6.GameRMS類——用于實(shí)現(xiàn)分?jǐn)?shù)排行榜。
7.PlayMusic類——用于實(shí)現(xiàn)音樂的播放。
8.MySet類——聲音大小的設(shè)置。
4.2 程序的類結(jié)構(gòu)
程序一共有8個(gè)主要類,其中菜單類負(fù)責(zé)各個(gè)屏幕的切換。程序的類結(jié)構(gòu)如圖3所示:
4.3 游戲的流程圖
進(jìn)入游戲菜單。初始情況下,游戲菜單有5個(gè)選項(xiàng),它們分別是開始游戲、游戲說明和排行榜、設(shè)置、關(guān)于。選擇開始新游戲則進(jìn)入游戲,在游戲中如果按下非游戲鍵則中斷游戲返回菜單,此時(shí)菜單中增加了一個(gè)繼續(xù)游戲的選項(xiàng),可以返回游戲也可以重新開始新的游戲。在菜單中選擇游戲說明或者高分記錄,則進(jìn)入相應(yīng)的屏幕,他們都能用“后退”軟鍵返回菜單。菜單中的退出選項(xiàng)用于退出程序。游戲的流程如圖4所示:
4.4.1主類GameMIDlet的實(shí)現(xiàn)
MIDlet是最核心的類。MIDlet程序有三種狀態(tài):
1.暫停狀態(tài)
2.運(yùn)行狀態(tài)
3.銷毀狀態(tài)
J2ME程序都是從MIDlet類開始執(zhí)行,系統(tǒng)在執(zhí)行MIDlet程序時(shí),首先構(gòu)造一個(gè)MIDlet類型的對象,然后使程序進(jìn)入到暫停狀態(tài),按照生命周期的規(guī)定,系統(tǒng)會自動(dòng)調(diào)用MIDlet對象的startApp方法使程序進(jìn)入到運(yùn)行狀態(tài),開始程序的執(zhí)行。
下圖是運(yùn)行時(shí)顯示的畫布對象:
首先,先要?jiǎng)?chuàng)建MIDlet類型的對象,下面我們來看對象的構(gòu)造方法:
//主程序構(gòu)造方法
public GameMIDlet()
{
rs = null;
RecordName = “GameRMS”;
GameMenu.display = Display.getDisplay(this) ;
GameMenu.midlet = this;
}
java
開發(fā)語言
oppo手機(jī)型號及價(jià)格
精選推薦
廣告
JAVA基于J2ME的手機(jī)游戲開發(fā)(文檔+源代碼).zip
0下載·0評論
2022年1月27日
JAVA基于J2ME的手機(jī)游戲開發(fā)免費(fèi)
717閱讀·0評論·0點(diǎn)贊
2022年8月23日
JAVA五子棋手機(jī)網(wǎng)絡(luò)對戰(zhàn)游戲的設(shè)計(jì)與實(shí)現(xiàn)(源代碼+論文)
568閱讀·2評論·0點(diǎn)贊
2022年12月5日
J2ME手機(jī)游戲引擎程序結(jié)構(gòu)簡述
170閱讀·0評論·0點(diǎn)贊
2021年9月12日
最新45款Java手機(jī)游戲開發(fā)源代碼免費(fèi)下載
10下載·0評論
2019年3月4日
經(jīng)典50個(gè)Java手機(jī)游戲源碼.7z
3下載·0評論
2022年7月8日
無敵版游戲下載
精選推薦
廣告
java手機(jī)小游戲源碼_Java手機(jī)版數(shù)獨(dú)小游戲(J2me)JAVA游戲源碼下載
435閱讀·0評論·0點(diǎn)贊
2021年3月14日
java 300行代碼 冒險(xiǎn)闖關(guān)小游戲(代碼+講解)
2637閱讀·1評論·6點(diǎn)贊
2022年9月9日
java俄羅斯方塊代碼_【俄羅斯方塊java】分享一個(gè)Java寫的俄羅斯方塊源碼 算法簡單(300行) 注釋詳細(xì)!...
304閱讀·0評論·0點(diǎn)贊
2021年3月5日
java小游戲源碼_分享幾款java小游戲源碼
4921閱讀·0評論·4點(diǎn)贊
2021年3月5日
java手機(jī)游戲開發(fā)如何_用JAVA開發(fā)手機(jī)游戲需要如何構(gòu)建開發(fā)環(huán)境?
1209閱讀·0評論·0點(diǎn)贊
2021年2月26日
《精通Java手機(jī)游戲與應(yīng)用程序設(shè)計(jì)》源碼
35閱讀·0評論·0點(diǎn)贊
2022年3月24日
java怎么制作游戲,看完這篇徹底明白了
4803閱讀·0評論·2點(diǎn)贊
2021年6月29日
泡泡堂代碼 JAVA_Java手機(jī)游戲泡泡堂源碼
566閱讀·0評論·1點(diǎn)贊
2021年3月14日
十款經(jīng)典游戲的Java版本(開源)
19.0W閱讀·95評論·214點(diǎn)贊
2014年12月7日
飛翔的小鳥--Java小游戲?qū)崙?zhàn)(代碼完整)
1.1W閱讀·13評論·50點(diǎn)贊
2021年4月5日
Vue——獲取后端json數(shù)據(jù)中的URL并通過按鈕跳轉(zhuǎn)到此URL
1683閱讀·4評論·0點(diǎn)贊
2021年2月5日
java安卓游戲源碼下載_77個(gè)安卓游戲 android源碼
801閱讀·0評論·0點(diǎn)贊
2021年3月15日
去首頁
看看更多熱門內(nèi)容
class test
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
在C盤保存文件名為test
進(jìn)入cmd運(yùn)行 javac test.java 進(jìn)行編譯
然后運(yùn)行test.java看到輸出hello world
我的第一個(gè)程序就完成了
如果運(yùn)行javac 報(bào)錯(cuò)的話那可能是環(huán)境變量沒有配置好,在仔細(xì)看看重新配置一下
將apk文件拷貝至sdcard上。
命令順序如下:
進(jìn)入Android sdk文件夾/tools目錄下
輸入adb shell
輸入su
輸入cd data
輸入cd app
這時(shí)就可以看到你安裝的所有的apk文件。輸入cp 空格 對應(yīng)的apk 空格 /sdcard/
這樣就將apk文件拷貝出來了。
將apk文件后綴直接變成rar格式,可以看到熟悉的目錄結(jié)構(gòu)了,
其中xml文件打開后都是二進(jìn)制的,無法查看。
這時(shí)就用到了一個(gè)android4me的AXMLPrinter2工具。(請自行百度搜索)
輸入以下命令,將xml文件解析出來
java -jar AXMLPrinter2.jar showtimes_list.xml
此命令是在命令行中查看此showtimes_list.xml
將showtimes_list.xml生成xml文件,則輸入以下命令:
java -jar AXMLPrinter2.jar showtimes_list.xml h.xml
目前進(jìn)行到這一步,只能看到xml文件的內(nèi)容,其工程中的java源文件還是看不到,看目錄結(jié)構(gòu)下有一個(gè)classes.dex文件,我們需要將dex文件變?yōu)閖ar文件。
這里用到了另一個(gè)工具dex2jar。(自行搜索下載)
在Windows下解壓之后的目錄如下圖所示:
在命令行中,進(jìn)入到此目錄下:
在Windows下,輸入以下命令:
dex2jar.bat c:\classes.dex
運(yùn)行完之后,在C盤會多一個(gè)classes.dex.dex2jar.jar文件,此文件就是我們需要的jar文件。
利用jd-gui,將jar文件反向工程為java代碼。(請自行搜索下載)
它分為Windows、Linux、和max三個(gè)版本,這里我下載的是Windows版本的。
解壓之后,雙擊運(yùn)行exe文件,選擇classes.dex.dex2jar.jar文件,相應(yīng)的jar文件中的Java文件就被反向工程顯示出來了!
Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。尚未有統(tǒng)一中文名稱,中國大陸地區(qū)較多人使用“安卓”或“安致”。Android操作系統(tǒng)最初由Andy Rubin開發(fā),主要支持手機(jī)。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營運(yùn)商組建開放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機(jī)發(fā)布于2008年10月。Android逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上,如電視、數(shù)碼相機(jī)、游戲機(jī)等。2011年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。 2013年的第四季度,Android平臺手機(jī)的全球市場份額已經(jīng)達(dá)到78.1%。?[1]??2013年09月24日谷歌開發(fā)的操作系統(tǒng)Android在迎來了5歲生日,全世界采用這款系統(tǒng)的設(shè)備數(shù)量已經(jīng)達(dá)到10億臺。
Android一詞最早出現(xiàn)于法國作家利爾亞當(dāng)(Auguste Villiers de l'Isle-Adam)在1886年發(fā)表的科幻小說《未來夏娃》(L'ève future)中。他將外表像人的機(jī)器起名為Android。
Android的Logo是由Ascender公司設(shè)計(jì)的,誕生于2010年,其設(shè)計(jì)靈感源于男女廁所門上的圖形符號, [1]? 于是布洛克繪制了一個(gè)簡單的機(jī)器人,它的軀干就像錫罐的形狀,頭上還有兩根天線,Android小機(jī)器人便誕生了。其中的文字使用了Ascender公司專門制作的稱之為“Droid ” 的字體。Android是一個(gè)全身綠色的機(jī)器人,綠色也是Android的標(biāo)志。顏色采用了PMS 376C和RGB中十六進(jìn)制的#A4C639來繪制,這是Android操作系統(tǒng)的品牌象徵。有時(shí)候,它們還會使用純文字的Logo。
1 建議使用包
指的就是通過對class類規(guī)范化的放到指定包中,保證程序代碼運(yùn)行過程中引入其他類的包時(shí),減少不必要的類引入,例如:
import com.b.B;
class A{
}
如果引入的com.b包中內(nèi)容只定義業(yè)務(wù)class類A需要的代碼類B,那么減少A運(yùn)行時(shí)lvm的負(fù)擔(dān)。
而且代碼更家好管理,清晰 (其他好處思考ing~)
如果都把A,B,C。。。等class放在一起,那么運(yùn)行A時(shí)相當(dāng)于同一包下內(nèi)容,都會加載(思考是否解釋合理ing)
典型的就是我們使用 import java.util.Date; 如果僅僅使用date日期類時(shí)最好單獨(dú)引用,不要都java.util.*, 這樣相當(dāng)于把整個(gè)包里面class都引入的,肯定性能不給力了~
2 避免私有類的使用,否則私有類如果太多,造成jvm加載太多利用率不高的class,造成jvm消耗
3 避免使用getter和setter方法,這是由于如果getter setter太多時(shí),jvm中棧的運(yùn)用可能會多,因?yàn)間etter setter傳遞參數(shù)值是在棧中的,而棧的空間很小的,雖然棧的運(yùn)行最快,但是如果占用太多,造成影響的
4 建議使用static final 關(guān)鍵字來定義常量,這是由于常量對象
(比如String DIAN_HUA="DIAN_HUA")如果頻繁的通過類對象new出來調(diào)用,會消耗jvm的堆內(nèi)存,這樣的消耗是沒有必要的,定義為靜態(tài)變量:
類靜態(tài)變量在內(nèi)存中只有一個(gè),java虛擬機(jī)在加載類的過程中為靜態(tài)變量分配內(nèi)存,靜態(tài)變量位于方法區(qū),被類的所有實(shí)例共享,靜態(tài)變量可以通過類名直接訪問。靜態(tài)變量的生命周期取決于類的生命周期,當(dāng)類被加載的時(shí)候,靜態(tài)變量被創(chuàng)建并分配內(nèi)存空間,當(dāng)類被卸載時(shí),靜態(tài)變量被摧毀,并釋放所占有的內(nèi)存。
還有定義為final類型,因?yàn)殪o態(tài)常量一般是在程序運(yùn)行中不變化的,因此用final防止不小心把常量改變,造成程序運(yùn)行異常,降低程序app的消耗。
一家之言,個(gè)人理解,輕點(diǎn)拍磚~
你說的java源代碼是指編譯成的class文件前的java文件。
當(dāng)我們運(yùn)行.java文件時(shí),它會被系統(tǒng)編譯成.class文件,例如Test.java編譯之后就是Test.class,
源文件就是指Test.java文件,
一般部署項(xiàng)目時(shí),有.class文件就可以發(fā)布運(yùn)行了,但是如果想修改這個(gè)系統(tǒng),.class是不能修改的,要有.java文件才能修改
也可以上網(wǎng)去下反編譯軟件,就是能把.class文件大部分還原成.java文件的工具,但不是100%還原,而且如果不是正版的,小心有毒啊,什么的。
//都是從新手過來的,以下代碼供參考
//1.
public?class?BankAccount?{
private?static?String?acctnum;
private?static?double?money;
private?static?void?showAcct()?{
System.out.println("賬號為:?"?+?acctnum);
}
private?static?void?showMoney()?{
System.out.println("余額為:?"?+?money);
}
public?BankAccount(String?acc,?double?m)?{
this.acctnum?=?acc;
this.money?=?m;
}
public?static?void?main(String[]?args)?{
BankAccount?ba?=?new?BankAccount("626600018888",?5000.00);
ba.showAcct();
ba.showMoney();
}
}
//2.
public?class?Triangle?{
private?static?float?a;
private?static?float?b;
private?static?float?c;
public?Triangle(float?a,?float?b,?float?c)?{
this.a?=?a;
this.b?=?b;
this.c?=?c;
}
public?static?boolean?judgeTriangle(float?a,?float?b,?float?c)?{
if?((a??Math.abs(b?-?c)??a??b?+?c)
?(b??Math.abs(a?-?c)??b??a?+?c)
?(c??Math.abs(a?-?b)??c??a?+?b))
return?true;
else
return?false;
}
public?float?getCircumference()?{
return?this.a?+?this.b?+?this.c;
}
}
//3.
public?class?TestTriangle?{
public?static?void?main(String[]?args)?{
Triangle?t?=?new?Triangle(5.3f,7.8f,9.3f);
if(t.judgeTriangle(5.3f,7.8f,9.3f)){
System.out.print("能夠成三角形,周長為:?");
System.out.printf("%9.2f",t.getCircumference());}
else
System.out.println("不能構(gòu)成三角形");
}
}