俄羅斯方塊設(shè)計(jì)思想_第1頁(yè)
俄羅斯方塊設(shè)計(jì)思想_第2頁(yè)
俄羅斯方塊設(shè)計(jì)思想_第3頁(yè)
俄羅斯方塊設(shè)計(jì)思想_第4頁(yè)
俄羅斯方塊設(shè)計(jì)思想_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

/XX郵電大學(xué)通達(dá)學(xué)院算法與數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)報(bào)告〔2016/2017學(xué)年第二學(xué)期專業(yè)軟件工程嵌入式學(xué)號(hào)姓名學(xué)號(hào)姓名學(xué)號(hào)姓名學(xué)號(hào)姓名指導(dǎo)教師陳興國(guó)指導(dǎo)單位計(jì)算機(jī)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系日期2017-5-26評(píng)分細(xì)則評(píng)分項(xiàng)優(yōu)秀良好中等差遵守機(jī)房規(guī)章制度上機(jī)時(shí)的表現(xiàn)學(xué)習(xí)態(tài)度程序準(zhǔn)備情況程序設(shè)計(jì)能力團(tuán)隊(duì)合作精神課題功能實(shí)現(xiàn)情況算法設(shè)計(jì)合理性報(bào)告書(shū)寫認(rèn)真程度內(nèi)容詳實(shí)程度驗(yàn)收答辯情況評(píng)分等級(jí)姓名〔組長(zhǎng)姓名〔組員1姓名〔組員2姓名〔組員3簡(jiǎn)短評(píng)語(yǔ)指導(dǎo)教師簽名日期2017-5-27備注評(píng)分等級(jí)有五種:優(yōu)秀、良好、中等、及格、不及格俄羅斯方塊課題內(nèi)容實(shí)現(xiàn)俄羅斯方塊游戲。主要功能為游戲界面顯示、上下左右鍵響應(yīng)以及當(dāng)前得分統(tǒng)計(jì)。通過(guò)該課題全面熟悉數(shù)組、字符串等的使用。掌握設(shè)計(jì)的基本方法及友好界面的設(shè)計(jì)。課題要求:游戲界面顯示:下落方塊和方塊堆、左右移動(dòng)、旋轉(zhuǎn)、刪除行等特效以及得分。動(dòng)作選擇:上下左右鍵對(duì)應(yīng)于旋轉(zhuǎn)、加速、左右移動(dòng)的功能。得分統(tǒng)計(jì)判斷:判定能否消除行、并統(tǒng)計(jì)得分總數(shù)等。擴(kuò)展要求:用戶數(shù)據(jù)管理。算法設(shè)計(jì)與分析I、俄羅斯方塊游戲需要解決的問(wèn)題包括

<1>、隨機(jī)產(chǎn)生方塊并自動(dòng)下移

<2>、用鍵變體

<3>、用鍵和鍵左右移動(dòng)方塊,按Q退出,按space暫停

II、俄羅斯方塊游戲需要設(shè)計(jì)的功能函數(shù)包括

<1>、聲明俄羅斯方塊的結(jié)構(gòu)體

<2>、函數(shù)原型聲明

<3>、制作游戲窗口

<4>、制作俄羅斯方塊

<5>、判斷是否可動(dòng)、隨機(jī)產(chǎn)生俄羅斯方塊類型序號(hào)、判斷是否滿行并刪除滿行的俄羅斯方塊〔8暫停,繼續(xù)功能〔9新游戲創(chuàng)建<10>用戶的創(chuàng)建,分?jǐn)?shù)用戶名的保存,查看分?jǐn)?shù)Tetris類〔主要類該類包含方法,應(yīng)為應(yīng)用程序的主類。該類用來(lái)創(chuàng)建游戲的用戶界面,事件處理功能和menu餐單,用戶信息的存儲(chǔ)。整個(gè)程序從該類的方法開(kāi)始執(zhí)行。成員變量:StringuserName;構(gòu)造方法:Tetris內(nèi)部類:Members,TetrisblockTetrisblok類:用來(lái)設(shè)計(jì)游戲界面。游戲界面顯示在由Tetrisblok類創(chuàng)建的整個(gè)用戶界面的中〔Center區(qū),游戲的即時(shí)分?jǐn)?shù)、方塊的效果圖及方的預(yù)覽功能都在整個(gè)類里面實(shí)現(xiàn)。用來(lái)封裝俄羅斯小方塊。一個(gè)方塊的屬性是由方塊1位置即x和y的坐標(biāo)、顏色決定的。成員變量privateintblockType;Timertimer=null;privateintturnState;privateintx;privateinty;privateinti=0;intj=0;staticintscore=0;intflag=0;intdelay=1000;//定義已經(jīng)放下的方塊x=0-12,y=0-22;int[][]map=newint[14][24];//方塊的形狀第一組代表方塊類型有S、Z、L、J、I、O、T7種第二組代表旋轉(zhuǎn)幾次第三四組為方塊矩陣privatefinalintshapes[][][]成員方法:publicvoidnewblock<>publicvoiddrawwall<>publicvoidnewmap<>publicvoidnewgame<>publicvoidturn<>;publicvoidleft<>;publicvoidright<>;publicvoiddown<>;publicintblow<intx,inty,intblockType,intturnState>;publicvoiddelline<>;publicintgameover<intx,inty>;publicvoidadd<intx,inty,intblockType,intturnState>;publicvoidpaintComponent<Graphicsg>;publicvoidkeyPressed<KeyEvente>;publicvoidkeyTyped<KeyEvente>Members類:用來(lái)創(chuàng)建io流,在D盤中查找username.txt文件,如果沒(méi)有就創(chuàng)建。并且在username和score中間用:隔開(kāi),方便以后用split對(duì)其進(jìn)行分割。成員變量privateFileWriterfw=null;privateBufferedWriterbw=null;privateFileReaderfr=null;privateBufferedReaderbr=null;Tetristt=null;booleanvip=true;//如果有usernametxt這個(gè)文件的話就返回true并且允許查看分?jǐn)?shù)判斷是否有用戶已經(jīng)創(chuàng)建了ArrayList<NameScore>al=newArrayList<NameScore><>;成員方法getMembers<>saveMembers<>getpaint<>GetMembers<>方法NameScore類:每一個(gè)用戶的分?jǐn)?shù)和姓名存到一個(gè)對(duì)象NameScore類。ScorePanel類;這個(gè)是用來(lái)接收Tetris類中傳遞過(guò)來(lái)的儲(chǔ)存NameScore對(duì)象的ArrayList集合,然后把用迭代器將集合中的每一個(gè)對(duì)象的username和score取出來(lái)然后放到Vector中。然后添加到JTable中三、算法實(shí)現(xiàn)算法實(shí)現(xiàn)<偽代碼>測(cè)試數(shù)據(jù)及結(jié)果分析游戲運(yùn)行新游戲開(kāi)始超過(guò)邊界游戲結(jié)束新游戲加速減速實(shí)現(xiàn)繼續(xù)功能實(shí)現(xiàn)暫停功能得到成員的姓名和分?jǐn)?shù)經(jīng)過(guò)調(diào)試和修改,程序完全實(shí)現(xiàn)設(shè)計(jì)要求,成功模擬了俄羅斯方塊的運(yùn)行過(guò)程和游戲效果,只是界面略微簡(jiǎn)陋,但已從程序?qū)用嫔蠈?shí)現(xiàn)了游戲,達(dá)到了這次實(shí)訓(xùn)的要求和目的。程序正常生成方塊,根據(jù)速度值每隔一定時(shí)間自動(dòng)下落,如有操作按鍵按下,根據(jù)按五、調(diào)試過(guò)程中的問(wèn)題1.剛開(kāi)始的時(shí)候在障礙物的問(wèn)題上總是出現(xiàn)數(shù)組越界錯(cuò)誤2.俄羅斯方塊的變形問(wèn)題,不是順時(shí)針變形,原來(lái)是方塊數(shù)組的排序出現(xiàn)錯(cuò)誤2.在添加事件的時(shí)候點(diǎn)擊新游戲分?jǐn)?shù)不刷新,后來(lái)在tetris類中的newgame中添加了score=0之后解決了問(wèn)題4.在實(shí)現(xiàn)加速和減速的問(wèn)題上,一開(kāi)始speed控制的是在時(shí)間間隔不變的情況下,變化方塊每次跳動(dòng)的距離,發(fā)現(xiàn)比較麻煩后來(lái)改用在每次跳動(dòng)距離不變的情況下,改變事件發(fā)生的間隔,間隔越短就越快,但是只能大于0并且小于15005.在點(diǎn)擊暫停按鈕之后然后點(diǎn)擊新游戲會(huì)出現(xiàn)錯(cuò)誤6.在內(nèi)部類調(diào)用外部類的變量的時(shí)候出現(xiàn)錯(cuò)誤;7.在程序剛開(kāi)始運(yùn)行的時(shí)候,彈出來(lái)的Input框,如果我沒(méi)有進(jìn)行任何處理的話,會(huì)報(bào)空指針異常雖然我在下面加上了如果username==null但是并沒(méi)有運(yùn)行,后來(lái)知道原來(lái)在if選項(xiàng)中我的username.equal<"">||username==null寫顛倒過(guò)來(lái)了導(dǎo)致。8.在實(shí)現(xiàn)用戶信息管理的時(shí)候用的是io流儲(chǔ)存,將每次輸入的用戶名存在username的txt文件下面,如果沒(méi)有這個(gè)文件的話要先創(chuàng)建。9.在對(duì)txt文本中的內(nèi)容進(jìn)行分割處理的時(shí)候,spilt寫了但沒(méi)作用到網(wǎng)上一查,我當(dāng)時(shí)用的是:進(jìn)行分割,所以split應(yīng)該寫成split<"http://:">而且返回的是一個(gè)數(shù)組;第一個(gè)數(shù)temp[0],第二個(gè)數(shù)temp[1];10.在實(shí)現(xiàn)將用戶信息返回到新的jpanel上面的時(shí)候,ScorePanel總是得不到從Tetris傳過(guò)來(lái)的值,顯示一個(gè)異常,根據(jù)斷點(diǎn)找到是在迭代器中it.next返回的是一個(gè)對(duì)象,而且最好的實(shí)在實(shí)例化一個(gè)迭代器的時(shí)候?qū)ζ溥M(jìn)行泛型。在將迭代器改成泛型之后順利解決總結(jié)15240223沙伏全:通過(guò)課程的設(shè)計(jì),從設(shè)計(jì)到到完成完整的開(kāi)發(fā)過(guò)程,同時(shí)對(duì)所涉及的學(xué)科有了更深入的了解。增加了實(shí)踐經(jīng)驗(yàn),為今后其他平臺(tái)的開(kāi)發(fā)打下了堅(jiān)實(shí)的基礎(chǔ)。在設(shè)計(jì)程序中主要是局限于讀課本的知識(shí)和概念,但很少自己親自動(dòng)手去編寫代碼,總是眼高手低,當(dāng)真正的去編寫這個(gè)俄羅斯游戲的時(shí)候就體會(huì)到編寫代碼真的好難,尤其是剛開(kāi)始的想的時(shí)候,根本不知道如何下手。后來(lái)通過(guò)上網(wǎng)查詢和請(qǐng)教一些編程比較好的同學(xué)后才有了三個(gè)基本的思路,自己又重新翻閱了一下課本,將課本上的知識(shí)又重新細(xì)致的復(fù)習(xí)了一遍,最終借助于網(wǎng)絡(luò)和同學(xué)的幫助完成了這個(gè)實(shí)驗(yàn)。通過(guò)這個(gè)實(shí)驗(yàn)發(fā)現(xiàn)自己在

編程方面還有很大的欠缺,不過(guò)通過(guò)這個(gè)實(shí)驗(yàn)帶給我最大的收獲,必須要親自動(dòng)手多寫,多看代碼才能真正的做好15240227魏源杞:在這兩個(gè)星期里,我們專業(yè)的學(xué)生在專業(yè)老師的帶領(lǐng)下進(jìn)行了程序?qū)嵙?xí)學(xué)習(xí)。在這之前,我們已經(jīng)對(duì)c語(yǔ)言、java、數(shù)據(jù)結(jié)構(gòu)。對(duì)這些學(xué)科有了一定的了解,但是也僅僅是停留在了解的范圍,對(duì)里面的好多東西還是很陌生,更多的在運(yùn)用起來(lái)的時(shí)候還是感到有些棘手。在實(shí)驗(yàn)課上,我們完成多個(gè)實(shí)驗(yàn),在這個(gè)階段的學(xué)習(xí)中,我從認(rèn)識(shí)到熟悉,而后到能夠自主運(yùn)用。通過(guò)對(duì)Java的了解,我發(fā)現(xiàn)它確實(shí)有很多方便之處,它集抽象性、封裝性、繼承性和多態(tài)性于一體,實(shí)現(xiàn)了代碼重用和代碼擴(kuò)充,提高了軟件開(kāi)發(fā)的效率。對(duì)于我們這個(gè)專業(yè)來(lái)說(shuō)學(xué)好Java語(yǔ)言是很重要的,所以在實(shí)驗(yàn)自工程中我都盡力理解java編程思想、掌握基礎(chǔ)。此次試驗(yàn)收益匪淺。15240225王鵬焱:之前都是看視頻,根據(jù)視頻上面的思路和步驟來(lái)寫代碼,沒(méi)有整體的思想。通過(guò)這次實(shí)驗(yàn)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論