2048小游戲java課程設計報告書_第1頁
2048小游戲java課程設計報告書_第2頁
2048小游戲java課程設計報告書_第3頁
2048小游戲java課程設計報告書_第4頁
2048小游戲java課程設計報告書_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

《JAVA語言程序設計》課程設計報告2048智力小游戲設計專業班級:計算機科學與技術嵌入13T學生姓名:卓海有學生學號:小組成員:單建飛堵文斐李棟承梅孔偉指導教師姓名:宋強目錄TOC\o"1-5"\h\z1?前言 1游戲需求分析 1\o"CurrentDocument"需求分析 1\o"CurrentDocument"可行性分析 2概要設計 3詳細設計 4流程圖 4\o"CurrentDocument"界面的整體布局 4方法模塊分析 5\o"CurrentDocument"測試 8總結 10\o"CurrentDocument"參考文獻 10部分源代碼: 10一、前言最近以來,移動手游越來越成為當下游戲產業中重要的一環,市場也在加大對這一產業的投入,涌現出了憤怒的小鳥,水果忍者,flappybird,2048等諸多優秀的手游,然而任何一款手游能夠風靡,主要還是依靠其簡單的操作性,因此本次java課設我選擇其中的典型2048PC版作為本次課設的課題。2048游戲規則很簡單,玩家每次可以選擇上下左右其中一個方向去移動,每移動一次,所有的數字方塊都會往移動的方向靠攏外,系統也會在空白的地方隨機出現一個數字方塊,相同數字的方塊在靠攏、相撞時會相加。系統給予的數字方塊不是2就是4,玩家要想辦法在這小小的16格范圍中湊出“2048”這個數字方塊。二、游戲需求分析需求分析現代社會對休閑小游戲的需求是:提高游戲的操作可行性,降低游戲的操作難度,降低游戲的上手難度,降低游戲的競爭需求,對使用設備的要求趨于簡單化和多樣化,游戲界面更加人性化,功能更加貼合使用。界面一款的好的游戲其界面必須友好,簡潔已經成為當今UI設計的主流,簡單易上手才能得到玩家的青睞。功能需求能夠顯示游戲的當前得得分,并記錄游戲的最高分并顯示,當在次打開游戲時,能夠顯示最高分;在游戲進行的過程中循環播放音樂,并能夠關閉音樂或者打開音樂;游戲的主界面上,相同的數字要顯示相同的顏色。游戲結束要有相應的提示。游戲的主要目的是通過上下左右移動來將相鄰相同的數字相加,通過不斷地累加最終加到2048o操作性需求游戲的體驗是衡量一款游戲的關鍵,本游戲可通過鍵盤w,s,a,d以及方向鍵來控制方塊的移動,還可以通過在游戲的主面板中向上下左右拖動鼠標來控制方塊的移動,左右手都可以操作,充分考慮便捷性。不同的人有不一樣習慣,通過多種方式來操作游戲,可以各種習慣的人的需求。可行性分析面向對象的程序設計方法Java而向對象程序設計的基本思想是通過構造和組織對象來求解問題的。對象是很好理解的,任何一種物體都可以被認為是對象,例如,汽車就是一種對象。對象具有兩個最懇本的屬性:具有一定的物質基礎和一定的功能,這兩種基本屬性在Java語言中表現為擁有一定的存儲單元并具備一定的功能。理解了Java的這種面向對象程序設計的基本思想之在以E的編程過程中,就應當個構造人們容易理解的更接近于真實物理世界物體的對象。Java面向對象程序設計的過程非常簡單。這里介紹一種自頂向下的程序設計方法,首先構造一個類來處理需要解決的問題,然后根據已經擁有的類(例如以前求解其它問題時實現的類),分析和構造新的類,設法將問題分解下去,而最開始構造的類通過組織這些新構造的類、已有的類及由他們生成的實例來求解指定的問題。這個過程可以繼續遞歸下去,用在新構造的類上,直到最后解決了指定的問題,例如Java的應用程序和小應用程序都必須有一個類作為入口求解問題。在計算機語言中,而向對象的類一般具有三個基本特性:封裝性、繼承性和多態性,這三種特性進一步簡化了Java求解模型,提高了程序的復用性,節省了程序的代碼量,從而提高了軟件的生產率。java技術分析圖形用戶界面不僅可以提供各種數據的基本圖形的直觀表示形式,而且可以建立友好的交互方式,從而使計算機軟件可以設計得十分簡單易用。從Java語言誕生到現在,Java語言已經提供了兩代圖形用戶界面。第一代圖形用戶界面AWT提供了基本的圖形用戶界面,它強烈地依賴于具體的計算機操作系統,而且缺少基本的剪貼板和打印支持功能。現在第二代圖形用戶界而Swing對AWT進行了擴展,Swing不僅在功能上比AWT強大,而且在很大程度上克服了AWT的上述缺點,它所設計的圖形用戶界面與具體的計算機操作相關性很小,而且可以定制指定的操作系統風格的圖形用戶界面。GUI(圖形用戶界面)組件構成了圖形用戶界面的基礎。在Java程序設計中,要求按照一定的布局方式將組件安排在容器中,然后通過事件處理的方式實現人機交互,而容器本身也是組件,這樣在容器中也可以含有容器,從而可以通過這種嵌套方式方便地組合各種組件。事件處理模型是Java語言提供的一種人機交互模型,它使得用戶能夠通過鼠標、鍵盤或其他輸入設備來控制程序的執行流程,從而達到人機交互的目的。對鼠標、鍵盤或其他輸入設備的各種操作一般也稱為事件。Java語言對這些事件的處理模型是采用面向對象的方法,即通過對象的形式把各種事件進行封裝和處理。這種事件處理模型的三個基本要素是事件源、事件對象以及事件監聽器。事件源是各種組件,是接受各種事件的對象。在各種事件源上運用鼠標、鍵盤或其他輸入設備進行各種操作,就會有事件發生。每種操作一般都對應著事件,Java語言通過事件對象來包裝這些事件。對爭件進行處理是通過事件監聽器實現的。因為鼠標事件也是一種事件,所以對鼠標事件進行處理要遵循事件處理模型。鼠標事件的處理也是建立在事件源的基礎之上,以事件對象本身,最后通過事件監聽器進行處理。類包裝常用的鼠標事件,例如,按下鼠標鍵和放開鼠標鍵等。類MouseEvent的實例對象記錄了鼠標的當前位置和狀態發生變化的鼠標鍵等。對鼠標事件進行處理最關鍵的是實現事件監聽器接口。這些相關接口包括MouseListener, MouseMotionListener, MouseWheeIListener,MouseInputListener。前而三個是包中的接口,最后一個接口MouseInputIistener來自包。接口主要用來處理按下鼠標鍵、放開鼠標鍵、單擊鼠標鍵、鼠標進入組件內和鼠標離開組件區域等事件。對鼠標事件進行處理,就是要設計類,實現上面的鼠標事件監聽器接口,然E在事件源中注冊處理鼠標事件監聽器的對象,以便對鼠標事件進行處理。三、概要設計

四、詳細設計(1)流程圖主程序游戲開始顯示界面▼監聽總苕和恫標的上下移動操作和2鏗,并作相應的處理對界面上的按鈕的監聽.并作相應的處理是,界面的整體布局分別構建mainPane,scoresPane兩大模塊放入游戲窗體,其中scoresPane包含2048字樣的提示,當前得分和最高分,當得分超過最高分時■,將得分存入工程文件夾下的,覆蓋最高分,同時在最高分顯示最新的內容。通過Create方法隨機產生2號方塊或者4號方塊,通過setColor方法設置每個數字代表的方塊顏色。方法模塊分析方法1:設置標簽顏色,每次隨機產生2或4和數字合并之后就要調用該方法來設置標簽的顏色publicvoidsetColor(inti,intjtStringstr){if(,,H.equals(str)){texts[i][j].setBackground(newColor(120,2219247));return;)irrtresult=(str);switch(result){case2:texts[i][j].setBackground(newCoIor(240,240,0));break;case4:texts[i][j].setBackground;break;case8:texts[i][j].setBackground(newColor(240,150,10));break;case16:texts[i][j]?setBackground;break;case32:texts[i][j]?setBackground;break;case64:texts[i][j].setBackground(newColor(155,10,190));break;case128:texts[i][j].setBackground;break;case256:texts[i][j].setBackground;break;case512:texts[i][j]?setBackground;break;case1024:texts[i][j].setBackground;break;case2048:texts[i][j]?setBackground;break;case4096:texts[i][j].setBackground;break;defauIt:break;))方法2:在隨機位置產生一個2號或4號方塊的方法,同時該方法也用于判斷游戲是否結束。publicvoidCreate0{inti,j;etText();if((”")==0)){intima=2*(int)(1+0*2);etText(imass);setColor(i,j,imass);times—;r=false;p1=p2=p3=p4=0;quaIs(texts[p][q].getText()))temp2[p][q]=0;elsetemp2[p][q]=(texts[p][q].getText0);)}tempiscores=temp2scores;temp2scores=scores;}elseif(p1>0&&p2>0&&p3>0&&p4>0)工業出版社…黃曉東.Java課程設計案例精編[M].北京:中國水利水電出版社,.求是科技.Java信息管理系統開發實例字航[M].北京:人民郵電出版社…源代碼清單packagemy2048game;import?*;import?*;import?*;import?*;pubIicclassMy2048GameextendsJFrame{equestFocus();}pg"));(433,120,45,30);(jb1);etFont(font2);texts[i][j]?setHorizontalAIignment;etText(;texts[i][j].setBounds(110 * j+15, 110 * i+15, 100,100);et0paque(true);etBorder(2,2,2,quaIs(texts[i][j].getText()))temp1[i][j]=temp2[i][j]=0;elsetempi[i][j]=temp2[i][j]=(texts[i][j].getText());}}}quaIs(str)){texts[i][j].setBackground(newColor(120,221,247));return;}intresult=(str);switch(resuIt){case2:texts[i][j].setBackground(newColor(240,240,0));break;case4:texts[i][j].setBackground;break;case8:texts[i][j].setBackground(newColor(240,150,10));break;case16:texts[i][j].setBackground;break;case32:texts[i][j]?setBackground;break;case64:texts[i][j].setBackground(newColor(155,10,190));break;case128:texts[i][j]?setBackground;break;case256:texts[i][j]?setBackground;break;case512:texts[i][j].setBackground;break;case1024:texts[i][j].setBackground;break;case2048:texts[i][j].setBackground;break;case4096:texts[i][j].setBackground;break;defauIt:break;1etText()jetText()jetText(str);etText(MM);etText(str);etText("n);etText();str1=texts[i][j+1].getText();if("”)==0){if(,,H)!=0)biaoji=1;texts[i][j+1].setText(str);setColor(i,j+1,str);texts[i][j].setText(HM);setColor(i,j,””);}elseif(str1)=0&&j!=a&&j匸a+1){

num=(str);scores+=num;times++;str=(2*num);11texts[i][j+1].setText(str);setColor(i,j+1,str);texts[i][j].setText(”H);setColor(i,j,a=j;biaoji=1;}p2=1;Create();break;case:case:biaoji=0;for(intj=0;j<4;j++){a=5;for(intk=0;k<3;k++){for(inti=1;i<4;i++){str=texts[i][j].getText0;str1=texts[i-1][j].getText();if("”)==0){if(,,M)!=0)biaoji=1;texts[i-1][j].setText(str);setColor(i-1,j,str);texts[i][j].setText(MM);setColor(i,j,MM);}elseif(str1)=0&&i!=a&&i!二a-1){

num=(str);scores+=num;times++;str=(2*num);texts[i-1][j].setText(str);setColor(i-1,j,str);texts[i][j].setText(”n);setColor(i,j,””);a=i;biaoji=1;p3=1;Create();break;case:case:biaoji=0;for(intj=0;j<4;j++){a=5;for(intk=0;k<5;k++){for(inti=2;i>=0;i―){

str=texts[i][j].getText();str1=texts[i+1][j].getText();if("”)==0){if(,,n)!=0)biaoji=1;texts[i+1][j].setText(str);setColor(i+1,j,str);texts[i][j].setText('*n);setColor(i,j,"”);}elseif(str1)=0&&i!=a&&i匸a+1){num=(str);scores+=num;times++;str=(2?num);texts[i+11[j].setText(str);setColor(i+1,j,str);texts[i][j].setText('*H);setColor(i,j,MM);a=i;biaoji=1;}}}}p4=1;Create();break;case:if(p1<=0||p2<=0||p3<=0||p4<=0){for(inti=0;i<4;++i){for(intj=0;j<4;++j){if(tempi[i][j]==0)texts[i][j].setText(M'*);elsetexts[i][j].setText((tempi[i][j]));11temp2[i][j]=tempi[i][j];setColor(i,j,texts[i][j].getText());scores=tempiscores;temp2scores=temp1scores;}break;default:break;}if(maxscores<=scores){maxscores二scores;(maxscores);0;}(N<htmI>SCORE<br>,?+(scores)+"</html>M);(H<htmI>BEST<br>"+(maxscores)+H</htmI>");etText();etText();etText(str);etText('*n);etText(str);etText(H'*);etText();str1=texts[i][j+1].getText();if("")==0){ifC,H)!=0)biaoji=1;texts[i][j+1].setText(str);setColor(i,j+1,str);texts[i][j].setText(HH);setColor(i,j,}elseif(str1)=0&&j!=a&&j!二a+1){num=(str);scores+=num;times++;str=(2*num);texts[i][j+1].setText(str);setColor(i,j+1,str);texts[i][j].setText(HH);setColor(i,j,MM);a=j;biaoji=1;p2=1;Create();break;case3:biaoji=0;for(intj=0;j<4;j++){a=5;for(intk=0;k<3;k++){for(inti二1;i<4;i++){str=texts[i][j].getText0;str1=texts[i-1][j].getText();if("”)==0){if(,,H)!=0)biaoji=1;texts[i-1][j].setText(str);setColor(i-1,j,str);texts[i][j].setText('*n);setColor(i,j,””);}elseif(str1)=0&&i!=a&&i匸a-1){num=(str);scores+=num;times++;str=(2*num);texts[i-11[j].setText(str);setColor(i-1,j,str);texts[i][j].setText('*H);setColor(i,j,"”);a=i;biaoji=1;}p3=1;Create();break;case4:biaoji=0;for(intj=0;j<4;j++){a=5;for(intk=0;k<5;k++){for(inti=2;i>=0;i—){str=texts[i][j].getText0;str1=texts[i+1][j].getText();if("”)==0){if(,,H)!=0)biaoji=1;texts[i+1][j].setText(str);setColor(i+1,j,str);texts[i][j].setText(MM);setColor(i,j,"n);}elseif(str1)=0&&i!二a&&i匸a+1){

num=(str);scores+=num;times++;str=(2*num);texts[i+1][j].setText(str);setColor(i+1,j,str);texts[i][j].setText(”n);setColor(i,j,””);a=i;biaoji=1;}}}}p4=1;Create();break;defauIt:break;}if(maxscores<=scores){maxscores二scores;(maxscores);0;}(XhtmI>SC0RE<br>n+(scores)+M</htmI”);(n<htmI>BEST<br>"+(maxscores)+n</htmI>");etText();if(("")==0)){intima=2*(int)(1+0*2);etText(imass);setColor(i,j,imass);times—;r=false;p1=p2=p3=p4=0;

quaIs(texts[p][q].getText()))temp2[p][q]=0;elsetemp2[p][q]=(texts[p][q].getText());}}temp1scores=temp2scores;temp2scores=scores;}elseif(p1>0&&p2>0&&p3>0&&p4>0){qualsC'shengyin")){if(jb1_flag2){setJb1_flag(false);jb1_fIag2=false;(nev/ImageIcon("src/靜音圖標.jpg'));(faIse);pg"));(faIse);//讓按鈕失去焦點}(false);//設置焦點,不能用請求焦點}}}//記錄類classRecorder{//定義一個變量記錄最商分privatestaticintmaxscores_2048=0;pubIicstaticintgetMaxscores_2048(){returnmaxscores_2048;}pubIicstaticvoidsetMaxscores_2048(intmaxscores_2048){=maxscores_2048;}//定義文件輸入流變量privateprivateprivatestaticFiIeReaderfr=nuII;privateprivateprivatestaticBufferedReaderbr=nuII;staticFiIeV/riterfw=null;privatestaticBufferedWriterbw=nuII;//從文件中讀取,記錄pubIicstaticvoidgetRecording()booleanflag=faIse;//用于判斷文件是否是新創建的try{Filef=newFileCsrc/");ifO)fr=newFiIeReader(f);br=newBufferedReader(fr);Stringn=();maxscores_2048=(n);elsefIag=();}}catch(Exceptione){//TODO:handleexception0;}finalI

溫馨提示

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

評論

0/150

提交評論