




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
...wd......wd......wd...中國石油大學(xué)(華東)計通學(xué)院《軟件編程實踐》實習(xí)報告題目:我的“2048〞學(xué)號姓名認(rèn)知實習(xí)
成績編程實習(xí)
成績總成績1407030108劉聰1407030106賈如舉1407030117王悅1407030119吳宇鋮評語2015年7月一、題目介紹〔包括:題目背景簡介、系統(tǒng)到達目標(biāo)等〕《2048》是一款比擬流行的數(shù)字游戲,最早于2014年3月20日發(fā)行。原版2048首先在GitHub上發(fā)布,原作者是GabrieleCirulli,后被移植到各個平臺。這款游戲是基于《1024》和《小3傳奇》的玩法開發(fā)而成的新型數(shù)字游戲。2014年GabrieleCirulli利用周末的時間寫2048這個游戲的程序,僅僅只是好玩而已。他想用一種不同的視覺展現(xiàn)效果和更快速的動畫來創(chuàng)造屬于我自己的游戲版本AsherVollmer和GregWohlwend作為Threes的開發(fā)者,他們在開發(fā)這款游戲的時候投入了大量的時間和精力。在制作2048的過程中,他決定把工程托管到Github上去,并且通過Github完成工程。完成了這個游戲之后,通過GithubPages發(fā)布,并發(fā)表在DesignerNews上。由于本人十分喜歡《2048》這款手游,在了解了本次課程設(shè)計是設(shè)計一個QT平臺下的軟件之后,就選定了《2048》作為本次課程論文的課題。在此次課程開題報告的制作過程中,我們研究小組將運用學(xué)習(xí)到的知識以及c++編程知識通過網(wǎng)上現(xiàn)有的資料嘗試完成此次課程的開發(fā)。此次,本研究小組決定在《2048》原有的根基上進展界面等設(shè)計修改,希望給人煥然一新的感覺,能夠給人新有的感覺,在功能上進展設(shè)計,使其具有獨特的功能。二、主要內(nèi)容〔詳細(xì)介紹系統(tǒng)總體功能、模塊劃分,以及每個模塊的具體實現(xiàn)〕系統(tǒng)化具體功能:有16個格子,初始時會有兩個格子上安放了兩個數(shù)字2,每次可以選擇上下左右其中一個方向去滑動,每滑動一次,所有的數(shù)字方塊都會往滑動的方向靠攏外,系統(tǒng)也會在空白的地方隨即出現(xiàn)一個數(shù)字方塊,一樣數(shù)字的方塊在靠攏、相撞時會相加。不斷的疊加最終拼湊出2048這個數(shù)字就算成功?!?048》中每個格子的數(shù)據(jù)和顏色的都在不斷地刷新,在每一次移動之后,幾乎在這4*4的每一個方格上的數(shù)據(jù)都會變化,因此在每一次移動之后,每一個方格上的數(shù)據(jù)都要刷新一次。相對的,每一個數(shù)的背景顏色是不同的,也就是說,在每一次數(shù)據(jù)刷新的時候,每一個方格上的顏色也要同樣的刷新一次。當(dāng)屏幕上沒有沒有寫有數(shù)據(jù)的方格并且屏幕上的數(shù)據(jù)沒有哪兩個相鄰的數(shù)據(jù)是一樣的兩個數(shù),那么就判定為游戲完畢。游戲所產(chǎn)生的分?jǐn)?shù)將被記錄下來,如果此分?jǐn)?shù)超過以前的最高分?jǐn)?shù),此分?jǐn)?shù)會將其取代,成為最高分“Highscore〞。模塊劃分:1)主界面的設(shè)計。提供用戶更多的選擇,游戲分為鼠標(biāo)板和鍵盤版兩種,用戶可隨意自由選擇自己喜歡的玩法。2〕分?jǐn)?shù)計算。在移動方向?qū)⑾噜彽?個數(shù)相加;。3〕移動控制。控制分為兩種方式,一種為鼠標(biāo)控制,一種為鍵盤控制,用戶可根據(jù)自己喜好,自由選擇自己喜歡的玩法。鼠標(biāo)板:用戶可在4X4界面按住鼠標(biāo)左鍵進展上下左右移動控制。鍵盤版:分為上下左右四種移動方式,通過鍵盤上的W、A、S、D或者↑↓←→控制。4〕移動前后數(shù)組數(shù)值的改變。通過重新創(chuàng)立數(shù)組,將移動后的數(shù)值填入、并用0將數(shù)組補成4X4的數(shù)組,來實現(xiàn)移動前后數(shù)值的改變。游戲完畢后,一旦此次分?jǐn)?shù)超過之前的最高分?jǐn)?shù),此分?jǐn)?shù)將會取代其成為最高分。一直到下一個最高分將其取代為止。5〕利用概率隨機數(shù)來實現(xiàn)2和4的生成。6〕成功與失敗的判斷等。7〕當(dāng)游戲完畢時,能夠詢問用戶是否重新開場。游戲技巧:1〕最大數(shù)盡可能放在角落。
2〕數(shù)字按順序緊鄰排列。
3〕首先滿足最大數(shù)和次大數(shù)在的那一列/行是滿的。
4〕時刻注意活動較大數(shù)〔32以上〕旁邊要有相近的數(shù)。5〕以大數(shù)所在的一行為主要移動方向6〕不要急于“清理桌面〞。三、開發(fā)團隊學(xué)號姓名職責(zé)詳細(xì)任務(wù)1407030108劉聰界面設(shè)計、局部代碼研究富有創(chuàng)意的設(shè)計程序的界面,給人以獨特的感覺。同時大局部時間協(xié)助賈如舉修改代碼。1407030106賈如舉主要代碼研究通過上網(wǎng)查閱資料,學(xué)習(xí),研究代碼的作用,使其應(yīng)用到程序中,并對代碼進展了大量的修改。1407030117王悅局部代碼探究、實習(xí)報告書寫實習(xí)報告,通過劉聰與賈如舉的反響將其記錄于報告中。同時協(xié)助賈如舉修改代碼。完成代碼等研究。1407030119吳宇鋮游戲測試測試游戲是否符合預(yù)期的標(biāo)準(zhǔn),尋找其中的bug四、技術(shù)總結(jié)1.〔1〕“我的2048〞游戲程序流程圖〔2〕游戲界面整體流程圖2.主要技術(shù):主要技術(shù)包括界面設(shè)計,界面轉(zhuǎn)換,鼠標(biāo)、鍵盤控制事件,頁面布局,方塊的大小和顏色設(shè)定,游戲的組合,信號與槽的應(yīng)用等一系列問題3.遇到的技術(shù)問題及解決方法:1〕代碼錯誤:網(wǎng)上的教程雖然很全,但是按照教程所建設(shè)的工程,以及添加所需的每個類和每個文件,把代碼寫上之后發(fā)現(xiàn)了很多錯誤,這些錯誤有些是能解決,而大多數(shù)并不能解決,真的令我們很頭疼。解決方案:經(jīng)過組員的不懈努力,以及上網(wǎng)查資料、請教同學(xué)和教師,終于逐漸的解決了一個個的大問題,程序終于可以運行,但是距離成功還是很遙遠(yuǎn),因為這只是剛剛構(gòu)建好,好多功能還沒有實現(xiàn),但我們的根基工作己經(jīng)做好。2〕界面的轉(zhuǎn)換:我們之前并不知道該怎么在點擊一個按鈕的時候關(guān)掉當(dāng)前界面同時開啟另一個界面,這也是個很大的問題,因為界面不轉(zhuǎn)換,我們的所有功能將無法實現(xiàn)。解決方案:負(fù)責(zé)界面設(shè)計的劉聰同學(xué)運行了幾個其他的程序,從其他程序中研究代碼,尋找轉(zhuǎn)化界面的方法,并請教了本班同學(xué)麻寶鑫,終于不負(fù)眾望,解決了這個重大的問題,使程序可以運行下去。此問題的解決劉聰同學(xué)功不可沒,同時感謝麻寶鑫同學(xué)的鼎力相助。3〕顏色的設(shè)定:為了讓游戲界面看起來不是那么單調(diào),于是我們想讓方塊再出現(xiàn)不同數(shù)字時顯示不同的數(shù)字。這個功能對于程序的影響不大,只不過是令游戲更美觀而已。但要想實現(xiàn)這個功能,難度還是很大的對于小組成員來說,因為我們自大一開場學(xué)習(xí)的c語言以及c++都沒有學(xué)到關(guān)于顏色的設(shè)定,組內(nèi)成員一度想放棄這個功能,但是負(fù)責(zé)代碼編寫的賈如舉并沒有放棄。解決方案:經(jīng)過大量的程序研究,再加上從論壇、貼吧、qq群查詢到的資料,終于找到了是添加顏色的方案,以及方塊數(shù)字變化時顏色的改變,然而這距離預(yù)期的結(jié)果還有很大的差距。我們在一直改良4〕程序的整合,我們的“2048〞分為鍵盤版和鼠標(biāo)版兩種,看似一個游戲,其實是兩個不同的游戲整合到一起,但大局部功能的實現(xiàn)還是一樣的,只有鍵盤控制和鼠標(biāo)控制這局部的設(shè)計是不同的。想要一同實現(xiàn)這兩個功能,需要把兩個工程整合到一起。剛開場我們認(rèn)為本來很容易就能整合到一起,但事實并非如此。整合到一起以后,代碼出現(xiàn)大量錯誤。解決方案:經(jīng)過對錯誤代碼的研究,發(fā)現(xiàn)錯誤的原因是很多變量定義重復(fù),因此經(jīng)過修改,將重復(fù)代碼改正。解決了大量問題以后,程序終于可以運行?!哺接螒蚪缑鎴D片一張〕4.關(guān)鍵代碼:1〕鼠標(biāo)控制游戲所需代碼:voidGameWidget::mouseReleaseEvent(QMouseEvent*e){//如果在播放動畫效果則直接退出防止重復(fù)產(chǎn)生手勢事件if(isAnimating)return;//根據(jù)終點坐標(biāo)和起點坐標(biāo)計算XY坐標(biāo)的增量floatdX=(float)(e->pos().x()-startPos.x());floatdY=(float)(e->pos().y()-startPos.y());//確定手勢方向if(abs(dX)>abs(dY)){if(dX<0)emitGestureMove(LEFT);elseemitGestureMove(RIGHT);}else{if(dY<0)emitGestureMove(UP);elseemitGestureMove(DOWN);}}2〕判斷游戲是否勝利:boolGameWidget::checkWin(){//循環(huán)檢測是否某個方格的數(shù)字為2048for(inti=0;i<4;i++)for(intj=0;j<4;j++)if(board[i][j]==2048)returntrue;returnfalse;}3〕存貯每個數(shù)字對應(yīng)的顏色://顏色數(shù)組存儲每個數(shù)字對應(yīng)的背風(fēng)光QColordigitBkg[11]={QColor::fromRgb(0xFF,0xFF,0xCC),QColor::fromRgb(0xFF,0xFF,0x99),QColor::fromRgb(0xFF,0xCC,0xCC),QColor::fromRgb(0xFF,0xCC,0x99),QColor::fromRgb(0xFF,0x99,0x99),QColor::fromRgb(0xFF,0x99,0x66),QColor::fromRgb(0xFF,0x66,0x66),QColor::fromRgb(0xCC,0x99,0x66),QColor::fromRgb(0xCC,0x33,0x33),QColor::fromRgb(0xCC,0x00,0x33),QColor::fromRgb(0xFF,0x00,0x00)};五、心得體會轉(zhuǎn)眼間幾天實習(xí)已經(jīng)過去,雖然倍感折磨,但是收獲卻是很大的?!凹埳系脕斫K覺淺,絕知此事要躬行!〞通過實訓(xùn),我們都有這樣一個感覺,所學(xué)的理論知識與現(xiàn)實差距太大,深深的體會到了自己在編程方面的欠缺和缺乏,也意識到了我們作為一名軟件工程專業(yè)的學(xué)生,要想在以后的職業(yè)中嶄露頭角,除了要有過硬的理論知識,安康的體魄之外,還必須具備良好的心理素質(zhì),是自己在以后的途中無論經(jīng)歷什么樣的困難,都立于不敗之地。通過實訓(xùn)教師的課堂講解與企業(yè)文化標(biāo)準(zhǔn)的培訓(xùn),使我們加深了對自己專業(yè)的認(rèn)識。這次實習(xí)讓我們深深體會到一個團隊中的各個成員合作的重要性,要善于團隊合作,善于利用別人的智慧,這才是大智慧??繂我坏牧α渴呛茈y完成一個大工程的,在進展團隊合作的時候,還要耐心聽取每一個成員的意見,積極參與到團隊合作中去,這樣會有意想不到的驚喜。這次實習(xí)讓我們學(xué)到很多東西,不僅在理論上讓我們對編程有了全新的認(rèn)識,讓我明白工作中需要能力,素質(zhì),知識之外,更重要的是學(xué)會了如何去完成一個任務(wù),懂得了享受工作。在實踐能力上也得到了很大的提高,真正做到了學(xué)以致用,對我們來說受益匪淺。更讓我們真切的體會到作為一名未來程序員到所需要的素質(zhì):耐心,勤思好問,享受團隊不斷努力的樂趣,學(xué)以致用。。當(dāng)遇到問題,冷靜,想方法一點一點的排除障礙,到最后獲取成功,一種自信心就由然而生,這應(yīng)該就是工作的樂趣。有時候不懂的就需要問別人了,虛心請教,從別人的身上真的能學(xué)到自己沒有的東西,每一次的挫折都會使我更接近成功。還有學(xué)會了在工作中與人的合作與交流,同樂同累,合作互助,這是團體的精神,也是必須學(xué)習(xí)的東西。我們深刻的認(rèn)識到要成為一名優(yōu)秀的軟件開發(fā)人員不是一件容易的事情。要想成為一個合格的程序員就有具備一種自學(xué)能力,在工作中會遇到很多從未接觸過的問題,當(dāng)有了問題時要去解決,在你不斷努力,尋找答案的過程中,自己的能力也在潛移默化的提升。有時遇到問題時可能有很多想法但卻不知道那個正確,這就需要我們不斷地去探索,不斷地嘗試。除此之外,從一起做工程的同學(xué)身上我看到了謙虛慎重、細(xì)心努力的態(tài)度,從他們身上找尋我所缺少的品質(zhì),不斷學(xué)習(xí)。從教師那里我看到了企業(yè)人的生活面貌,沒有事情可以不勞而獲,今天教師們能夠領(lǐng)導(dǎo)我們是他們之前努力的結(jié)果,雖然教師沒有和我們講很多公司里的事情,可是他們的言行中所表現(xiàn)出來的都是比我們要嚴(yán)謹(jǐn)?shù)亩嗟膶ぷ鞯膽B(tài)度。實習(xí)中學(xué)到了QT編程的知識,我們小組所做的“我的2048〞小游戲,把學(xué)到的知識運用到具體實踐中,不僅加深我們對理論的掌握和運用,真正地做到了學(xué)以致用,還讓我們擁有一次又一次的難忘團隊開發(fā)經(jīng)歷,這也是實訓(xùn)最大的收獲。通過實訓(xùn),我們都有這樣一個感覺,所學(xué)的理論知識與現(xiàn)實差距太大,實訓(xùn),開闊了我
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)互聯(lián)網(wǎng)平臺SDN在智慧農(nóng)業(yè)中的應(yīng)用與優(yōu)化報告
- 合規(guī)崗位管理辦法
- 同里民宿管理辦法
- 后續(xù)產(chǎn)業(yè)管理辦法
- 員工升職管理辦法
- 售中交付管理辦法
- 商業(yè)職工管理辦法
- 商品應(yīng)急管理辦法
- 商家入住管理辦法
- 商貿(mào)服務(wù)管理辦法
- 采血后預(yù)防淤青的按壓方式
- 2025年餐飲考試筆試試題及答案
- 路燈安裝工程施工方案
- 部編版語文六年級(上)全冊同步課課練(含答案)
- 無人機行業(yè)安全事故應(yīng)急預(yù)案
- 學(xué)校食堂保潔服務(wù)方案(技術(shù)標(biāo))
- 2024-2025學(xué)年牛津譯林版八年級英語上學(xué)期期末考試試卷(南京卷)
- 《汽車制造物流管理教程》課件
- 建筑工地建筑垃圾(渣土)運輸安全協(xié)議書(2篇)
- 2024年縣鄉(xiāng)教師選調(diào)進城考試《教育心理學(xué)》題庫及完整答案【必刷】
- DB32 T538-2002 江蘇省住宅物業(yè)管理服務(wù)標(biāo)準(zhǔn)
評論
0/150
提交評論