2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  院 系: 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院</p><p>  班 級(jí):      </p><p>  組 長:    </p><p>  學(xué) 號(hào):     </p><p>  指導(dǎo)教師:      </p>

2、<p>  2017年 3 月 2日</p><p>  程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)任務(wù)書</p><p>  一、題目:貪吃蛇游戲系統(tǒng)</p><p><b>  二、設(shè)計(jì)要求</b></p><p>  (1)自己組成課程設(shè)計(jì)小組。</p><p> ?。?)查閱相關(guān)資料,自學(xué)具體課題中

3、涉及到的新知識(shí)。</p><p> ?。?)采用結(jié)構(gòu)化、模塊化程序設(shè)計(jì)方法設(shè)計(jì),功能要完善,界面美觀。</p><p> ?。?)所設(shè)計(jì)的系統(tǒng)應(yīng)有菜單、動(dòng)畫。</p><p> ?。?)按要求寫出課程設(shè)計(jì)報(bào)告,并于設(shè)計(jì)結(jié)束后1周內(nèi)提交。其主要內(nèi)容包括:封皮、課程設(shè)計(jì)任務(wù)書,指導(dǎo)教師評(píng)語與成績、目錄、概述、軟件需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、程序的調(diào)試與測試、總結(jié)、結(jié)束

4、語、程序清單(帶中文注釋)、參考文獻(xiàn)等。課程設(shè)計(jì)報(bào)告一律用A4紙打印,并嚴(yán)格按照課程設(shè)計(jì)指導(dǎo)書中規(guī)定的畢業(yè)設(shè)計(jì)報(bào)告的撰寫規(guī)范進(jìn)行排版裝訂。</p><p><b>  三、課程設(shè)計(jì)工作量</b></p><p>  由于是設(shè)計(jì)小組團(tuán)結(jié)協(xié)作完成設(shè)計(jì)任務(wù),一般每人的程序量在200行有效程序行以上,必須有創(chuàng)新(如自己編的簡單動(dòng)畫和音樂),不得抄襲。</p>&

5、lt;p>  四、課程設(shè)計(jì)工作計(jì)劃</p><p>  2017年2月25前,指導(dǎo)教師講課;</p><p>  2017年2月26日,設(shè)計(jì)小組進(jìn)行總體方案設(shè)計(jì)和任務(wù)分工;</p><p>  2017年2月27日,每人完成自己承擔(dān)的程序模塊并通過獨(dú)立編譯; </p><p>  2017年2月28日~3月1日,分模塊集體解決核心問題;

6、</p><p>  2017年3月2日,將各模塊集成為一個(gè)完整的系統(tǒng),并錄入足夠的數(shù)據(jù)進(jìn)行調(diào)試運(yùn)行,數(shù)據(jù)必須存儲(chǔ)到磁盤文件中,以備驗(yàn)收;</p><p>  2017年3月2日,撰寫課程設(shè)計(jì)報(bào)告。</p><p>  2017年3月3日,進(jìn)行課程設(shè)計(jì)驗(yàn)收。</p><p>  指導(dǎo)教師簽章: </p>

7、<p>  教研室主任簽章 </p><p>  程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì)指導(dǎo)教師評(píng)語與成績</p><p><b>  目錄</b></p><p>  一. 概 述1</p><p>  1.1研究的背景及意義1</p><p>  1.2課程設(shè)計(jì)

8、的目的1</p><p>  1.3課程設(shè)計(jì)的要求2</p><p>  1.4課程設(shè)計(jì)的任務(wù)和涉及的知識(shí)點(diǎn)2</p><p><b>  二.需求分析4</b></p><p><b>  2.1功能需求4</b></p><p>  2.2 操作方法(鍵盤操作)

9、4</p><p>  三. 總體方案設(shè)計(jì)5</p><p>  3.1模塊劃分:5</p><p>  3.2整體框圖:5</p><p>  四. 程序的調(diào)試與運(yùn)行結(jié)果說明6</p><p>  4.1圖形初始化失敗6</p><p><b>  4.2其他問題6&l

10、t;/b></p><p><b>  五.詳細(xì)設(shè)計(jì)7</b></p><p>  5.1主要模塊界面7</p><p>  5.2源程序代碼8</p><p><b>  六. 結(jié)論20</b></p><p><b>  七. 結(jié)束語21<

11、/b></p><p><b>  八.參考文獻(xiàn)22</b></p><p><b>  一. 概 述</b></p><p>  本課程設(shè)計(jì)以軟件工程方法為指導(dǎo),采用了結(jié)構(gòu)化,模塊化得課程設(shè)計(jì)方法,以C++技術(shù)為基礎(chǔ),使用vc為主要工具,總體設(shè)計(jì),詳細(xì)設(shè)計(jì),最終完成系統(tǒng)的實(shí)現(xiàn)與測試。</p>&

12、lt;p>  1.1研究的背景及意義</p><p>  隨著社會(huì)的發(fā)展,人們交友范圍越加廣泛,越來越多的人迫切的需要一種可以存儲(chǔ)聯(lián)系人信息的工具。因此設(shè)計(jì)一款隨時(shí)查詢聯(lián)系人信息的軟件成了很多人以及商家們的需要。</p><p>  此次課程設(shè)計(jì)完成的通訊錄管理系統(tǒng),正是為了滿足上訴需求設(shè)計(jì)出來的,希望能給人們帶來便利。</p><p>  C++是國際上廣泛

13、流行的,很有發(fā)展前途的計(jì)算機(jī)高級(jí)語言。他適合作為系統(tǒng)秒速語言,既可用來編寫系統(tǒng)軟件,也可以用來編寫應(yīng)用軟件。</p><p>  對(duì)于計(jì)算機(jī)專業(yè)和相關(guān)學(xué)科的學(xué)生來說,“課程設(shè)計(jì)基礎(chǔ)”是一門非常重要的專業(yè)基礎(chǔ)課程,對(duì)其學(xué)習(xí)好壞,直接關(guān)系到后續(xù)課程的學(xué)習(xí)效果。</p><p>  C++是一種面向過程的高級(jí)語言。要學(xué)好C++,不但要掌握C++的語法,更重要的是要掌握使用C++進(jìn)行結(jié)構(gòu)化、模塊化

14、程序設(shè)計(jì)的方法。有了較好的C++基礎(chǔ),就可以進(jìn)一步學(xué)好面向?qū)ο蟮某绦蛟O(shè)計(jì)語言和可視的編程語言如VC++6.0、C#等。對(duì)于面向?qū)ο蟮某绦蛟O(shè)計(jì),當(dāng)設(shè)計(jì)到具體實(shí)現(xiàn)部分的時(shí)候,也就是編寫一個(gè)對(duì)象中具體的方法(即外部服務(wù)函數(shù))時(shí),必然要使用結(jié)構(gòu)化得程序來實(shí)現(xiàn)。可見,結(jié)構(gòu)化、模塊化程序設(shè)計(jì)的方法是必然要學(xué)習(xí)的,而C++是結(jié)構(gòu)化程序設(shè)計(jì)思想中比較經(jīng)典的語言,不可不學(xué)好。學(xué)習(xí)結(jié)構(gòu)化、模塊化程序設(shè)計(jì)的思想和方法,可以掌握設(shè)計(jì)解決一個(gè)問題的過程,即如何對(duì)

15、問題進(jìn)行分解,劃分成各個(gè)功能模塊,每個(gè)模塊如何分步驟實(shí)施,通過什么樣的一個(gè)流程圖控制可以實(shí)現(xiàn)該模塊的功能,這也是學(xué)習(xí)這門課程的中心內(nèi)容。</p><p>  1.2課程設(shè)計(jì)的目的</p><p>  使學(xué)生更深入地理解和掌握該課程中的有關(guān)基本概念,程序設(shè)計(jì)的思想、技術(shù)和方法。</p><p>  培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí)獨(dú)立完成課題的能力。</p>&

16、lt;p>  培養(yǎng)學(xué)生勇于探索、嚴(yán)謹(jǐn)推理、實(shí)事求是、有過必改,用實(shí)踐來檢驗(yàn)理論,全方位考慮問題等科學(xué)人員應(yīng)具有的須素質(zhì)。</p><p>  提高學(xué)生對(duì)工作認(rèn)真負(fù)責(zé)、一絲不茍,對(duì)同學(xué)友愛團(tuán)結(jié),協(xié)作攻關(guān)的基本素質(zhì)。</p><p>  培養(yǎng)學(xué)生從資料文獻(xiàn)、科學(xué)實(shí)驗(yàn)中獲得新知識(shí)的能力,提高學(xué)生從別人經(jīng)驗(yàn)中找到解決問題的新途徑的悟性,初步培養(yǎng)工程意識(shí)和創(chuàng)新能力。</p>&l

17、t;p>  對(duì)學(xué)生掌握知識(shí)的深度、運(yùn)用理論去處理問題的能力、實(shí)驗(yàn)?zāi)芰?、課程設(shè)計(jì)能力、書面及口頭表達(dá)能力進(jìn)行考核。</p><p>  1.3課程設(shè)計(jì)的要求</p><p>  為實(shí)現(xiàn)上述目的,提出以下具體要求:</p><p>  以學(xué)生自由組織成課程設(shè)計(jì)游戲開發(fā)小組,可由指導(dǎo)教師確定每組的人數(shù),建議每組為3個(gè)人左右,并選1人擔(dān)任組長.指導(dǎo)教師可跟據(jù)各個(gè)開發(fā)小

18、組的試驗(yàn)情況進(jìn)行必要的調(diào)整</p><p>  每組選擇課程設(shè)計(jì)中的一個(gè)題目,即開發(fā)一個(gè)所選課題的"軟件系統(tǒng)",每組獨(dú)立完成。</p><p>  該系統(tǒng)要有主菜單,動(dòng)畫與音樂,且游戲功能上盡可能模擬操作系統(tǒng)中的貪吃蛇游戲,系統(tǒng)界面盡量美觀。</p><p>  進(jìn)一步掌握C++集成開發(fā)環(huán)境</p><p>  熟練掌握C

19、++的數(shù)據(jù)類型,三種基本結(jié)構(gòu),模塊化設(shè)計(jì),指針,結(jié)構(gòu)體,文件,鏈表等知識(shí)點(diǎn)。</p><p>  叢書或互聯(lián)網(wǎng)上查閱相關(guān)資料,自學(xué)具體課題中涉及到的知識(shí)。</p><p>  采用結(jié)構(gòu)化,模塊化程序設(shè)計(jì)方法進(jìn)行設(shè)計(jì),功能要完善,界面要美觀,應(yīng)具有一定創(chuàng)新。</p><p>  8軟件開發(fā)小組組長帶領(lǐng)本小組成員團(tuán)結(jié)協(xié)作,共同完成課題的設(shè)計(jì)任務(wù)。要求開發(fā)小組中每個(gè)組員都

20、有自己獨(dú)立的設(shè)計(jì)的若干模塊,每個(gè)人設(shè)計(jì)的有效源代碼應(yīng)在200行以上,同時(shí)要讀懂其他組員完成的內(nèi)容。</p><p>  1.4課程設(shè)計(jì)的任務(wù)和涉及的知識(shí)點(diǎn)</p><p>  1.課程設(shè)計(jì)的主要完成任務(wù)</p><p> ?。?)通過編寫“貪吃蛇游戲”程序,掌握結(jié)構(gòu)化、模塊化程序設(shè)計(jì)的思想,培養(yǎng)解決實(shí)際問題的能力。</p><p> ?。?)

21、設(shè)計(jì)數(shù)組元素與蛇、食物的對(duì)應(yīng)關(guān)系。</p><p>  (3)隨機(jī)產(chǎn)生食物。</p><p> ?。?)有分?jǐn)?shù)統(tǒng)計(jì)、排行榜、分?jǐn)?shù)存儲(chǔ)等功能。</p><p> ?。?)有同步播放的動(dòng)畫、聲音效果。</p><p>  2. 課程設(shè)計(jì)中涉及的知識(shí)點(diǎn)</p><p><b> ?。?)數(shù)組的應(yīng)用。</b&g

22、t;</p><p> ?。?)全局變量的應(yīng)用。</p><p><b> ?。?)按鍵處理。</b></p><p> ?。?)結(jié)構(gòu)體的應(yīng)用。</p><p> ?。?)圖形 、音樂和動(dòng)畫的有關(guān)知識(shí)。</p><p> ?。?)隨機(jī)函數(shù)的使用。</p><p> ?。?)

23、文件的基本操作。</p><p>  (8)結(jié)構(gòu)化 、模塊化的設(shè)計(jì)方法。</p><p><b>  二.需求分析</b></p><p>  貪吃蛇是大眾化的游戲,游戲簡單容易上手,但確能給玩家放松心情,身心得到娛樂,從而能更好地投入到學(xué)習(xí)或工作中?,F(xiàn)代人,無亂是工作的,或是學(xué)生都面臨的巨大壓力,而這一款簡單的游戲能讓每個(gè)人隨時(shí)隨地上手,令不

24、少玩家對(duì)它愛不釋手。</p><p>  對(duì)于繁忙的現(xiàn)代人,玩大型游戲是浪費(fèi)時(shí)間,然而這樣的小游戲,不僅可以隨時(shí)隨地娛樂,對(duì)硬件要求很低,可以不夸張地說,只要你有數(shù)碼產(chǎn)品,都可以玩。而且在為人們節(jié)省不少寶貴的時(shí)間的同時(shí),達(dá)到了身心娛樂的目的。</p><p><b>  2.1功能需求 </b></p><p>  進(jìn)入游戲前,可以觀看選擇觀看

25、小組成員的動(dòng)畫。按任意鍵進(jìn)入游戲。蛇在一個(gè)封閉的墻內(nèi)移動(dòng),遇到食物后,蛇身加長,分?jǐn)?shù)上升。要是碰到墻壁或者是蛇自己,即游戲結(jié)束。當(dāng)分?jǐn)?shù)上升到一定,蛇速度加快。</p><p>  2.2 操作方法(鍵盤操作)</p><p> ?。?)進(jìn)入游戲:回車鍵。</p><p>  (2)游戲操作:在游戲中,通過鍵盤上下左右控制蛇的方向。</p><p&

26、gt;<b>  三. 總體方案設(shè)計(jì)</b></p><p>  特點(diǎn):為方便操作,加入了口令登錄、動(dòng)畫音樂、數(shù)據(jù)維護(hù)和系統(tǒng)幫助。</p><p>  算法的整體思路:隨機(jī)產(chǎn)生食物,按相應(yīng)的鍵執(zhí)行相應(yīng)的功能。</p><p><b>  3.1模塊劃分:</b></p><p><b> 

27、?。ㄒ唬┯螒騽?dòng)畫 </b></p><p><b>  (二)游戲菜單: </b></p><p><b> ?。ㄈ┯螒蜻^程: </b></p><p><b>  (四)退出: </b></p><p><b>  3.2整體框圖:</b>

28、</p><p>  圖1 軟件總體模塊結(jié)構(gòu)圖</p><p>  四. 程序的調(diào)試與運(yùn)行結(jié)果說明</p><p>  4.1圖形初始化失敗</p><p>  預(yù)期效果:進(jìn)入動(dòng)畫能觀看所畫圖形。</p><p>  實(shí)際運(yùn)行效果:編譯成功,但無法進(jìn)入動(dòng)畫。</p><p>  圖4 圖形初始化

29、失敗</p><p>  錯(cuò)誤分析:未指定顯卡驅(qū)動(dòng)位置。</p><p>  修改:將顯卡驅(qū)動(dòng)文件Egavga.bgi復(fù)制到動(dòng)畫源程序目錄下。</p><p>  修改后程序運(yùn)行效果與預(yù)期效果一致。如圖5所示。</p><p><b>  圖5 動(dòng)畫</b></p><p><b>  

30、4.2其他問題</b></p><p>  比如全局變量重命名、函數(shù)重復(fù)聲明或未聲明和主函數(shù)重定義等問題。</p><p><b>  如:</b></p><p>  圖10 重定義主函數(shù)main</p><p><b>  五.詳細(xì)設(shè)計(jì)</b></p><p>

31、;<b>  5.1主要模塊界面</b></p><p>  5.1.1 游戲動(dòng)畫</p><p>  5.1.2 菜單界面</p><p><b>  游戲界面</b></p><p><b>  輔助界面</b></p><p><b>

32、  游戲結(jié)束界面</b></p><p><b>  5.2源程序代碼</b></p><p>  #include<stdio.h></p><p>  #include<windows.h></p><p>  #include<time.h></p>&

33、lt;p>  #include<stdlib.h></p><p>  #include<conio.h></p><p>  void gotoxy(int x,int y);//移動(dòng)</p><p>  void Loc(int, int);//定位函數(shù)</p><p>  void Beginning();

34、//游戲開始</p><p>  void CreatMap();//創(chuàng)建地圖</p><p>  void GameInit();//初始化</p><p>  void GameStart();//游戲開始</p><p>  void DeadOrNo();//判斷是否和自身相撞</p><p>  char D

35、eadOrNoByPos(int, int);//蛇的生命</p><p>  void JudgeFood();//判斷食物是否和自身</p><p>  void MakeFood();//制造食物</p><p>  void ThroWall();//是否穿墻</p><p>  void SnakeMove();//蛇的移動(dòng)<

36、/p><p>  void MoveNo(struct Body *p_body,struct Body *nofood);//沒有食物時(shí)蛇的移動(dòng)</p><p>  void MoveYes(struct Body *yesfood);//有食物時(shí)蛇的移動(dòng)</p><p>  void DrawShank(char);//畫蛇</p><p>

37、  void Ending();//游戲結(jié)束</p><p>  void HiSleep(int);</p><p>  void snack()</p><p><b>  {</b></p><p>  printf(" $$$$$$\n");</p&g

38、t;<p>  printf(" $$$__$$_$$ $\n");</p><p>  printf(" $____$$___$ $ $ $\n");</p><p>  printf(" $$$$________$ $ $ $\n"

39、;);</p><p>  printf(" $$$$$$___$__$ $ $ $\n");</p><p>  printf(" $ $ $$$___$_$ $ $ $ $\n");</p><p>  printf("

40、 $ $ $ $ $$___$_$ $ $ $ $ $\n");</p><p>  printf(" $ $ $ $ $$___$$$ $ $ $ $ $\n");</p><p>  printf(" $ $ $ $$$_$___$ $ $ $ $ $\n");</

41、p><p>  printf(" $ $ $ $ $ $$__$_$$ $ $ $ $ $\n");</p><p>  printf(" $ $ $ $ $$$___$$ $ $ $ $ $ $\n");</p><p>  printf("

42、 $ $ $ $ $ $$__$_$$ $ $ $ $ $\n");</p><p>  printf(" $ $ $ $$$___$_$ $ $ $ $ $\n");</p><p>  printf(" $ $ $$$___$_$$ $ $ $ $\n");</p&

43、gt;<p>  printf(" $ $$____$_$ $ $ $ $\n");</p><p>  printf(" $____$_$$ $ $\n");</p><p>  printf(" $$___$__$$\n"

44、);</p><p>  printf(" $$______$$ 按回車進(jìn)入游戲\n");</p><p>  printf(" $______$$_$\n");</p><p>  printf(" $$_____$$_

45、$$$______$$$$$$$$$$$\n");</p><p>  printf(" $______$___$$$$$$$$___________$\n");</p><p>  printf(" $$$$$_$$___$_$$____$$$$$$____$$$______$\n");</p&

46、gt;<p>  printf(" $$$$____$$$$_$_$_$$$$$$$$____$$$$$$$$$$$__$\n");</p><p>  printf(" $$____$____$$___$_$$______$$$$__________$$$$$\n");</p><p>  printf(" $____

47、_$______$_$___$$_$$$$$____________$_____$$$\n");</p><p>  printf("$______$$$$$$$$____$_$$$_________________$$_____$$\n");</p><p>  printf("$______$$_____$_$____$$__________$$

48、$$$$$$$$______$\n");</p><p>  printf("$$_______$$$$_$$_$$_$_$$_____$$$$$$_______$______$\n");</p><p>  printf(" $$____________$$____$_$$$$$$$__________$$_______$\n");<

49、;/p><p>  printf(" $$___________$_____$__$$$_______$$$$$$_______$$\n");</p><p>  printf(" $$$$$_ ___$$$________$$$$$$$$$___________$$\n");</p><p>  printf(&quo

50、t; $$$$$$$$$$_$$$________________________$$$\n");</p><p>  printf(" $$$$__________________$$$$\n");</p><p>  printf(" $$$$$$$$

51、$$$$$$$$$$$\n");</p><p>  system("color b"); </p><p><b>  }</b></p><p>  struct Body</p><p><b>  {</b></p><p>  sh

52、ort x,y;</p><p>  struct Body *next;//指向下一個(gè)蛇身的指針</p><p><b>  }; </b></p><p>  int length=sizeof(struct Body);//Body結(jié)構(gòu)體所占字節(jié)數(shù)</p><p>  int Delay=500;</p>

53、;<p>  short X=0,Y=0;</p><p>  short food_x,food_y,food=0;</p><p>  short life=1;</p><p>  short score1=0;</p><p>  char movdir='R';</p><p>

54、  short lockdelay=20;</p><p>  struct node</p><p><b>  {</b></p><p><b>  int x,y;</b></p><p>  struct node *next;</p><p><b> 

55、 };</b></p><p>  struct node *p;</p><p>  struct Body *head;</p><p><b>  int i,j;</b></p><p>  void Loc(int x, int y)</p><p><b>  {

56、</b></p><p>  COORD pos = {x,y}; //調(diào)用windows庫里的函數(shù) 坐標(biāo)轉(zhuǎn)換 </p><p>  HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//獲得輸出設(shè)備的句柄 </p><p>  SetConsoleCursorPosition(hOut, pos);&l

57、t;/p><p><b>  }</b></p><p>  void gotoxy(int x, int y) </p><p><b>  {</b></p><p>  COORD loc = {x, y};</p><p>  HANDLE hOut = GetStdH

58、andle(STD_OUTPUT_HANDLE);//獲得輸出設(shè)備的句柄</p><p>  SetConsoleCursorPosition(hOut, loc); //光標(biāo)定位</p><p><b>  }</b></p><p>  void init() //游戲開始時(shí)蛇的位置 </p><p><b

59、>  {</b></p><p>  gotoxy(9,2);</p><p>  p=(struct node*)malloc(sizeof(struct node));//將P指向一個(gè)新分配的struct node型指針地址 是鏈表()</p><p><b>  p->x=9;</b></p><

60、;p><b>  p->y=2;</b></p><p><b>  }</b></p><p>  void Beginning()//初始</p><p><b>  {</b></p><p>  void gotoxy(int x, int y);</

61、p><p>  int initz=30,initx=14,inity=8,init=2;//下面printf字開始右移的初始位置,init代表左右方向</p><p>  char ch1='\0';</p><p>  gotoxy(38,18);</p><p>  puts("王慧"); &

62、lt;/p><p>  while(ch1!=13)</p><p><b>  {</b></p><p>  gotoxy(initz,inity-1);</p><p>  printf(" 經(jīng)典小游戲 ");</p><p>  gotoxy(initx,inity);&

63、lt;/p><p>  printf(" 超級(jí)宇宙無敵無邊框貪吃蛇 按ENTER鍵 開始游戲 ");</p><p>  Sleep(Delay);</p><p>  gotoxy(initx,inity);</p><p>  printf("

64、 ");</p><p>  if(init>0&&initx>=30||initx==2&&init<0)</p><p><b>  init*=-1;</b></p><p>  initx+=init;</p><p>  initz+=init;

65、</p><p>  if(kbhit()) //有鍵盤輸入時(shí)接受若是13(ENTER)鍵結(jié)束循環(huán)</p><p>  ch1=getch();</p><p><b>  }</b></p><p>  system("cls");</p><p><b>  

66、}</b></p><p>  void CreatMap()//創(chuàng)建外圍</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for(i=0;i<=100;i+=2)</p><p><b&g

67、t;  {</b></p><p><b>  Loc(i,0);</b></p><p>  printf("□");</p><p>  Loc(i,28);</p><p>  printf("□");</p><p><b> 

68、 }</b></p><p>  for(i=0;i<=28;i++)</p><p><b>  {</b></p><p><b>  Loc(0,i);</b></p><p>  printf("□");</p><p>  Lo

69、c(70,i);</p><p>  printf("□");</p><p>  Loc(100,i);</p><p>  printf("□");</p><p><b>  }</b></p><p><b>  }</b>&l

70、t;/p><p>  void GameInit() //開始游戲時(shí)</p><p><b>  {</b></p><p>  struct Body *p_cur,*p_new;//定義四個(gè)蛇身指針</p><p><b>  int xh;</b></p><p>  Cr

71、eatMap();</p><p>  head=(struct Body *)malloc(length);</p><p>  head->x=12;head->y=2;</p><p>  p_cur=head;</p><p>  p_cur->next=NULL;</p><p>  for

72、(xh=0;xh<3;xh++)</p><p><b>  {</b></p><p>  p_new=(struct Body *)malloc(length);</p><p>  p_cur->next=p_new;</p><p>  p_new->x=p_cur->x-2;</p

73、><p>  p_new->y=p_cur->y;</p><p>  p_cur=p_new;</p><p>  p_cur->next=NULL;</p><p><b>  }</b></p><p>  Delay=500;</p><p><

74、b>  food=0;</b></p><p><b>  life=1;</b></p><p><b>  score1=0;</b></p><p>  movdir='R'; </p><p>  lockdelay=20;</p><p

75、>  DrawShank(0);</p><p>  Loc(80,3);</p><p>  puts("每吃一個(gè)");</p><p>  Loc(80,4);</p><p>  puts("蛇會(huì)加速");</p><p>  Loc(78,13);</p>

76、;<p>  puts("控制鍵: ↑←↓→");</p><p><b>  }</b></p><p>  void GameStart()//游戲開始</p><p><b>  {</b></p><p><b>  while(1)</b&

77、gt;</p><p><b>  {</b></p><p>  DeadOrNo();</p><p>  if(life==0)</p><p><b>  break;</b></p><p>  MakeFood();</p><p>  i

78、f(GetAsyncKeyState(VK_UP)&&movdir!='D'&&movdir!='U')</p><p>  movdir='U';</p><p>  else if(GetAsyncKeyState(VK_DOWN)&&movdir!='U'&&

79、;movdir!='D')</p><p>  movdir='D';</p><p>  else if(GetAsyncKeyState(VK_LEFT)&&movdir!='R'&&movdir!='L')</p><p>  movdir='L';

80、</p><p>  else if(GetAsyncKeyState(VK_RIGHT)&&movdir!='L'&&movdir!='R')</p><p>  movdir='R';</p><p>  SnakeMove();</p><p>  Loc(

81、80,7);</p><p>  printf("1得分: %3d",score1);</p><p>  Loc(80,10);</p><p>  printf("速度: %5.1f",1000.0/(float)Delay);</p><p>  HiSleep(Delay);</p>

82、<p><b>  }</b></p><p><b>  }</b></p><p>  void DeadOrNo()//判斷是否死亡</p><p><b>  {</b></p><p>  struct Body *p_body=head;</p&

83、gt;<p>  while(p_body->next!=NULL)//定位到最后一個(gè)蛇身</p><p><b>  {</b></p><p>  p_body=p_body->next;</p><p>  if(p_body->x==head->x&&p_body->y==he

84、ad->y)</p><p><b>  life=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  char DeadOrNoByPos(int x, int y)//判斷生命</p><

85、;p><b>  {</b></p><p>  struct Body *p_body=head;</p><p>  while(p_body->next!=NULL)//定位到最后一個(gè)蛇身</p><p><b>  {</b></p><p>  if(p_body->x=

86、=x&&p_body->y==y)//如果有任何一個(gè)蛇身坐標(biāo)與蛇頭重合,蛇即死亡</p><p><b>  return 1;</b></p><p>  p_body=p_body->next; </p><p><b>  }</b></p><p><b&

87、gt;  return 0;</b></p><p><b>  }</b></p><p>  void JudgeFood()//判斷食物是否與蛇身重疊</p><p><b>  {</b></p><p>  struct Body *p_body=head;</p>

88、<p>  while(p_body!=NULL)</p><p><b>  {</b></p><p>  if(food_x==p_body->x&&food_y==p_body->y)</p><p><b>  {</b></p><p><

89、b>  food=0;</b></p><p>  Loc(62,8);</p><p>  MakeFood();</p><p><b>  }</b></p><p>  p_body=p_body->next;</p><p><b>  }</b&

90、gt;</p><p><b>  }</b></p><p>  void MakeFood()//制造食物</p><p><b>  {</b></p><p>  if(food==0)</p><p><b>  {</b></p>

91、<p>  food_x=rand()%53+2;</p><p>  food_y=rand()%23+1;</p><p>  if(food_x%2==1)</p><p><b>  food_x++;</b></p><p><b>  food=1;</b></p&g

92、t;<p>  JudgeFood();</p><p><b>  }</b></p><p><b>  }</b></p><p>  void ThroWall(struct Body *p)//是否穿墻</p><p><b>  {</b></p

93、><p>  if(p->x==69)</p><p><b>  life=0;</b></p><p>  if(p->x==1)</p><p><b>  life=0;</b></p><p>  if(p->y==1)</p><

94、p><b>  life=0;</b></p><p>  if(p->y==27)</p><p><b>  life=0;</b></p><p><b>  }</b></p><p>  void SnakeMove()//蛇的移動(dòng)</p>

95、<p><b>  {</b></p><p>  struct Body *p_body;</p><p>  struct Body *nofood;</p><p>  struct Body *yesfood;</p><p>  struct Body tmppos;</p><p

96、>  switch(movdir)</p><p><b>  {</b></p><p>  case 'U':X=0;Y=-1;break;</p><p>  case 'D':X=0;Y=1;break;</p><p>  case 'L':X=-2;Y=0

97、;break;</p><p>  case 'R':X=2;Y=0;break;</p><p><b>  }</b></p><p>  tmppos=*head;</p><p>  tmppos.x+=X;</p><p>  tmppos.y+=Y;</p>

98、<p>  ThroWall(&tmppos);</p><p>  if(DeadOrNoByPos(tmppos.x,tmppos.y))</p><p><b>  {</b></p><p>  if(lockdelay<=0)</p><p><b>  life=0;&l

99、t;/b></p><p><b>  else</b></p><p>  lockdelay--;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b>

100、;</p><p>  lockdelay=(1000/Delay)+1;</p><p>  if(tmppos.x==food_x&&tmppos.y==food_y)</p><p>  MoveYes(yesfood);</p><p><b>  else</b></p><

101、p><b>  {</b></p><p>  nofood=(struct Body *)malloc(length);</p><p>  MoveNo(p_body,nofood);</p><p><b>  }</b></p><p><b>  }</b>&l

102、t;/p><p>  DrawShank(1);</p><p>  Loc(food_x,food_y);</p><p>  printf("★");</p><p><b>  }</b></p><p>  void MoveNo(struct Body *p_body,s

103、truct Body *nofood)//沒有吃到食物</p><p><b>  {</b></p><p>  nofood->x=head->x+X;</p><p>  nofood->y=head->y+Y;</p><p>  ThroWall(nofood);</p>

104、<p>  nofood->next=head;</p><p>  head=nofood;</p><p>  p_body=head;</p><p>  while((p_body->next)->next!=NULL)</p><p>  p_body=p_body->next;</p>

105、<p>  Loc((p_body->next)->x,(p_body->next)->y);</p><p>  printf(" ");</p><p>  free(p_body->next);</p><p>  p_body->next=NULL;</p><p&g

106、t;<b>  }</b></p><p>  void MoveYes(struct Body *yesfood)//吃到食物</p><p><b>  { </b></p><p>  yesfood=(struct Body*)malloc(length);</p><p>  yesfo

107、od->x=food_x;</p><p>  yesfood->y=food_y;</p><p>  yesfood->next=head;</p><p>  head=yesfood;</p><p><b>  food=0;</b></p><p>  score1+

108、=1;</p><p>  MakeFood();</p><p>  if(Delay>200&&Delay<=500)Delay-=50;</p><p>  else if(Delay>140&&Delay<=200)Delay-=5;</p><p>  else if(Dela

109、y>100&&Delay<=140)Delay-=4;</p><p>  else if(Delay>70&&Delay<=100)Delay-=3;</p><p>  else if(Delay>50&&Delay<=70)Delay-=2;</p><p>  else if

110、(Delay>40&&Delay<=50)Delay-=1;</p><p>  else if(score1<100)Delay=Delay;</p><p>  else if(score1<150)Delay=30;</p><p>  else if(score1<200)Delay=20;</p>

111、<p>  else Delay=5;</p><p><b>  }</b></p><p>  void DrawShank(char simple) //畫蛇 </p><p><b>  {</b></p><p>  int drawcount=0;</p>&

112、lt;p>  struct Body *p_body=head;</p><p>  while(p_body!=NULL)</p><p><b>  {</b></p><p>  Loc(p_body->x,p_body->y);</p><p>  if(p_body==head)</p&

113、gt;<p>  printf("□");</p><p><b>  else</b></p><p>  printf("■");</p><p>  drawcount++;</p><p>  p_body=p_body->next;</p>

114、<p>  if(simple&&drawcount==2)</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void Ending()//結(jié)束游

115、戲</p><p><b>  {</b></p><p>  int num=0;</p><p>  char str[]={"Thank you for playing the snaKe game! "};</p><p>  system("cls");</p>

116、;<p>  Loc(32,9);printf("Game Over!!");</p><p>  while(str[num]!='\0')</p><p><b>  {</b></p><p>  Loc(20+num,11);</p><p>  putchar(

117、str[num]);</p><p><b>  num++;</b></p><p><b>  }</b></p><p>  Loc(28,13);</p><p>  puts("按ESC鍵退出");</p><p>  Loc(30,15);&l

118、t;/p><p>  puts("按任意鍵重來...");</p><p><b>  }</b></p><p>  void HiSleep(int ms)</p><p><b>  {</b></p><p><b>  int x;<

119、/b></p><p>  x=clock();</p><p>  while(clock()-x<ms); </p><p><b>  Sleep(0);</b></p><p><b>  }</b></p><p>  int main()</p&

120、gt;<p><b>  { </b></p><p>  system("color 0c");</p><p>  srand((unsigned int)time(NULL));</p><p><b>  again:;</b></p><p>  whil

121、e(!kbhit())</p><p><b>  {</b></p><p><b>  snack();</b></p><p>  system("cls");</p><p>  Sleep(300);</p><p><b>  }&l

122、t;/b></p><p><b>  getch();</b></p><p>  Beginning();</p><p>  GameInit();</p><p>  GameStart();</p><p><b>  Ending();</b></p&

123、gt;<p><b>  while(1)</b></p><p><b>  {</b></p><p>  if(kbhit())</p><p><b>  {</b></p><p><b>  getch();</b></p&

124、gt;<p><b>  }</b></p><p><b>  else</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  if(getch()!=27)</p>

125、;<p><b>  {</b></p><p>  goto again;</p><p><b>  }</b></p><p>  Loc(25,24);</p><p><b>  return 0;</b></p><p><

126、;b>  }</b></p><p><b>  六. 結(jié)論</b></p><p>  本程序基本達(dá)到了任務(wù)書上的要求。并且在游戲中增加生命值和選擇難度。</p><p>  程序特點(diǎn):游戲界面美觀,在要求的基礎(chǔ)上做了創(chuàng)新。</p><p>  困難:由于剛開始學(xué)習(xí)C++對(duì)一些知識(shí)理解的還不透徹,還不

127、能應(yīng)用自如,特別在有些地方編程時(shí)需要用到一些課本上沒接觸過的函數(shù),很難編出我們需要的正確程序,而且不能將各種不同的程序相互聯(lián)系在一起。編譯連接時(shí),時(shí)常出現(xiàn)重定義、圖形初始化失敗等問題。</p><p>  解決途徑:查閱指導(dǎo)書關(guān)于C庫函數(shù)的使用,同學(xué)間的交流,網(wǎng)上查詢,以及所學(xué)的關(guān)于函數(shù)知識(shí)和編程,參照以上的資料,依依解決問題,最終,在多次程序調(diào)試中,完成了此次課程設(shè)計(jì)。</p><p>

128、  不足之處:未能準(zhǔn)確畫出蛇頭、蛇身、蛇尾和食物,只用了一些簡單的心形和方塊代替了蛇與食物,登錄界面不美觀,以及未添加游戲背景音樂(BGM)和音效。</p><p>  設(shè)想:畫出惟妙惟肖的蛇與食物,美化登錄界面,添加BGM和音效。</p><p><b>  七. 結(jié)束語</b></p><p>  一周的課程設(shè)計(jì)很快就過去了,剛開始我一點(diǎn)也

129、摸不著頭緒,通過去圖書館或上網(wǎng)查資料對(duì)此課程才有了初步得了解,并開始試著利用所學(xué)的知識(shí)進(jìn)行編程。但由于自己的水平有限,考慮問題不十分全面,完成的程序仍存在一些不足之處,希望老師給予指正。通過這次課程設(shè)計(jì),不僅使我的C++有可很大的提高,同時(shí),設(shè)計(jì)中涉及到了許多新知識(shí),通過查閱許多課外的書籍及資料,學(xué)到了許多教材學(xué)不到的知識(shí)。</p><p>  轉(zhuǎn)眼間,一周的課程設(shè)計(jì)過去了,在這段日子里過得很忙碌但也很充實(shí),為此

130、我感到欣慰。在這里要非常感謝老師對(duì)我們的指導(dǎo),感謝同學(xué)對(duì)我的幫助,沒有你們的幫助我不可能完成這次設(shè)計(jì),為此,我衷心地對(duì)你們表示感謝。</p><p><b>  八.參考文獻(xiàn)</b></p><p>  [1] 譚浩強(qiáng) 著. C程序設(shè)計(jì)題解與上機(jī)指導(dǎo)(第三版)[M]. 北京: 清華大學(xué)出版社. 2005.</p><p>  [2] 譚浩強(qiáng) 著

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論