java課程設(shè)計_第1頁
java課程設(shè)計_第2頁
java課程設(shè)計_第3頁
java課程設(shè)計_第4頁
java課程設(shè)計_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Java語言程序設(shè)計課程設(shè)計題目2048游戲的設(shè)計與實現(xiàn)學院 數(shù)信學院專業(yè)計算機科學與技術(shù)班級 計科121學號 5131學生姓名 鄭帥兵指導(dǎo)教師趙利平編寫日期2022-7-8目錄1 . 需求分析32 .系統(tǒng)運行環(huán)境33 .功能需求描述34 . 總體設(shè)計35 .程序模塊設(shè)計36 . 總結(jié)3一、需求分析?2048是比擬流行的一款數(shù)字游戲.原版 2048首先在g計hub上發(fā)布,原作者是Gabriele Cirulli.它是基于? 1024和?小3傳奇?的玩法開發(fā)而成的新型數(shù)字游戲1?.隨后2048便出現(xiàn)各種版本,走各大平臺.由 Ketchapp公司移植到IOS的版本最為火熱,現(xiàn)在約有1000萬下載,

2、其名字跟原版一模一樣.衍生版中最知名的是?2048六邊形?版本,先后在全球81個國家中的board game排進了前200.安卓版非?;鸨挠?挑戰(zhàn)2048,其版以后還參加了雙人又t戰(zhàn).其次比擬特別的有2048中國朝代版.更有2048自定義版,可以自己定義文字和圖片.?2048是IOS中流行的一款.本課程設(shè)計通過設(shè)計與開發(fā) JVM平臺上的2048游戲,進一步掌握所學 Java課程的知識,體驗Javafl勺跨平臺性,同時將Java設(shè)計方面的知識拓展應(yīng)用二、系統(tǒng)運行環(huán)境1、硬件環(huán)境:2、軟件環(huán)境:操作系統(tǒng):WindowsXP/Windows7軟件:集成開發(fā)環(huán)境Eclipse功能需求描述1、圖形用戶

3、界面:2048的最大特點就是玩家對圖形界面里的數(shù)字進行操作,也就是是玩家與游戲的互動2、當前分數(shù)SCORE與最高分數(shù)的顯示:在我們設(shè)計的 2048游戲中當前分數(shù)取了頁面內(nèi)所有數(shù)字相加的值為分數(shù),對玩家玩游戲的進展有直接性、客觀性的展現(xiàn);同時,最高分數(shù)取了以往玩家退出游戲時所保存分數(shù)的最高分3、數(shù)字顏色:游戲中數(shù)字的顏色以 2為首項的等比數(shù)列變化,即2、4、8、16、32、64、128、25& 512 1024 2048.對應(yīng)的數(shù)字卡片變色4、游戲的退出:游戲退出時,我們采用彈出對話框確實認玩家是否真的要退出游戲,當然這樣做更符合游戲人性化設(shè)計的觀念.功能圖如下:四、總體設(shè)計簡要設(shè)計流程

4、:程序結(jié)構(gòu)說明:;import .*;import .*;public classJava204&xtendsJFrameimplementsKeyListenerprivatestaticfinal long serialVersionUID = 1L;Color background= new Color(190, 173, 160);ength();(); catch(Exception e1) (null,"找不到同目錄下文件或文件已損壞 匚"提示",;(0););restart();void restart()/ 重新開始/假設(shè)是初次運行游戲,那

5、么從文件中讀入最高分if(highestScore=0)File file=new File,");BufferedReadebr;trybr=new BufferedReader(ew FileReaderfjle);highestScore=();(); catch(Exception e)(this,找不到同目錄下文件或文件已損壞!","提示",;(0);highestScorehighestScore2array= new int44;/清空游戲用2維數(shù)組 score=0;/重置分數(shù)為零biggestNumbe=0;重置最大數(shù)字為零/在游戲區(qū)隨機

6、生成兩個2或4generateRandom20r4();generateRandom20r4();/繪圖方法public void paint(Graphicsg) gBuffer=g;(background);(30, 40, 185, 90, 20, 20);畫分數(shù)顯示區(qū)(30, 40, 185, 90, 20, 20);(245, 40, 185, 90, 20, 20);畫最高分顯示區(qū)(245, 40, 185, 90, 20, 20);(0, 150, 454, 460, 10, 10);畫主游戲區(qū)(0, 150, 454, 460, 10, 10);(wordFont);(word

7、Color);("SCORE, 90, 70)/ 畫SCORE("BEST", 315, 70)/ 畫 BEST(numberFont);if(score<10)(score, 110, 115)/ 畫分數(shù)數(shù)字elseif(score<100)(score, 100, 115)/ 畫分數(shù)數(shù)字 elseif(scored000)(score, 85, 115)/畫分數(shù)數(shù)字 elseif(scored0000)(score, 73, 115)/畫分數(shù)數(shù)字 elseif(scored00000)(score, 60, 115)/畫分數(shù)數(shù)字 elseif(sc

8、ored000000)(score), 50, 115)/ 畫分數(shù)數(shù)字 else(score, 37, 115)/畫分數(shù)數(shù)字if(highestScor<10)(highestScore 325, 115);/畫分數(shù)數(shù)字 elseif(highestScor<100)(highestScore), 315, 115);/畫分數(shù)數(shù)字 elseif(highestScor<1000)(highestScor)e, 300, 115);/畫分數(shù)數(shù)字 elseif(highestScor<10000)(highestScor如 288, 115);/畫分數(shù)數(shù)字 elseif (

9、highestScor<100000)(highestScor如 275, 115);/畫分數(shù)數(shù)字 elseif(highestScor<1000000)(highestScor如 265, 115);/畫分數(shù)數(shù)字 else(highestScore 252, 115);/畫分數(shù)數(shù)字(foreground);for (int i = 0; i < 4; i+) for (int j = 0; j < 4; j+) (10 + j * 112, 160 +i * 112, 100, 100, 10, 10(10 + j * 112, 160 +i * 112, 100,

10、100, 10, 10);)for(int i=0;i<4;i+)for(int j=0;j<4;j+)switch (arraWj) case2: (new Color(238, 228, 218);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(new Color(122, 113, 104);(new Font("微軟雅黑",50);("2", 45 + j * 112, 230 +i * 113

11、);break;case4: (new Color(236, 224, 200);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(new Color(119, 110, 103);(new Font("微軟雅黑",50);("4", 45 + j * 112, 230 +i * 113);break;)case8: (new Color(242, 177, 121);(10 + j * 112, 160 +i *

12、112, 100, 100, 10, 10);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(new Color(250, 248, 235);(new Font("微軟雅黑",50);("8", 45 + j * 112, 230 +i * 113);break)case16: (new Color(245, 149, 101);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(10 + j * 112, 160 +i * 112, 100, 100, 10,

13、 10);(new Color(252, 244, 242);(new Font("微軟雅黑",45);("16", 33 + j * 112, 230 +i * 111);break;)case32: (new Color(245, 124, 95);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(new Color(255, 241,249);(new Font("微軟雅黑",45);(&q

14、uot;32", 33 + j * 112, 230 +i * 111);break;)case64:(new Color(246, 93, 59);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(new Color(247, 249, 235);(new Font("微軟雅黑",45);("64", 33 + j * 112, 230 +i * 111);break;case128: (new Colo

15、r(237, 206, 113);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(new Color(248, 246, 255);(new Font("微軟雅黑",40);("128, 23 + j * 112, 228 +i * 111);break;)case256: (new Color(237, 204, 97);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(10

16、+ j * 112, 160 +i * 112, 100, 100, 10, 10);(new Color(245, 244, 249);(new Font("微軟雅黑",40);("256", 23 + j * 112, 228 +i * 111);break;)case512: (new Color(235, 201, 78);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(new Color(255, 241

17、,248);(new Font("微軟雅黑",40);("512", 23 + j * 112, 228 + * 111);break;)case1024: (new Color(237, 197, 63);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(new Color(240, 246, 244);(new Font("微軟雅黑",35);("1024, 17 + j * 112

18、, 225 +i * 113);break;)case2048: (new Color(238, 194, 46);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(new Color(250, 249, 255);(new Font("微軟雅黑",35);("2048", 17 + j * 112, 225 +i * 113);break;case4096: (new Color(242, 193, 28);(10

19、 + j * 112, 160 +i * 112, 100, 100, 10, 10);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(new Color(248, 246, 255);(new Font("微軟雅黑",35);("4096, 17 + j * 112, 225 +i * 113);break;)case8192: (new Color(236, 173, 57);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(10 + j * 112, 160 +i

20、* 112, 100, 100, 10, 10);(new Color(248, 246, 255);(new Font("微軟雅黑",35);("8192", 17 + j * 112, 225 +i * 113);break;)default: (foreground);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);(10 + j * 112, 160 +i * 112, 100, 100, 10, 10);)public void keyPressed(KeyEvene) if()=moveUp();

21、 elseif()=moveDown(); elseif()=moveLeft(); elseif()=moveRight();if(biggestNumbe>1024)switch(biggestNumbejcase2048:if(this,"挑戰(zhàn)204瞰功! n是否繼續(xù)挑戰(zhàn)?","提示",=biggestNumbe+;/ 預(yù)防 204啞復(fù)判斷 elserestart();repaint();break;)case4096:if(this,"挑戰(zhàn)409瞰功! n是否繼續(xù)挑戰(zhàn)?","提示、=biggestNumbe+;

22、 / 預(yù)防4096B復(fù)判斷 elsWrestart();repaint();break;case8192:if(this,"挑戰(zhàn)819縱功! n是否繼續(xù)挑戰(zhàn)?","提示",=biggestNumbe+;/ 預(yù)防 8192u復(fù)判斷 else(restart();repaint();break;default:;if(judgeFail()(this,"挑戰(zhàn)失敗匚"提示",;restart();repaint();Overridepublic void keyReleased(KeyEvere)Overridepublic vo

23、id keyTyped(KeyEvente) )/判斷是否已經(jīng)失敗,假設(shè)失敗那么返回true,否那么返回falsepublic booleanjudgeFail()for(int j=0;j<4;j+)for(int i=0;i<4;i+)procesSi0= arrayij;procesSi1=1;)for(int i=1;i<4;i+)int k=i;whi 頁 kvo)iftoces 笑OHHO)Rem fa-sn e-seif(poces1】oHHO)Rem fa-sn e-seif(poces 笨 1JOHH proces 笑】o)Rem fa-sn e-smbre

24、akfo(infli-0;K4 ;+-+)for(infli,3_.v1Pocest3l.=ok aira 工 is;Pocest3l.=1k1;for(infli-1_.A4;i+)inf ku;whi 頁 kvo)if(poces 笑OHHO)refum fa-sn e-seif(poces1】oHHO)Rem fa-sn e-seif(poces 笨 1JOHH proces 笑】o) Rem fa-sn e-smbreak)for(int i=0;i<4;i+)for(int j=0;j<4;j+)proces與0= arrayij;procesSj1=1;)for(int

25、 l=1;l<4;l+)int k=l;while(k>0)if(proces$k0=0)return false; elseif(processk-10=0)return false; elseif(procesSk-10= proces$k0)return false elsebreakfor(int i=0;i<4;i+)for(int j=3;j>-1;j-)process3-j0= arrayij;process3-j1=1;for(int l=1;l<4;l+)int k=l;whi 頁 kvo)iftoces 笑OHHO)Rem fa-sn e-se

26、if(poces1】oHHO)Rem fa-sn e-seif(poces 笨 1JOHH proces 笑】o)Rem fa-sn e-smbreakforQnf iH0x4_.+)fo(infli-0;K4;j+)if(arrayij=0)return false)return true;)public void moveUp()ifGenerate20r4=false;for(int j=0;j<4;j+)for(int i=0;i<4;i+)procesSi0= arrayij;procesSi1=1;) processProcess();for(int i=0;i<

27、4;i+)arrayij= proces$i0;)if(ifGenerate20r的generateRandom20r4();repaint();)/向下滑動,假設(shè)各列均沒有方塊相消或移動,那么返回false,否那么返回true;public void moveDown()ifGenerate20r4=false;for(int j=0;j<4;j+)for(int i=3;i>-1;i-)proces$3-i0=arrayij;proces$3-i1=1;)processProcess();for(int i=3;i>-1;i-)arrayij= proces$3-i0;)

28、if(ifGenerate20r的generateRandom20r4();repaint();)/向左滑動,假設(shè)各行均沒有方塊相消或移動,那么返回false,否那么返回true;public void moveLeft()ifGenerate20r4=false;for(int i=0;i<4;i+)for(int j=0;j<4;j+)proces$j0=arrayij;procesSj1=1;processProcess();for(int j=0;j<4;j+)arrayij= processj0;if(ifGenerate20r的generateRandom20r4

29、();repaint();/向右滑動,假設(shè)各行均沒有方塊相消或移動,那么返回falser否那么返回true; public void moveRight()ifGenerate20r4=false;for(int i=0;i<4;i+)for(int j=3;j>-1;j-)procesS3-j0= arrayij;process3-j1=1;processProcess();for(int j=3;j>-1;j-)arrayij= process3-j0;if(ifGenerate20r的generateRandom20r4();repaint();)/在游戲區(qū)空閑處隨機生成2或4public void generateRandom20r4()int rdCount=-1;/記錄需要生成2或4的位置的數(shù)量for(int i=0;i<4;i+)for(int j=0;j<4;j+)if(arraWj=0)rd+ rdCount=i*10+j;)int tempI= rd(rdCount+1);if()</隨機生成2和4,其比伊J大致為9:1arraytempI/10 tempI%10=4;els«arraytempI/10 temp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論