




已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
課程設(shè)計基礎(chǔ)課程設(shè)計貪吃蛇游戲設(shè)計 院 系: 班 級: 姓 名:合 作 者:指導(dǎo)教師:時間 _年_月_日 目錄11概述21.1.1研究的背景與意義21.1.2 設(shè)計的任務(wù)和需要的知識點21. 生成設(shè)計主要完成的任務(wù)22. 需要掌握和應(yīng)用的知識點21.1.3 具體完成的設(shè)計內(nèi)容31.2需求分析41.2.1 功能需求41.2.2 操作方法41.進(jìn)入游戲42.游戲界面43.游戲操作44.游戲結(jié)束51.3 總體設(shè)計61.3.1 模塊劃分61.3.2 總體數(shù)據(jù)結(jié)構(gòu)設(shè)計71. 食物與蛇的數(shù)據(jù)結(jié)構(gòu)72. 排行榜中優(yōu)勝者的數(shù)據(jù)結(jié)構(gòu)84. 符號常量的宏定義81.4 詳細(xì)設(shè)計91.4.1主控模塊main函數(shù)91.4.2繪制游戲開始界面DrawK函數(shù)101.4.3游戲具體過程GamePlay函數(shù)12Scoreper4.score141.4.5顯示排行榜信息模塊pain_board函數(shù)151.5程序的調(diào)試與測試161.5.1動畫與音樂的同步播放161.5.2蛇的運行161.5.3 終止程序171.6 結(jié)論181.7 結(jié)束語191.8程序2011概述 本課程設(shè)計一軟件方法為指導(dǎo) ,采用了結(jié)構(gòu)化、模塊化、的程序設(shè)計方法,以C語言技術(shù)為基礎(chǔ),使用Turbo C+ 3.0為主要的開發(fā)工具,對貪吃蛇的游戲進(jìn)行了需求分析、總體設(shè)計、詳細(xì)設(shè)計、最終完成系統(tǒng)的實現(xiàn)與測試。1.1.1研究的背景與意義通過開發(fā)貪吃蛇的游戲系統(tǒng),可使讀者初步了解使用軟件工程方法、技術(shù)和工具開發(fā)的過程,進(jìn)一步掌握結(jié)構(gòu)化、模塊化的程序設(shè)計方法和步驟,進(jìn)一步掌握數(shù)據(jù)結(jié)構(gòu)設(shè)計、模塊劃分的方法,掌握局部變量、全部變量、機構(gòu)體、共用體、數(shù)組、指針、文件等的數(shù)據(jù)的結(jié)構(gòu)使用方法,掌握圖形、聲音、隨機數(shù)等多種庫函數(shù)的使用方法,學(xué)習(xí)動畫、音樂、窗口、菜單、鍵盤等多項編程技術(shù),進(jìn)一步學(xué)會軟件測試、調(diào)試、組裝等軟件測試方法,為以后的學(xué)習(xí)和將來的實際軟件開發(fā)打下堅實的基礎(chǔ)。1.1.2 設(shè)計的任務(wù)和需要的知識點1. 生成設(shè)計主要完成的任務(wù)1) 通過編寫“貪吃蛇游戲”程序,掌握結(jié)構(gòu)化、模塊化程序設(shè)計的細(xì)想,培養(yǎng)解決實際問題的能力。2) 設(shè)計好數(shù)組元素與蛇、食物的對應(yīng)的關(guān)系。3) 隨即產(chǎn)生食物。4) 有分?jǐn)?shù)統(tǒng)計、排行榜、分?jǐn)?shù)存儲等的功能。5) 有同步播放的音樂、聲音效果。2. 需要掌握和應(yīng)用的知識點1) 數(shù)組的應(yīng)用2) 全局變量的使用3) 按鍵處理4) 機構(gòu)體的應(yīng)用5) 圖形、聲音和動畫的有關(guān)知識6) 隨機函數(shù)的使用7) 文件的基本操作8) 結(jié)構(gòu)化、模塊化的設(shè)計方法1.1.3 具體完成的設(shè)計內(nèi)容 主要完成的任務(wù):包含命令、全局變量的定義和宏定義、函數(shù)聲明等,主要模塊,動畫、音樂播放模塊,畫出游戲開始界面模塊,具體游戲過程模塊,游戲結(jié)束處理模塊。1.2需求分析 這類型的小游戲的市場價市相當(dāng)大的,它的玩法簡單,又有趣味性,市人們休閑的好游戲。這樣的游戲操作簡單,迎合了人們的需求。1.2.1 功能需求程序運行后顯示動畫、音樂,按鍵推出歡迎的界面,進(jìn)入游戲的界面后,左邊有一個矩形區(qū),為游戲區(qū)域,在矩形區(qū)中有食物和貪吃蛇,上方有統(tǒng)計分?jǐn)?shù)和關(guān)數(shù)的顯示區(qū)。 蛇在封閉的墻里用用矩形表示,圍墻里隨機的出現(xiàn)一個食物,通過按鍵盤的四個光標(biāo)鍵控制蛇向上、下、左、右四個方向移動,蛇頭撞到食物,食物就被吃掉,蛇本身長一節(jié),接著又出現(xiàn)了食物,等待蛇來吃。食物用另一種顏色的矩形表示,并且每次食物的位置是隨機出現(xiàn)的。游戲中要使蛇的長度盡可能的長,但是不能使蛇撞到四周的墻壁,且蛇的身體不能撞到一起,否則游戲結(jié)束。 游戲中每吃掉一個食物就會有積分,隨著分?jǐn)?shù)的增加可以進(jìn)入下一關(guān),及速度會加快。 游戲結(jié)束的時候,還能進(jìn)行排名,輸入自己的名字即可。1.2.2 操作方法1. 進(jìn)入游戲進(jìn)入游戲后,首先出現(xiàn)的是游戲的片頭,在這里 ,可以看到一個同步播放的動畫音樂和在屏幕不斷的變換字體等等,此時,可以按回車鍵跳出游戲的畫面。2. 游戲界面游戲界面的左上角為游戲的標(biāo)題和游戲的創(chuàng)作人,右上變是目前的游戲成績和關(guān)數(shù),界面中部是圍墻,圍墻中有一個正在爬行的蛇,還在某處有一個食物。現(xiàn)在就可以開始游戲操作了。3. 游戲操作在游戲中,游戲者可以用上、下、左、右控制蛇的行動,按鍵可以結(jié)束游戲。4. 游戲結(jié)束若打出高分可以進(jìn)入排行榜,此時就會提示輸入名字,并將畫出的排行榜界面,顯示出前5名的游戲者的姓名和分?jǐn)?shù)。1.3 總體設(shè)計 卻東貪吃蛇游戲體系機構(gòu),給出總體的模塊結(jié)構(gòu)圖,確定程序的主要函數(shù)及之間的調(diào)用關(guān)系,同時設(shè)計蛇與游戲者等等的具體的數(shù)據(jù)結(jié)構(gòu)。1.3.1 模塊劃分 總體的結(jié)構(gòu)模塊結(jié)構(gòu)圖如下所示。主控模板 退出結(jié)束處理游戲過程畫主界面圖形驅(qū)動動畫音樂排行榜寫入文件成績排行讀取記錄主控模板 主控模塊是由main函數(shù)實現(xiàn),主要用來依次調(diào)用各個下層的模塊,從而控制完成整個程序的功能。動畫音樂模塊 讀模塊用來同步播放下雪的動畫和簡單的音樂,并在屏幕的中間輸出顏色不斷變化的歡迎詞。畫主界面模塊 畫出一個封閉的墻,當(dāng)蛇貼這墻走的時候會擦掉部分的圍墻,使線變細(xì),圖形變得不好看,如果不是這種情況發(fā)生,可將線型寬度設(shè)置為1像素。游戲過程模塊 該模塊是整個程序的核心,它完成整個游戲過程,用函數(shù)來實現(xiàn),每次蛇移動的時候,從最后一節(jié)開始到第二節(jié),將前一節(jié)的坐標(biāo)賦給后一節(jié)的坐標(biāo),移動后把最后的一節(jié)用背景色覆蓋,然后蛇頭按方向鍵更改位置,要確保食物出現(xiàn)在10的倍數(shù)位置上,判斷蛇是否遲到食物的是蛇頭坐標(biāo)和食物坐標(biāo)是否相同。游戲結(jié)束處理模塊 游戲結(jié)束的時候,讀取出記錄、成績排行、寫入文件等模塊實現(xiàn)有關(guān)的處理功能。讀取記錄模塊 該模塊是由函數(shù)實現(xiàn)的,用來讀取排行榜的記錄,如果是首次讀取文件,將用另一個函數(shù),初始化記錄文件,設(shè)置多名選手,初始姓名為”null”。初始分?jǐn)?shù)為0.成績排序模塊 將最后的選手的成績加入成績排行榜中進(jìn)行排序。寫入文字模塊 該模塊是由函數(shù)來實現(xiàn)的,即將新的排行榜信息輸入文件中。排行榜模塊 該模塊是由函數(shù)實現(xiàn)的,主要功能是建立排行榜界面,輸出多名最高分的玩家的姓名個成績。退出 顯示出排行榜后,返回函數(shù),按任意鍵關(guān)閉圖形系統(tǒng),并退出程序。1.3.2 總體數(shù)據(jù)結(jié)構(gòu)設(shè)計1. 食物與蛇的數(shù)據(jù)結(jié)構(gòu) 表示食物與蛇的數(shù)據(jù)結(jié)構(gòu)設(shè)計為10*10個像素單位,用X和Y坐標(biāo)表示,則矩形塊用函數(shù)畫出來,由于每次出現(xiàn)一個食物,所以設(shè)定yes表示是否需要出現(xiàn)食物,yes=1表示沒有食物或者食物應(yīng)經(jīng)被吃掉,需要畫出食物。放置食物后,設(shè)置yes=0。蛇的一節(jié)身體為一個矩形塊,用坐標(biāo)來表示,由于在游戲的過程中蛇的身體不斷的增長,需要用數(shù)組來存放每節(jié)的坐標(biāo),利用1、2、3、4分別表示蛇的右、左、上、下的方向,life表示蛇的生命,life=0,表示蛇活著,life=1,表示蛇已經(jīng)死了,結(jié)束游戲。#define N 200struct Food int x; /*食物的橫坐標(biāo)*/ int y; /*食物的縱坐標(biāo)*/ int yes; /*判斷是否要出現(xiàn)食物的變量*/food; /*食物的結(jié)構(gòu)體*/struct Snake int xN; int yN; int node; /*蛇的節(jié)數(shù)*/ int direction; /*蛇移動方向*/ int life; /* 蛇的生命,0活著,1死亡*/snake;2. 排行榜中優(yōu)勝者的數(shù)據(jù)結(jié)構(gòu) 排行榜主要記錄優(yōu)勝者的姓名和成績,為了存放排行榜的信息,可以定義下面的結(jié)構(gòu)體類型,其中字符數(shù)組name成員存放優(yōu)勝者的姓名,整型變量score存放優(yōu)勝者的成績。 struct person char name20; int score; ; 其他全局變量的定義 struct person per5;int score=0;int gamespeed=400; /*控制蛇的移動速度的變量,初始值為400ms*/4. 符號常量的宏定義#define LEFT 0x4b00 /*左移方向鍵*/#define RIGHT 0x4d00 /*右移方向鍵*/#define DOWN 0x5000 /*下移方向鍵*/#define UP 0x4800 /*上移方向鍵*/#define ESC 0x011b /*Esc方向鍵*/#include FILENAME “C:person.dat” /*保存排行榜的文件全名*/1.4 詳細(xì)設(shè)計 畫出N-S圖和流程圖來表示出每一個部分的模塊功能。1.4.1主控模塊main函數(shù) 主函數(shù)是函數(shù)的數(shù)控模塊。首先初始化圖形系統(tǒng),然后然后調(diào)用DrawSnow函數(shù)播放動畫和音樂,接著調(diào)用Init函數(shù)初始化圖形系統(tǒng),之后調(diào)用DrawK函數(shù)畫出游戲開始畫面,再調(diào)用GamePlay函數(shù),即開始了游戲的具體過程,游戲結(jié)束后調(diào)用EndPlay函數(shù)進(jìn)行游戲結(jié)束處理:從文件中讀取記錄信息、排序、顯示排行榜信息,最后關(guān)閉圖形系統(tǒng),結(jié)束程序。主控模塊的算法流程圖如圖所示。其中帶有兩個豎線的矩形框表示對自定義函數(shù)的調(diào)用。結(jié) 束游戲結(jié)束處理關(guān)閉圖形系統(tǒng)游戲具體過程畫游戲開始界面初始化圖形系統(tǒng)播放動畫音樂初始化圖形系統(tǒng)開 始1.4.2繪制游戲開始界面DrawK函數(shù) 主界面就是一個封閉的圍墻,用兩個循環(huán)語句分別在水平方向和垂直方向輸出連續(xù)的寬度和高度均為10個像素單位的矩形小方塊,圍城封閉圖形表示為圍墻,為了醒目,設(shè)置為淡青色,用函數(shù)setlinestyle設(shè)置線型寬度為3個像素。設(shè)置3個像素的圍墻,蛇在貼墻走的時候,會擦掉部分圍墻線,使線變細(xì),圖形變得不好看,為了避免這種情況出現(xiàn),可將線型寬度設(shè)置為1個像素。最后,在界面的左上部輸出游戲程序的版本信息,在右上部輸出游戲成績(score)和關(guān)(level)的表頭。如下圖所示:開 始設(shè) 置 前 景 色設(shè)置線形為實線,3像素寬i=50i=600畫上邊圍墻的一個矩形框畫下邊為圍墻的一個矩形框i=i+10i=40iper4.score 畫出填充矩形界面輸出提示信息輸出空格建立輸入框 輸出不夠上排行榜的信息輸入游戲者的姓名成績賦值記錄按成績排序記錄寫入排行榜文件顯示排行榜返回 該模塊首先調(diào)用讀排行榜記錄文件函數(shù)讀取排行榜文件記錄,如果文件不存在,在函數(shù)中調(diào)用另一個函數(shù)來建立文件,然后再讀出記錄。 其次,判斷游戲者的成績是否可以上排行榜。如果可上榜,則畫出淺藍(lán)色矩形界面,在界面中輸入游戲者姓名,對成績進(jìn)行賦值,然后調(diào)用CompareScore函數(shù)對記錄排序,并調(diào)用WriteFiles函數(shù)將記錄寫入排行榜文件;如果不能上榜,則直接在游戲界面輸出不能上榜信息。 最后,調(diào)用pain_borad函數(shù)顯示排行榜信息。1.4.5顯示排行榜信息模塊pain_board函數(shù) 函數(shù)void pain_board完成排行榜的繪制流程,流程圖如圖所示。運行結(jié)果如圖所示。開 始讀排行榜記錄文件畫出矩形的標(biāo)題界面輸出標(biāo)題畫出排行榜界面輸出表頭的信息i=0輸出有關(guān)的信息返 回等 待 按 鍵i= i+ 11.5程序的調(diào)試與測試 調(diào)試與測試軟件的目標(biāo)就是發(fā)現(xiàn)并改正潛伏的錯誤。一個程序,必須經(jīng)過認(rèn)真的調(diào)試和測試,才能盡量減少錯誤、保證程序滿足功能、性能需求,達(dá)到最初的設(shè)計、使用要求,從而保證程序的開發(fā)質(zhì)量。 詳細(xì)設(shè)計完成后,用C語言根據(jù)各個模塊的算法來設(shè)計程序,每個模塊都設(shè)計成一個自定義函數(shù)。幾個模塊放在一個構(gòu)成一個源程序文件,或者一個模塊構(gòu)成一個源程序文件。源程序設(shè)計好后,輸入到計算機,并儲存到磁盤上;然后對每個源程序文件都進(jìn)行獨立編譯和調(diào)試;并針對不同的模塊設(shè)計測試用例進(jìn)行單元測試;最后,將幾個分別開發(fā)的模塊組裝到一起,形成一個完整的程序,進(jìn)行集成測試,從而發(fā)現(xiàn)并改正程序中存在的一些潛藏的錯誤,并使程序的容錯能力大大增強。調(diào)試與測試過程及結(jié)果如下所述。1.5.1動畫與音樂的同步播放 預(yù)期結(jié)果:(1)片頭在顯示動畫的同時播放音樂;(2)按任意鍵后進(jìn)入游戲主界面;(3)進(jìn)入游戲主界面后動畫音樂同時停止。 實際運行結(jié)果:滿足(1)和(2),進(jìn)入游戲后仍然播放片頭音樂。 錯誤分析:程序中使用循環(huán)播放動畫,并在其循環(huán)體中插入發(fā)聲函數(shù)以達(dá)到音樂和動畫的同步。由于在結(jié)束動畫時沒有關(guān)閉揚聲器,所以進(jìn)入游戲界面后仍然發(fā)聲。 修改:在動畫播放完后加一條“nosound();”語句將揚聲器關(guān)閉,問題得到解決。修改后程序運行的實際結(jié)果與預(yù)期效果一致。動畫音樂的界面如圖所示。1.5.2蛇的運行(1)蛇撞到墻預(yù)期效果:蛇運行時如果撞到墻壁,則游戲結(jié)束。實際運行效果:超出左右墻壁后程序結(jié)束,但超出上面墻壁后仍然運行如圖所示。錯誤分析:錯誤程序段在蛇運行的條件判斷語句中,它的判斷條件是:if(snake.x0595),即少了上、下倆個方向的判斷。修改如下:if(snake.x0595|snake.y0455)修改后的運行效果和預(yù)期的效果一致。(2)蛇頭撞到蛇身預(yù)期結(jié)果:當(dāng)蛇的頭部和蛇身相撞的時候,游戲應(yīng)當(dāng)結(jié)束。實際運行的效果:蛇頭撞到蛇身時,程序停止了。如圖所示。修改后的代碼為:for(i=3;isnake.node;i+) if(snake.xi=snake.x0&sanke.i=snake.y0) snake.life=1;break; 1.5.3 終止程序經(jīng)過對各個模塊的調(diào)試和單元測試并修改了錯誤以后,將各個模塊組裝成一個軟級系統(tǒng),并進(jìn)行集成測試。在集成的過程中發(fā)現(xiàn)了一些錯誤,比如全局變量重復(fù)定義、函數(shù)重復(fù)聲明等,分別進(jìn)行了改正。最后連續(xù)運行了5次,以便測試該游戲程序的功能、性能是否達(dá)到了預(yù)期的目標(biāo),并根據(jù)所使用的具體機器歲蛇的爬行速度進(jìn)行適當(dāng)?shù)恼{(diào)整。測試內(nèi)容包括蛇的運行、分?jǐn)?shù)、關(guān)數(shù)、排行榜及排序、文件存儲、音樂動畫等的功能,情況均正常。最后要求輸入游戲者的姓名來進(jìn)行排名。1.6 結(jié)論在我們的共同努力下,我們終于完成了貪吃蛇的游戲程序,該游戲程序?qū)崿F(xiàn)用了方向鍵控制蛇在圍墻內(nèi)的爬行、隨機產(chǎn)生食物、控制蛇吃掉食物并加分、控制游戲中闖關(guān)的數(shù)目和蛇的運行速度、實時顯示分?jǐn)?shù)和關(guān)數(shù)、結(jié)束時處理和顯示排行榜等功能。該游戲程序具有的界面友好、操作方便、控制準(zhǔn)確和容錯能力強等特點。但是這個貪吃蛇的游戲還有一些缺陷:1)進(jìn)入游戲后,到蛇的死亡,只能玩一次就退出游戲,應(yīng)該加入實現(xiàn)多次游戲的控制弄能。2)蛇的樣子不美觀,應(yīng)將蛇頭、蛇尾和蛇身進(jìn)一步美化,使其更像真實的蛇。3)當(dāng)分?jǐn)?shù)達(dá)到一定的分?jǐn)?shù)的時候,蛇的速度變得非常的快,一下子就撞到圍墻上了,應(yīng)適當(dāng)控制蛇的速度和關(guān)數(shù),以便使游戲更具有吸引力。1.7 結(jié)束語 通過貪吃蛇的游戲編程的練習(xí)思考數(shù)據(jù)結(jié)構(gòu)的使用,比如定義食物的坐標(biāo)來控制它的出現(xiàn)的位置,用函數(shù)來畫出矩形,用life來表示蛇的生命,用方向鍵來表示蛇的移動的房間等等,還有用數(shù)組來存放蛇身各節(jié)的坐標(biāo),這些都讓我們熟悉了對數(shù)組的操作,此外還熟悉了各種函數(shù)的調(diào)用。 在編程的時候我們遇到了很多的困難,這就需要我們多與別人交流。在編程的過程中,我們也發(fā)現(xiàn)了有良好的編程風(fēng)格是十分重要的,至少在時間效率上就體現(xiàn)了這一點,養(yǎng)成良好的習(xí)慣,代碼的縮進(jìn)編排,變量的命名規(guī)則要始終保持一致。這些都是提高我們編程能力的要點。 還有在編程中最能體現(xiàn)簡單的原則,簡單的方法更容易使人被理解,更容易實現(xiàn),也更容易維護(hù)。遇到問題是要優(yōu)先考慮解決的最簡單的方案,只有簡單的方案不能滿足要求的時候我們在考慮用復(fù)雜的方案。 在進(jìn)行課程設(shè)計的過程中我們學(xué)到了許多別的東西。首先,我們學(xué)會了合作,要以別人的眼光看看問題,也許這樣得到的會比各自得到的都要多;其次,我們學(xué)會了分工,分工是為了更好的合作,分工才能提高合作的效率;最后,我們學(xué)會了奮斗,我們相信,通過四年的學(xué)習(xí),我們一定能寫出更精彩的程序,將來會描繪出更精彩的人生。 在這里,我們要感謝我們課程設(shè)計的指導(dǎo)教師張鳳君老師,給了我們悉心的指導(dǎo),是老師經(jīng)過一學(xué)期為我們上課,讓我們了解了編程和怎么樣編程,在老師的教導(dǎo)下,我們通過自己和同學(xué)的合作,我們真正的掌握了怎么樣編程以及處理一些在編程的過程中出現(xiàn)的一些問題,我們真正的學(xué)會了這門課,在老師和同學(xué)的共同幫助下,我們完成了這項任務(wù)。1.8程序#include#include#include#include#include#include#include#include#define N 200#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b#define FILENAME c:person.datstruct person char name20; int score; ;struct person per5;struct Snow int x; int y; int speed; snow100;int snownum=0; int size;int change=10;int score=0;void *save;int i,key;int gamespeed=400;struct Food int x; int y; int yes;food;struct Snake int xN; int yN; int node; int direction; int life;snake;void DrawSnow();void ReadFiles();void WriteFiles(struct person *);void InitScoreFiles();void CompareScore(struct person);void EndPlay();void GameOver();void Pr() int s15=0,100,150,200,150,200,250,150,250,300,250,150,100,250,350; setcolor(change/10); setbkcolor(BLACK); settextstyle(0,0,4); outtextxy(20,200,GAME WORLD!); sound(schange/10);void DrawSnow() int i1,i2; int sx100; setlinestyle(SOLID_LINE,0,THICK_WIDTH); line (2,7,5,7); line (5,7,6,10); line (6,10,7,7); line (7,7,10,7); line (10,7,8,5); line (8,5,9,3); line (9,3,6,4.5); line (6,4.5,3,3); line (3,3,4,5); line (4,5,2,7); save=malloc(200); getimage(0,0,10,10,save); cleardevice(); randomize(); for(i1=0;i1100;i1+) sxi1=(i1+4)*10; setlinestyle(SOLID_LINE,0,THICK_WIDTH); line (10,1,10,10); for(i2=0;i2100;i2+) sxi2=(i2+4)*20; while(!kbhit() Pr(); if(snownum!=100) snowsnownum.speed=2+random(10); i1=random(50); snowsnownum.x=sxi1; snowsnownum.y=10-random(10); i2=random(20); snowsnownum.x=sxi2; snowsnownum.y=100-random(10); for(i=0;isnownum;i+) putimage(snowi.x,snowi.y,save,COPY_PUT); delay(50); cleardevice(); Pr(); if(snownum!=100) snownum+; setfillstyle(SOLID_FILL,4); for(i=0;i500)snowi.y=10-random(200); change+; if(change=140) change=10; nosound(); cleardevice();void Init(void) int gd=DETECT,gm; initgraph(&gd,&gm,D:tc3BGI); cleardevice();void DrawK(void) int i; setcolor(11); setbkcolor(2); setlinestyle(SOLID_LINE,0,THICK_WIDTH); for(i=50;i=600;i+=10)/*畫圍墻*/ rectangle(i,40,i+10,49); /*上邊*/ rectangle(i,451,i+10,460);/*下邊*/ for(i=40;i0;i-) snake.xi=snake.xi-1; snake.yi=snake.yi-1; 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; for(i=3;isnake.node;i+) if(snake.xi=snake.x0&snake.yi=snake.y0) snake.life=1; break; if(snake.x0595|snake.y0455) snake.life=1; if(snake.life=1) break; if(snake.x0=food.x&snake.y0=food.y) setcolor(0); rectangle(food.x,food.y,food.x+10,food.y-10); snake.node+; food.yes=1; score+=10; if(score%50=0) level+=1; gamespeed-=50; setcolor(57);for(i=0;isnake.node;i+) rectangle(snake.xi,snake.yi,snake.xi+10,snake.yi-10);delay(gamespeed);setcolor(0);rectangle(snake.xsnake.node-1,snake.ysnake.node-1, snake.xsnake.node-1+10,snake.ysnake.node-1-10); if(snake.life=1) break; key=bioskey(0); if(key=ESC) break; else if(key=UP&snake.direction!=4) snake.direction=3; else if(key=RIGHT&snake.direction!=2) snake.direction=1; else if(key=LEFT&snake.direction!=1) snake.direction=2; else if(key=DOWN&snake.direction!=3) snake.direction=4; void ReadFiles() FILE *fpread; if(fpread=fopen(FILENAME,ab+)=NULL) printf(cant open the file person.dat!); exit(0); if(fgetc(fpread)=EOF) InitScoreFiles(); rewind(fpread); fread(per,sizeof(struct person),5,fpread); fclose(fpread);void WriteFiles(struct person *tmp) FILE *fpwrite; if(fpwrite=fopen(FILENAME,wb+)=NULL) printf(cant open the file person.dat!);exit(0); fwrite(tmp,sizeof(struct person),5,fpwrite); fclose(fpwrite);void InitScoreFiles() int i;
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圣誕節(jié)襪子促銷活動方案
- 外賣運營湘菜活動方案
- 大型門店引流活動方案
- 垃圾漚肥活動方案
- 天使小羊活動方案
- 夏令營活動足球活動方案
- 大學(xué)協(xié)會辦活動方案
- 外出參賽活動方案
- 大學(xué)創(chuàng)新教育活動方案
- 地方立法調(diào)研活動方案
- 小學(xué)《科學(xué)》期末測評方案
- GB 18613-2006中小型三相異步電動機能效限定值及能效等級
- 2023年湘西市(中小學(xué)、幼兒園)教師招聘筆試題庫及答案解析
- 公司企業(yè)實習(xí)鑒定表格
- 鎖骨下動脈竊血綜合征 (2)PPT
- 大學(xué)畢業(yè)生離校退宿申請表模板
- 2022年人教八級下英語單詞英譯漢
- 大班社會《愛發(fā)脾氣的菲菲》課件
- 【海外華文文學(xué)】期末考試復(fù)習(xí)提綱
- 化工進(jìn)展稿件編輯、排版體例格式
- 美麗鄉(xiāng)村片區(qū)內(nèi)監(jiān)理規(guī)劃范本
評論
0/150
提交評論