俄羅斯方塊實習報告.doc
《俄羅斯方塊實習報告.doc》由會員分享,可在線閱讀,更多相關《俄羅斯方塊實習報告.doc(19頁珍藏版)》請在裝配圖網(wǎng)上搜索。
西安財經(jīng)學院實踐教學活動周實踐報告姓 名: 學 號: 專 業(yè): 院 系: 本校指導教師: 完成日期: 2013 年8 月 31 日西安財經(jīng)學院實驗實訓教學管理中心 制實踐報告名稱小型游戲軟件設計與開發(fā)實踐時間2013年 07 月08 日至 2013 年07 月19 日 共 2 周實踐地點西安財經(jīng)學院指導教師職稱講師二級學院、系信息學院、軟件工程系實踐內(nèi)容(后附實踐報告)實踐周關于小型游戲軟件設計與開發(fā)其中主要有編譯軟件,系統(tǒng)兼容性,和需求分析,系統(tǒng)設計,通過這些軟件設計我懂的了許多知識,也覺得軟件設計在我們生活中運用的重要性,也一定好好掌握C語言這門語言。在今后我也會更努力的學習有關軟件上的知識。 指導教師評語及成績 簽字(蓋章): 年 月 日院系意見簽字(蓋章): 年 月 日小型游戲軟件設計與開發(fā)隨著社會的發(fā)展,人們的生活日益加快,越來越多加入了全球化的世界。人們不在拘泥于戶外活動,戶外游戲,而此時一款可以隨時隨地娛樂的游戲成了必需品。在手機電腦不斷向人們襲來的社會,一款又好玩又娛樂性強的游戲橫空出世。這就是我們每個人熟悉的再也熟悉不過的游戲-貪吃蛇,貪吃蛇這款游戲簡單易行,操作方便,娛樂性強。該游戲給人們帶來了追逐的快感,以及成功后的滿足感,對于一直處于高壓下的現(xiàn)代人是很好的放松工具。該游戲使用的開發(fā)語言為C語言,使用TC2.0作為開發(fā)工具。貪吃蛇游戲背景: 蛇引誘夏娃吃了蘋果之后,就被貶為毒蟲,陰險的象征。 而蛇吃東西是整只動物吞進去的,大概在文藝復興的時候(好象是那個時候但是不確定)就有人發(fā)明的一種游戲,是現(xiàn)在貪吃蛇的前身。后來慢慢的發(fā)展就變成了今天的貪吃蛇了、現(xiàn)在貪吃蛇主要應用于手機游戲。本文運用軟件工程思想、JAVA面向對象編程、類的封裝、抽象類的使用(接口),游戲編碼規(guī)范遵循MVC模式,循序漸進實現(xiàn)貪吃蛇的相關功能。所以為了適應時代需求,促進自己各方面的發(fā)展,使自己的暑假生活更加完善,我參加了這次小型游戲軟件的設計與開發(fā)的實踐。我的實踐內(nèi)容如下:1.1關于編譯軟件本程序采用Turbo C 2.0英文版本進行編譯。Turbo C 2.0是美國Borland 公司的產(chǎn)品,Borland公司是一家專門從事軟件開發(fā)、研制的大公司。該公司相繼推出了一套 Turbo系列軟件。Turbo C 2.0介紹:Turbo C2.0不僅是一個快捷、高效的編譯程序,同時還有一個易學、易用的集成開發(fā)環(huán)境。使用Turbo C2.0無需獨立地編輯、編譯和連接程序,就能建立并運行C語言程序。因為這些功能都組合在Turbo 2.0的集成開發(fā)環(huán)境內(nèi),并且可以通過一個簡單的主屏幕使用這些功能?;九渲靡螅篢urbo C 2.0可運行于IBM-PC系列微機,包括XT,AT及IBM 兼容機。此時要求DOS2.0或更高版本支持,并至少需要448K的RAM,可在任何彩、單色80列監(jiān)視器上運行。支持數(shù)學協(xié)處理器芯片,也可進行浮點仿真,這將加快程序的執(zhí)行。 Turbo C 2.0的主要文件的簡單介紹:INSTALL.EXE 安裝程序文件TC.EXE 集成編譯TCINST.EXE 集成開發(fā)環(huán)境的配置設置程序。TCHELP.TCH 幫助文件THELP.COM 讀取TCHELP.TCH的駐留程序README 關于Turbo C的信息文件TCCONFIG.EXE 配置文件轉換程序MAKE.EXE項目管理工具TCC.EXE命令行編譯TLINK.EXETurbo C系列連接器TLIB.EXETurbo C系列庫管理工具C0?.OBJ 不同模式啟動代碼C?.LIB不同模式運行庫GRAPHICS.LIB圖形庫EMU.LIB8087仿真庫FP87.LIB 8087庫*.H Turbo C頭文件*.BGI 不同顯示器圖形驅動程序*.C Turbo C例行程序(源文件)其中:上面的?分別為:T Tiny(微型模式) 、S Small(小模式) 、C Compact(緊湊模式) 、M Medium(中型模式) 、L Large(大模式)H Huge(巨大模式1.2 C語言簡介C語言發(fā)展沿革:C語言是國際上廣泛流行且很有發(fā)展前途的計算機高級語言,不僅用來編寫應用軟件,也用來編寫系統(tǒng)軟件。在C語言誕生以前,操作系統(tǒng)及其他系統(tǒng)軟件主要是用匯編語言實現(xiàn)的。由于匯編語言程序設計依賴于計算機硬件,其可讀性和可移植性都很差,而一般的高級語言又難以實現(xiàn)對計算機硬件的直接操作,因此人們需要一種兼有匯編語言和高級語言特性的語言。C語言就是在這種環(huán)境下產(chǎn)生的。它最早是由Dennis Richie于1973年設計并實現(xiàn)。它的產(chǎn)生同UNIX系統(tǒng)之間具有非常密切的聯(lián)系C語言是在UNIX系統(tǒng)上開發(fā)的。而無論UNIX系統(tǒng)本身還是其上運行的大部分程序,都是用C語言編寫實現(xiàn)。同時,它同樣適合于編寫不同領域中的大多數(shù)程序。C語言已經(jīng)成為全球程序員的公共語言,并且由此產(chǎn)生了當前兩個主流的語言C+和Java它們都建立在C語言的語法和基本結構的基礎上,而且現(xiàn)在世界上的許多軟件都是在C語言及其衍生的各種語言的基礎上開發(fā)而成。目前,在微機上廣泛使用的C語言編譯系統(tǒng)有Turbo C、Borland C+、Microsoft Visual C+等。雖然它們的基本部分都是相同的,但還是有一些差異。C語言特點:C語言是一種由ALGOL語言派生和發(fā)展起來通用流行的程序設計語言,許多大型軟件均采用C語言編寫,它同時具有匯編語言和高級語言的特性。具體地說,它具有如下特點:語言簡潔,結構緊湊,使用方便、靈活。C語言一共只有32個關鍵字和9條控制語句,且源程序書寫格式自由。運算符極其豐富,數(shù)據(jù)處理能力強。C語言一共有45種運算符,它把括號、賦值符號、強制類型轉換符號等都作為運算符處理,使得C語言的運算符類型極為豐富,表達式類型多樣化。靈活使用可以實現(xiàn)其他高級語言難以實現(xiàn)的運算和操作。 數(shù)據(jù)結構豐富。C語言的數(shù)據(jù)類型有:整型、實型、字符型、數(shù)組類型、指針類型、結構體類型、共用體類型等,用它們可以實現(xiàn)各種復雜的數(shù)據(jù)結構(如鏈表、樹等)。特別是指針類型,使用起來靈活多變。具有結構化的控制語句,是一種模塊化的程序設計語言。如ifelse語句、while語句、for語句等,可以在程序中使用所有的控制語句。另外,函數(shù)是C語言的基本單位,用函數(shù)作為程序模塊的基本單位,以實現(xiàn)程序的模塊化。可移植性好。C程序本身基本上可以不作任何修改,就能運行在各種不同型號的計算機和各種操作系統(tǒng)環(huán)境上。C語言提供了某些接近匯編語言的功能,能直接訪問物理地址,直接對硬件操作,從而有利于編寫系統(tǒng)軟件。這些是C語言的一般特點。正是由于這些特點,使得它的應用非常廣泛。C語言程序設計教材特點:根據(jù)C語言注重實踐的特點,和實際的教學情況,該教材具有如下特點:首次真正地在(C語言)程序設計教材中突出講授程序設計而不是程序,明確地給出了程序設計主要過程:將非計算機語言表述的算法,改寫成帶計算過程和計算條件的計算公式的過程。突出算法在計算學科中的靈魂作用。強調(diào)程序設計之前,應將解決問題的辦法抽象成帶有計算過程和計算條件的數(shù)學公式,即使枚舉法,也應該用帶計算過程和計算條件的數(shù)學公式來表示枚舉過程和方法。將所有帶計算過程和計算條件的數(shù)學公式,按基本程序模塊分成了遞推算法、迭代算法和嘗試算法三類,使程序規(guī)范化、規(guī)律化,大大降低了程序設計難度。 所有需要設計的程序都給出了設計過程,都給出了帶計算過程和計算條件的數(shù)學公式,以及和算式有關的重要的數(shù)據(jù)字典,使程序設計教材和軟件工程并軌。1.3 關于系統(tǒng)兼容性本程序經(jīng)過調(diào)試,可以在 2000 2003 XP 系統(tǒng)下編譯運行。1.4 本章小結本章主要介紹了,關于選題和題目的背景;開發(fā)語言和開發(fā)工具做了簡單的介紹;系統(tǒng)的兼容性。這樣使讀者對文章有個大概的了解。第二章 需求分析2.1 可行性分析游戲開發(fā)至今已經(jīng)有30多年,在這個短暫的時期里,隨著硬件水平的提高,游戲開發(fā)新技術層出不窮,經(jīng)典游戲比比皆是。游戲這個名稱一直就存在于每個人的日常生活中,如猜拳游戲,大地游戲,球類游戲,林林總總,不勝枚舉,甚至于有些流行歌曲把人生也比喻為游戲,好比“一場游戲一場夢”。因此,游戲對于現(xiàn)代人的成長歷程,絕對是一個不可或缺的角色。2.2 設計目的綜合運用在校期間所學的理論知識和技能,設計開發(fā)貪吃蛇游戲,使自己熟悉應用系統(tǒng)的開發(fā)過程,培養(yǎng)獨立思考能力,檢驗學習效果和動手能力,提高工程實踐能力。2.3 游戲需求給出1條小蛇和隨機一個食物當小蛇吃到食物就加分。第三章 系統(tǒng)設計3.1.概要設計通過對貪吃蛇的需求分析,我們用C語言實現(xiàn)該程序概要如下:畫面設計:主要內(nèi)容有對邊框食物蛇的設計,起用了與圖形設計相關的函數(shù),有INITGRAPH,SETCOLOR等.首先是畫面的啟動問題,緊接就是畫面的繪制,而對食物及蛇則可放在游戲具體過程中,因為食物是隨機的,而蛇是移動的.游戲過程:主要是對食物及蛇的設置.在這個環(huán)節(jié)程序有幾個重要的算法,是程序能否成功地運行的關鍵.其主要有蛇是如何移動身體的,蛇怎樣才能吃到食物,怎樣判斷蛇的死亡,以及如何中斷游戲等等.游戲結束:在確定蛇死亡后,游戲結束,此時就必需退出游戲.注意此時界面的設計,及分數(shù)的輸出和圖形的結束.添加的功能:起先的程序是很簡單的,無任何的修飾,而且在有些地方不便于用戶的操作.于是在相應的地方添加了某些功能.例如在游戲的開頭,添加了”WELCOME TO GAME”的語句,并添加”PRESS ANY KEY TO GAME”以提示用戶.在游戲的中途,用戶可以按ESC鍵以中斷游戲,也可以選擇繼續(xù)游戲.運用函數(shù)如下表:表31 游戲模塊功能函數(shù) 函數(shù)名及函數(shù)類型 函數(shù)功能主函數(shù) Void Main() 調(diào)用輔函數(shù)使用程序圖形驅動 Void Init() 啟動畫面開始畫圖開始畫圖 Void Drawk() 畫出游戲圖框歡迎界面 Void Pause() 歡迎字幕續(xù)表31 游戲模塊功能游戲結束 Void GameOver() 游戲結束的調(diào)用開始游戲 VoidPlay() 游戲開始的標志成績輸出 Void Prscore() 游戲進行程度的標志結束界面 Void Close() 結束所有的操作音樂 Void Music() 輸出音樂3.2.詳細設計程序設計分析: 開始歡迎界面音樂游戲界面結束游戲退出游戲圖3-1 主程序圖這是一個簡單的游戲,所以循環(huán)和分支之類的函數(shù)在大的面上運用較少,主要體現(xiàn)在計算上,尤其是坐標上的計算較突出.簡單易懂,一目了然.開始游戲鍵入B開始游戲初步繪制食物和蛇根據(jù)玩家不同操作來具體操作游戲結束3-2 游戲主圖在這一過程中包含著這個程序的主要算法:食物是如何出現(xiàn)的;蛇是如何移動了;蛇的每個環(huán)節(jié)如何跟隨蛇頭移動;怎樣才算游戲失敗等等。食物的出現(xiàn):if(food.yes=1)food.x=rand()%400+60;food.y=rand()%350+60;while(food.x%10!=0)/*食物隨機出現(xiàn)后必須讓食物能夠在整格內(nèi),這樣才可以讓蛇吃到*/food.x+;while(food.y%10!=0)food.y+;food.yes=0;/*畫面上有了食物*/if(food.yes=0)/*畫面上有了食物就要顯示*/setcolor(GREEN);rectangle(food.x,food.y,food.x+10,food.y-10);食物是游戲的關鍵之一,只有設定好才可以使游戲成功.而食物必須在整格內(nèi)是主要的內(nèi)容,接著就是繪制圖。蛇的移動:for(i=snake.node-1;i0;i-)/*蛇的每個環(huán)節(jié)的移動*/snake.xi=snake.xi-1;snake.yi=snake.yi-1;/*1,2,3,4表示右,左,上,下四個方向,通過這個判斷來移動蛇頭*/ switch(snake.direction)case 1:snake.x0+=10;break;case 2: snake.x0-=10;break;case 3: snake.y0-=10;break;case 4: snake.y0+=10;break;蛇尾緊跟隨著蛇頭的改變,蛇頭則依據(jù)輸入的情況做不相應的判斷.補充: while(1)while(!kbhit() /*在沒有按鍵的情況下,蛇自己移動身體*/游戲失敗蛇撞到自己for(i=3;isnake.node;i+)/*從蛇的第四節(jié)開始判斷是否撞道自己了,因為蛇頭為兩節(jié),第三節(jié)不可能拐過來*/if(snake.xi=snake.x0&snake.yi=snake.y0) GameOver();/*顯示失敗*/snake.life=1;break;判斷坐標上其XY軸上的值是否相等即可,對于二維圖形這是很重要的運算,其運算也非常常見.蛇撞到墻if(snake.x0595|snake.y0455)/*蛇是否撞到墻壁*/GameOver();/*本次游戲結束*/snake.life=1;/*蛇死*/if(snake.life=1) /*以上兩種判斷以后,如果蛇死就跳出內(nèi)循環(huán),從新開始*/ break;if(snake.x0=food.x&snake.y0=food.y)/*吃到食物以后*/setcolor(0);/*把畫面上的食物東西去掉*/rectangle(food.x,food.y,food.x+10,food.y-10);snake.xsnake.node=-20;snake.ysnake.node=-20;/*新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置*/snake.node+;/*蛇的身體長一節(jié)*/food.yes=1;/*畫面上需要出現(xiàn)新的食物*/score+=10;PrScore();/*輸出新得分*/if(snake.x0=food.x&snake.y0=food.y)/*吃到食物以后*/setcolor(0);/*把畫面上的食物東西去掉*/rectangle(food.x,food.y,food.x+10,food.y-10);snake.xsnake.node=-20;snake.ysnake.node=-20;/*新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置*/snake.node+;/*蛇的身體長一節(jié)*/food.yes=1;/*畫面上需要出現(xiàn)新的食物*/score+=10;PrScore();/*輸出新得分*/補充1:在這下面是我為了使游戲更具有趣味性,所設計的界面:void color()int i,t,x=200,y=70;int gd=DETECT,gm=0;initgraph(&gd,&gm,e:tc);setbkcolor(11);setcolor(12);for(i=0;i=5;i+) x=x-15;y=y+15;settextstyle(1,0,i);cleardevice();outtextxy(x,y,Wellcome to Game!);outtextxy(150,90,press any key to continue!);getch();closegraph(); 13void pause() char c;printf(ntttt please enter B to begin Game!);c=getch();if(c=b|c=B)GamePlay();elseprintf(ntttt select error!please enter B to Game!);c=getch();if(c=b|c=B)GamePlay(); sleep(1);上面這段程序包含了歡迎界面及游戲開始時的按鍵設計,突出了該游戲的人性化,方便用戶的使用補充2:為了方便用戶可以隨時退出游戲,也可以暫停游戲,以便隨時返回游戲. void Quit() char c;printf(nttt sure to exit enter Y;Otherwise enter any other key!);c=getch();if(c=y|c=Y)exit(0);3.3 游戲過程框圖 每種情況都是隨時都可以碰到的,所以有的時候須不斷調(diào)用各種判斷函數(shù)。開始游戲蛇身自己移動有按鍵?蛇繼續(xù)自己移動是ESC?確定要退出游戲?是光標?其它無效退出游戲根據(jù)光標移動蛇撞墻/接尾?游戲結束吃到食物?增加分數(shù)NYYYNNYYNYN圖3-3. 游戲具體操作圖繪制邊框在該程序里,并不是單純?yōu)榱嗣烙^,更是為了繪制游戲中的“墻”,該墻在游戲中起著很重要的位置,是判斷游戲失敗與否的一個關鍵。當“蛇”遇到“墻”游戲失敗,就結束游戲。開始畫圖設置背景顏色設置邊框顏色設置直線型定義i=50i=600?繪制上下邊框重新定義i=40i=450結束畫圖繪制左右邊框YNYN圖3-4 繪制邊框該游戲中有三個物體是必須繪制的,上圖介紹了邊框繪制,下面給大家展示一下食物的繪制:開始定義文本的背景顏色定義背景的顯示框定義文本的顏色定義文本的坐標定義分數(shù)輸出格式輸出最新分數(shù)返回圖3-5. 食物的繪制不論是什么樣的游戲,有一個大家都會關心的問題,那就是分數(shù),分數(shù)決定勝負的關鍵,也是用戶衡量自己能力的一個平臺,這個游戲也不例外,在這里分數(shù)以10分一算,沒吃到一次食物,分數(shù)就增加10分,一下是關分數(shù)輸出一個設計: 開始清屏輸出成績定義文本顏色定義文本格式定義輸出文本“GAME OVER”及其坐標任意鍵 圖3-6. 分數(shù)輸出在游戲失敗后,有一個輸出界面,雖然游戲不占重要的地位,但是也能體現(xiàn)一個游戲與其他程序設計的不同地方。啟動隨機數(shù)發(fā)生器食物存在?出現(xiàn)新食物食物在整格內(nèi)?調(diào)整食物于整格內(nèi)顯示食物NNY圖3-7. 游戲結束3.4本章小結本章主要分為概要設計、詳細設計、游戲過程框圖。通過概要設計像讀者呈現(xiàn)出本系統(tǒng)的輪廓,再通過詳細設計,向讀者清晰的展示本系統(tǒng),游戲過程框圖向讀者呈現(xiàn)出本系統(tǒng)。概要設計通過游戲過程和游戲各項功能完成,詳細設計把游戲的各個功能完整的展示出來,并加上部分代碼更易于讀者理解,游戲過程框圖將系統(tǒng)各個功能和系統(tǒng)流程梳理清楚。實踐總結經(jīng)過一個學期的C 語言學習,我對軟件上的知識又加深了一層.尤其是這十幾天來,通過對該程序的設計,分析,調(diào)試等操作,使我更深地了解到C語言的精華.在制作過程,剛開始時可以說是困難叢叢,雖然對C語言中的函數(shù)和文件有了一定的基礎,但由于平時缺少實際運用,很難將其完整的組織起來.在老師的指引下,我先通過查詢各種資料,了解相關程序的設計,分析其源代碼,繪制其流程圖.在有了這些基礎下,我設計了該游戲的流程圖,并依據(jù)流程圖設想出每一部分的程序設計.這個程序給我感觸最深的就是繪圖上的技巧,C語言是比較高級的編程語言,其在繪圖上有它的優(yōu)勢.依我的理解,繪圖主要在計算上,不論是怎樣的圖塊都必須設定其每個點的位置.在這里循環(huán)語句就顯得特別重要,要不繪圖就會特別的麻煩.由于完整的整理完一個程序,使我獲得了很多,不管是哪一方面都獲得了提升.學習過程中,我體會到同學間相互學習的重要性,因為每個人選擇設計的程序都不一樣,大家相互交流自己的經(jīng)驗,設計技巧,讓我更快地學習到了自己在學習上所忽略的關鍵點.在設計上如何使程序更完美,通過大家相互檢查,探討,有了更進一步的認識.尤其在意識到自己的不足之處后,更激起我學習的興趣.在設計的開始,我遇到了一個瓶頸問題,原本想設計一個游戲菜單的,可是由于對如何利用C語言對鼠標的使用一直無法掌握,再加上時間上的關系,不得不放棄,不過在以后的時間里我也會繼續(xù)在這方面的努力,爭取能突破這個難題.在這里能順利地完成,真的很感謝老師和同學的幫助.在今后我也會更努力的學習有關軟件上的知識.- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 俄羅斯方塊 實習 報告
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://www.szxfmmzy.com/p-9144763.html