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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  院 系: 計算機科學技術學院</p><p>  班 級:      </p><p>  組 長:    </p><p>  學 號:     </p><p>  指導教師:      </p>

2、<p>  2017年 3 月 2日</p><p>  程序設計基礎課程設計任務書</p><p>  一、題目:貪吃蛇游戲系統</p><p><b>  二、設計要求</b></p><p> ?。?)自己組成課程設計小組。</p><p> ?。?)查閱相關資料,自學具體課題中

3、涉及到的新知識。</p><p> ?。?)采用結構化、模塊化程序設計方法設計,功能要完善,界面美觀。</p><p> ?。?)所設計的系統應有菜單、動畫。</p><p> ?。?)按要求寫出課程設計報告,并于設計結束后1周內提交。其主要內容包括:封皮、課程設計任務書,指導教師評語與成績、目錄、概述、軟件需求分析、總體設計、詳細設計、程序的調試與測試、總結、結束

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

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

6、</p><p>  2017年3月2日,將各模塊集成為一個完整的系統,并錄入足夠的數據進行調試運行,數據必須存儲到磁盤文件中,以備驗收;</p><p>  2017年3月2日,撰寫課程設計報告。</p><p>  2017年3月3日,進行課程設計驗收。</p><p>  指導教師簽章: </p>

7、<p>  教研室主任簽章 </p><p>  程序設計基礎課程設計指導教師評語與成績</p><p><b>  目錄</b></p><p>  一. 概 述1</p><p>  1.1研究的背景及意義1</p><p>  1.2課程設計

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

9、4</p><p>  三. 總體方案設計5</p><p>  3.1模塊劃分:5</p><p>  3.2整體框圖:5</p><p>  四. 程序的調試與運行結果說明6</p><p>  4.1圖形初始化失敗6</p><p><b>  4.2其他問題6&l

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

11、/b></p><p><b>  八.參考文獻22</b></p><p><b>  一. 概 述</b></p><p>  本課程設計以軟件工程方法為指導,采用了結構化,模塊化得課程設計方法,以C++技術為基礎,使用vc為主要工具,總體設計,詳細設計,最終完成系統的實現與測試。</p>&

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

13、流行的,很有發展前途的計算機高級語言。他適合作為系統秒速語言,既可用來編寫系統軟件,也可以用來編寫應用軟件。</p><p>  對于計算機專業和相關學科的學生來說,“課程設計基礎”是一門非常重要的專業基礎課程,對其學習好壞,直接關系到后續課程的學習效果。</p><p>  C++是一種面向過程的高級語言。要學好C++,不但要掌握C++的語法,更重要的是要掌握使用C++進行結構化、模塊化

14、程序設計的方法。有了較好的C++基礎,就可以進一步學好面向對象的程序設計語言和可視的編程語言如VC++6.0、C#等。對于面向對象的程序設計,當設計到具體實現部分的時候,也就是編寫一個對象中具體的方法(即外部服務函數)時,必然要使用結構化得程序來實現??梢?,結構化、模塊化程序設計的方法是必然要學習的,而C++是結構化程序設計思想中比較經典的語言,不可不學好。學習結構化、模塊化程序設計的思想和方法,可以掌握設計解決一個問題的過程,即如何對

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

16、lt;p>  培養學生勇于探索、嚴謹推理、實事求是、有過必改,用實踐來檢驗理論,全方位考慮問題等科學人員應具有的須素質。</p><p>  提高學生對工作認真負責、一絲不茍,對同學友愛團結,協作攻關的基本素質。</p><p>  培養學生從資料文獻、科學實驗中獲得新知識的能力,提高學生從別人經驗中找到解決問題的新途徑的悟性,初步培養工程意識和創新能力。</p>&l

17、t;p>  對學生掌握知識的深度、運用理論去處理問題的能力、實驗能力、課程設計能力、書面及口頭表達能力進行考核。</p><p>  1.3課程設計的要求</p><p>  為實現上述目的,提出以下具體要求:</p><p>  以學生自由組織成課程設計游戲開發小組,可由指導教師確定每組的人數,建議每組為3個人左右,并選1人擔任組長.指導教師可跟據各個開發小

18、組的試驗情況進行必要的調整</p><p>  每組選擇課程設計中的一個題目,即開發一個所選課題的"軟件系統",每組獨立完成。</p><p>  該系統要有主菜單,動畫與音樂,且游戲功能上盡可能模擬操作系統中的貪吃蛇游戲,系統界面盡量美觀。</p><p>  進一步掌握C++集成開發環境</p><p>  熟練掌握C

19、++的數據類型,三種基本結構,模塊化設計,指針,結構體,文件,鏈表等知識點。</p><p>  叢書或互聯網上查閱相關資料,自學具體課題中涉及到的知識。</p><p>  采用結構化,模塊化程序設計方法進行設計,功能要完善,界面要美觀,應具有一定創新。</p><p>  8軟件開發小組組長帶領本小組成員團結協作,共同完成課題的設計任務。要求開發小組中每個組員都

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

21、設計數組元素與蛇、食物的對應關系。</p><p> ?。?)隨機產生食物。</p><p> ?。?)有分數統計、排行榜、分數存儲等功能。</p><p> ?。?)有同步播放的動畫、聲音效果。</p><p>  2. 課程設計中涉及的知識點</p><p><b> ?。?)數組的應用。</b&g

22、t;</p><p> ?。?)全局變量的應用。</p><p><b> ?。?)按鍵處理。</b></p><p> ?。?)結構體的應用。</p><p> ?。?)圖形 、音樂和動畫的有關知識。</p><p> ?。?)隨機函數的使用。</p><p> ?。?)

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

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

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

26、gt;<b>  三. 總體方案設計</b></p><p>  特點:為方便操作,加入了口令登錄、動畫音樂、數據維護和系統幫助。</p><p>  算法的整體思路:隨機產生食物,按相應的鍵執行相應的功能。</p><p><b>  3.1模塊劃分:</b></p><p><b> 

27、?。ㄒ唬┯螒騽赢?</b></p><p><b> ?。ǘ┯螒虿藛危?</b></p><p><b> ?。ㄈ┯螒蜻^程: </b></p><p><b> ?。ㄋ模┩顺觯?</b></p><p><b>  3.2整體框圖:</b>

28、</p><p>  圖1 軟件總體模塊結構圖</p><p>  四. 程序的調試與運行結果說明</p><p>  4.1圖形初始化失敗</p><p>  預期效果:進入動畫能觀看所畫圖形。</p><p>  實際運行效果:編譯成功,但無法進入動畫。</p><p>  圖4 圖形初始化

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

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

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

32、  游戲結束界面</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);//移動</p><p>  void Loc(int, int);//定位函數</p><p>  void Beginning();

34、//游戲開始</p><p>  void CreatMap();//創建地圖</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();//蛇的移動<

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

37、  void Ending();//游戲結束</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(" $$______$$ 按回車進入游戲\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;//指向下一個蛇身的指針</p><p><b>  }; </b></p><p>  int length=sizeof(struct Body);//Body結構體所占字節數</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}; //調用windows庫里的函數 坐標轉換 </p><p>  HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);//獲得輸出設備的句柄 </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);//獲得輸出設備的句柄</p><p>  SetConsoleCursorPosition(hOut, loc); //光標定位</p><p><b>  }</b></p><p>  void init() //游戲開始時蛇的位置 </p><p><b

59、>  {</b></p><p>  gotoxy(9,2);</p><p>  p=(struct node*)malloc(sizeof(struct node));//將P指向一個新分配的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(" 經典小游戲 ");</p><p>  gotoxy(initx,inity);&

63、lt;/p><p>  printf(" 超級宇宙無敵無邊框貪吃蛇 按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()) //有鍵盤輸入時接受若是13(ENTER)鍵結束循環</p><p>  ch1=getch();</p><p><b>  }</b></p><p>  system("cls");</p><p><b>  

66、}</b></p><p>  void CreatMap()//創建外圍</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() //開始游戲時</p><p><b>  {</b></p><p>  struct Body *p_cur,*p_new;//定義四個蛇身指針</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("每吃一個");</p><p>  Loc(80,4);</p><p>  puts("蛇會加速");</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)//定位到最后一個蛇身</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)//定位到最后一個蛇身</p><p><b>  {</b></p><p>  if(p_body->x=

86、=x&&p_body->y==y)//如果有任何一個蛇身坐標與蛇頭重合,蛇即死亡</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()//蛇的移動</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()//結束游

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>  六. 結論</b></p><p>  本程序基本達到了任務書上的要求。并且在游戲中增加生命值和選擇難度。</p><p>  程序特點:游戲界面美觀,在要求的基礎上做了創新。</p><p>  困難:由于剛開始學習C++對一些知識理解的還不透徹,還不

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

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

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

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

溫馨提示

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

評論

0/150

提交評論