貪吃蛇c語言程序設(shè)計_第1頁
已閱讀1頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  ------------ 大 學(xué)</p><p>  C語言程序設(shè)計 課程設(shè)計(論文)</p><p>  題目: 貪吃蛇 </p><p>  院(系): </p><p>  專業(yè)班級:

2、 </p><p>  學(xué) 號: </p><p>  學(xué)生姓名: </p><p>  指導(dǎo)教師: </p><p>  教師職稱: <

3、/p><p>  起止時間: </p><p>  課程設(shè)計(報告)任務(wù)及評語</p><p>  院(系): 教研室:</p><p><b>  目 錄</b></p><p>  第1章 C語言課程設(shè)計的實訓(xùn)目的與要

4、求1</p><p>  1.1 C語言課程設(shè)計目的1</p><p>  1.2 C語言課程設(shè)計的實驗環(huán)境1</p><p>  1.3 C語言課程設(shè)計的預(yù)備知識1</p><p>  1.4 C語言課程設(shè)計要求1</p><p>  第2章 C語言課程設(shè)計內(nèi)容2</p><p>

5、;  2.1程序功能介紹2</p><p>  2.2程序整體設(shè)計說明2</p><p>  2.2.1設(shè)計思路2</p><p>  2.2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計及用法說明3</p><p>  2.2.4各模塊的功能及程序說明7</p><p>  2.2.5程序結(jié)果8</p><p>

6、;  2.3程序源代碼及注釋10</p><p>  第3章 C語言課程設(shè)計總結(jié)17</p><p><b>  參考資料..20</b></p><p>  第1章 C語言課程設(shè)計的目的與要求</p><p>  1.1 C語言課程設(shè)計目的</p><p>  本課程設(shè)計是計算機科學(xué)與技

7、術(shù)專業(yè)重要的實踐性環(huán)節(jié)之一,是在學(xué)生學(xué)習(xí)完《程序設(shè)計語言(C)》課程后進行的一次全面的綜合練習(xí)。本課程設(shè)計的目的和任務(wù): </p><p>  1. 鞏固和加深學(xué)生對C語言課程的基本知識的理解和掌握 </p><p>  2. 掌握C語言編程和程序調(diào)試的基本技能 </p><p>  3. 利用C語言進行基本的軟件設(shè)計</p><p>  4

8、. 掌握書寫程序設(shè)計說明文檔的能力</p><p>  5. 提高運用C語言解決實際問題的能力</p><p>  1.2 C語言課程設(shè)計的實驗環(huán)境</p><p>  硬件要求能運行Windows 2000/XP操作系統(tǒng)的微機系統(tǒng)。C語言程序設(shè)計及相應(yīng)的開發(fā)環(huán)境。</p><p>  1.3 C語言課程設(shè)計的預(yù)備知識</p>

9、<p>  熟悉C語言及C語言開發(fā)工具。</p><p>  1.4 C語言課程設(shè)計要求</p><p>  1. 分析課程設(shè)計題目的要求2. 寫出詳細設(shè)計說明3. 編寫程序代碼,調(diào)試程序使其能正確運行4. 設(shè)計完成的軟件要便于操作和使用5. 設(shè)計完成后提交課程設(shè)計報告</p><p>  第2章 C語言課程設(shè)計內(nèi)容</p>&l

10、t;p><b>  2.1程序功能介紹</b></p><p>  貪吃蛇游戲是一個經(jīng)典小游戲,深受眾多玩家喜愛,其規(guī)則是:一條蛇在封閉圍墻里,圍墻里隨機出現(xiàn)一個食物,通過按鍵盤四個光標鍵控制蛇向上下左右四個方向移動,蛇頭撞倒食物,則食物被吃掉,蛇身體長一節(jié),同時記10分,接著又出現(xiàn)食物,等待蛇來吃,如果蛇在移動中撞到墻或身體交叉蛇頭撞倒自己身體游戲結(jié)束。此游戲不僅能鍛煉人的思維敏捷性

11、,而且還可以提高玩家的邏輯判斷能力。</p><p>  2.2程序整體設(shè)計說明</p><p>  任何一種游戲都必須具備開始部分,運行部分,結(jié)束部分。但其核心是運行部分,它是整個游戲程序的中間力量,故其對程序設(shè)計的嚴密性要求極其嚴格。</p><p><b>  2.2.1設(shè)計思路</b></p><p>  貪吃蛇

12、游戲設(shè)計的雖然總體分為開始、運行、結(jié)束三個過程,但其內(nèi)部程序非常之復(fù)雜具體包括開始時的狀態(tài),游戲進行中如果得分其分數(shù)的累加程序的設(shè)計,當玩家游戲結(jié)束時所出現(xiàn)的音頻及圖片效果等設(shè)計的程序主要包括主函數(shù),printf()函數(shù),scanf()函數(shù)等各種輸入輸出函數(shù)。同時還運用了各種數(shù)據(jù)類型和運算符以及各種選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)的重復(fù)使用。特別是運用了數(shù)組結(jié)構(gòu)(1.2.3維)和函數(shù)之間的調(diào)用是程序更為完整清楚簡便,易于讀懂。這個程序的關(guān)鍵是表示蛇的圖

13、形以及蛇的移動。用一個小矩形表示蛇的一節(jié)身體,身體每長一節(jié),增加一個矩形塊,蛇頭用兩節(jié)表示。移動時必須從蛇頭開始,所以蛇不能向相反方向移動,也就是蛇尾不能改作蛇頭。如果不按任何鍵,蛇自行在當前方向上前移,當游戲者按了有效的方向鍵后,蛇頭朝著指定的方向移動,一步移動一節(jié)身體,所以當按了有效的方向鍵后,先確定蛇頭的位置,然后蛇身體隨著蛇頭移動,圖形的實現(xiàn)是從蛇頭的新位置開始畫出蛇,這時由于沒有慶平的原因,原來蛇的位置和新蛇的位置差一個單位,

14、所以看起來就像多一節(jié)身體,所以將蛇的最后一節(jié)用背景色覆蓋。食物的出現(xiàn)和消失也是由畫矩形塊和覆蓋矩形塊所覆蓋。這樣一</p><p>  2.2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計及用法說明 </p><p><b>  開始部分:</b></p><p>  由于貪吃蛇游戲是運行在圖形模式下的,所以第一步一定是初始化圖形模式,接著要有開始的界面,就像書有封面一樣,

15、由此我設(shè)置了一個游戲的標題畫面,除了游戲標題畫面我還設(shè)置了一個歡迎畫面,這樣玩游戲時比較有真實感,圖像感。標題畫面以后,還要為游戲的運行部分作初始化,包括繪制游戲運行時的背景以及游戲運行時的音頻效果,同時還要對游戲某些重要變量的初始化。</p><p><b>  運行部分:</b></p><p>  該部分作為游戲的核心部分,這里包括的函數(shù)比較多,也就是模塊比較多

16、,首先讓我以故事的方式模擬一下貪吃蛇的游戲基本模式:假如某個世界上突然出現(xiàn)一條蛇,它很短,它的運動神經(jīng)異常,它沒法停止自己的多動癥在它的世界里就只有食物,它很餓,也很貪吃;同樣在不明原因的情況下,食物從天而降,可惜的是沒有落到嘴邊;饑餓的主人公,不管它有沒有毒,也不問食物的來歷,徑直向食物爬去;它吃到食物啦,它超出想象的同化能力讓食物很快的成為自己身體的一部分,它的身子變長啦。當它吃到第一顆食物時,上帝有給它第二顆,于是它吃了第二顆,于

17、是又變長了,于是又有第三顆……它的身子是一直的加長,它不管自己過長身體的麻煩——轉(zhuǎn)身不便,繼續(xù)吃下去,現(xiàn)在它是直接把嘴巴張大,好讓食物有個綠色通道。但有時隨著貪吃蛇的不斷增長食物的停留時間也隨之縮短,如果不及時吃掉的話食物就會消失。此時你的分數(shù)停滯不前。如果在某天,它不小心咬到了自己,它才想起自己是一條毒蛇,于是暈死過去(不是毒死);又或者它往食物沖鋒的時候,它失去控制,撞到了墻,導(dǎo)致了昏死。</p><p> 

18、 第一輪循環(huán):第一步,出現(xiàn)食物;第二步,蛇不停運動;第三步,檢查蛇是咬到自己或撞到墻壁;由第四步起游戲有兩條支線(A、B):</p><p>  A :第四步,當蛇沒有碰到自己或墻壁,蛇繼續(xù)前進,繪制蛇的動作;第五步,判斷蛇是否吃到食物,如果蛇吃到食物,身子變長,原來的食物消失;如果蛇沒有在規(guī)定的時間內(nèi)吃到食物,食物將自動消失。第六步,讓玩家輸入控制指令,讓蛇在下一輪循環(huán)的第二步改變運動方向;第七步,第二輪循環(huán)的

19、第一步,重復(fù)第一輪的步驟;</p><p>  B:第四步,蛇碰到自己或墻壁,終止游戲。</p><p><b>  結(jié)束部分:</b></p><p>  游戲結(jié)束時,顯示“GAME OVER”背景圖象,并配有比較憂傷的音樂,已經(jīng)是約定俗成的規(guī)律了,我所設(shè)計的貪吃蛇游戲也不例外。除了游戲結(jié)束畫面外,我還設(shè)置了一個游戲退出畫面,并提示玩家是否退

20、出游戲或者是繼續(xù)此前游戲。</p><p>  有了上述的大致劃分,我把整個程序劃分成(13+2)個基本模塊(其實就是函數(shù)的基本應(yīng)用以及根據(jù)函數(shù)的用途所劃分的小模塊)</p><p>  2.2.3程序結(jié)構(gòu)(流程圖)</p><p><b>  總流程圖</b></p><p><b>  分流程圖 (模塊)&

21、lt;/b></p><p><b>  圖2.1流程圖</b></p><p>  在設(shè)計貪吃蛇游戲時依據(jù)所需要處理的任務(wù)要求,規(guī)劃輸入數(shù)據(jù)和輸出結(jié)果,決定存放數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。</p><p> ?。谜Z言中數(shù)據(jù)結(jié)構(gòu)集中體現(xiàn)在數(shù)據(jù)類型上,因此在進行C語言程序設(shè)計時,應(yīng)統(tǒng)籌規(guī)劃程序中所使用的變量,數(shù)組,函數(shù),指針等,以及它們的類型等。這點是

22、很重要的,如果在此期間選擇不合適的變量或者數(shù)組,將來修改就十分困難,所以在設(shè)計時要秉著簡單易懂的理念來設(shè)計程序,并且要盡量失所編寫的程序優(yōu)化從而可以高速度運行程序。</p><p>  現(xiàn)在分析一下貪吃蛇游戲中的元素,繼而得出與它們對應(yīng)的在程序中的描述:</p><p><b>  蛇:</b></p><p>  基本描述:長度,顏色,位置。

23、</p><p>  對應(yīng)數(shù)據(jù)與數(shù)據(jù)類型:長度—雖然可以用坐標表示,但是這樣的話,運算量將很大,所以換算成較大的單位—節(jié)數(shù),以固定長度的每節(jié)描述;坐標--整型;顏色--整型; 位置--X,Y坐標。</p><p>  增加的描述:蛇運動的方向,蛇的生命。</p><p>  對應(yīng)數(shù)據(jù)與數(shù)據(jù)類型:這些描述是為了與程序的按鍵的輸入部分與判斷游戲結(jié)束部分相聯(lián)系而設(shè)的。方向

24、只有四個方向:上下左右??梢栽O(shè)置與之對應(yīng)的四個整型數(shù):3、4、2、1。貪吃蛇的生命就只有兩種情況:死或生,對應(yīng)的邏輯運算符為0或1及真假。</p><p><b>  食物: </b></p><p>  基本描述:顏色,位置。</p><p>  對應(yīng)數(shù)據(jù)與數(shù)據(jù)類型:由于顏色設(shè)成固定的,所以不再討論。位置—X、Y坐標。</p>

25、<p>  增加的描述:食物的存在。</p><p>  對應(yīng)數(shù)據(jù)與數(shù)據(jù)類型:這是為了避免重復(fù)出現(xiàn)食物而設(shè)置的,與繪制食物的函數(shù)有聯(lián)系。只有兩個值:0或1(沒有食物,有食物或食物消失)</p><p>  其他的元素:墻,由于它在顯示上是作為背景而存在的,所以并沒有什么說明實際的墻壁就是四條直線組成的邊框,由坐標描述。</p><p>  還需要的變量

26、:鍵盤鍵入的鍵值(作為全局變量,整型);經(jīng)常要使用的循環(huán)變量;自定義的填充圖案;說明文字的字符數(shù)組;游戲的記分;游戲的速度(蛇的速度)。</p><p>  圖2.2蛇的不停運動的關(guān)鍵算法的流程圖</p><p>  2.2.4各模塊的功能及程序說明</p><p>  主要模塊的實現(xiàn)思路和算法的流程圖說明:總程序是整個貪吃蛇程序的一個概括其具體包括程序的開始,運行

27、及結(jié)束和中間的具體細微的判斷是否停止或繼續(xù)進行此游戲。下面是整個程序中極其重要的部分亦是核心部分。</p><p>  關(guān)鍵所在——蛇不停移動的Snakemove():</p><p>  蛇的不停移動,就是蛇的下一節(jié)取代前一節(jié)的位置,在計算機中就是蛇下一節(jié)的位置坐標變成前一節(jié)的位置坐標。在上文中,已定義蛇的位置坐標為數(shù)組類型,一組坐標對應(yīng)一節(jié)的位置,假設(shè)有i+1節(jié),由0到i節(jié),第i節(jié)的坐

28、標取第i-1節(jié)的坐標,第i-1節(jié)的坐標取第i-2節(jié)的坐標……直到第1節(jié)取第0節(jié)的坐標。而第0節(jié)的坐標,即蛇頭的坐標要往某個方向變化,變化量為蛇每節(jié)的長度。蛇的這種坐標輪換需要循環(huán)語句使其繼續(xù)下去。還有在游戲開始或結(jié)束時所出現(xiàn)的背景圖或者是音頻效果在此過程中運用了函數(shù)的輸入輸出如printf(),scanf()函數(shù)等。在游戲運行中所用到的數(shù)字(成績)累加如函數(shù)的調(diào)用循環(huán)使用。 </p><p><b>

29、  2.2.5程序結(jié)果</b></p><p>  運行程序得到如下初始界面圖:</p><p><b>  圖2.3程序結(jié)果圖</b></p><p>  用一個小矩形表示蛇的一節(jié)身體,身體每長一節(jié),增加一個矩形塊,蛇頭用兩節(jié)表示:</p><p><b>  圖2.4程序結(jié)果圖</b>

30、;</p><p>  蛇沒有碰到自己或墻壁,蛇繼續(xù)前進:</p><p><b>  圖2.5程序結(jié)果圖</b></p><p>  游戲結(jié)束時,顯示“GAME OVER”</p><p><b>  圖2.6程序結(jié)果圖</b></p><p>  2.3程序源代碼及注釋&

31、lt;/p><p>  #define N 200</p><p>  #include <graphics.h></p><p>  #include <stdlib.h></p><p>  #include <dos.h></p><p>  #define LEFT 0x4b00

32、</p><p>  #define RIGHT 0x4d00</p><p>  #define DOWN 0x5000</p><p>  #define UP 0x4800</p><p>  #define ESC 0x011b</p><p>  int i,key;</p><p>

33、  int score=0;/*得分*/</p><p>  int gamespeed=50000;/*游戲速度自己調(diào)整*/</p><p>  struct Food</p><p><b>  {</b></p><p>  int x;/*食物的橫坐標*/</p><p>  int y;

34、/*食物的縱坐標*/</p><p>  int yes;/*判斷是否要出現(xiàn)食物的變量*/</p><p>  }food;/*食物的結(jié)構(gòu)體*/</p><p>  struct Snake</p><p><b>  {</b></p><p><b>  int x[N];</

35、b></p><p><b>  int y[N];</b></p><p>  int node;/*蛇的節(jié)數(shù)*/</p><p>  int direction;/*蛇移動方向*/</p><p>  int life;/* 蛇的生命,0活著,1死亡*/</p><p><b>

36、;  }snake;</b></p><p>  void Init(void);/*圖形驅(qū)動*/</p><p>  void Close(void);/*圖形結(jié)束*/</p><p>  void DrawK(void);/*開始畫面*/</p><p>  void GameOver(void);/*結(jié)束游戲*/</p

37、><p>  void GamePlay(void);/*玩游戲具體過程*/</p><p>  void PrScore(void);/*輸出成績*/</p><p><b>  /*主函數(shù)*/</b></p><p>  void main(void)</p><p><b>  {&l

38、t;/b></p><p>  Init();/*圖形驅(qū)動*/</p><p>  DrawK();/*開始畫面*/</p><p>  GamePlay();/*玩游戲具體過程*/</p><p>  Close();/*圖形結(jié)束*/</p><p><b>  }</b></p&g

39、t;<p><b>  /*圖形驅(qū)動*/</b></p><p>  void Init(void)</p><p><b>  {</b></p><p>  int gd=DETECT,gm;</p><p>  registerbgidriver(EGAVGA_driver);&

40、lt;/p><p>  initgraph(&gd,&gm,"c:\\program files\\winyes\\tc20h\\bgi");</p><p>  cleardevice();</p><p><b>  }</b></p><p>  /*開始畫面,左上角坐標為(50,4

41、0),右下角坐標為(610,460)的圍墻*/</p><p>  void DrawK(void)</p><p><b>  {</b></p><p>  /*setbkcolor(LIGHTGREEN);*/</p><p>  setcolor(11);</p><p>  setlin

42、estyle(SOLID_LINE,0,THICK_WIDTH);/*設(shè)置線型*/</p><p>  for(i=50;i<=600;i+=10)/*畫圍墻*/</p><p><b>  {</b></p><p>  rectangle(i,40,i+10,49); /*上邊*/</p><p>  rect

43、angle(i,451,i+10,460);/*下邊*/</p><p><b>  }</b></p><p>  for(i=40;i<=450;i+=10)</p><p><b>  {</b></p><p>  rectangle(50,i,59,i+10); /*左邊*/<

44、/p><p>  rectangle(601,i,610,i+10);/*右邊*/</p><p><b>  }</b></p><p><b>  }</b></p><p>  /*玩游戲具體過程*/</p><p>  void GamePlay(void)</p&

45、gt;<p><b>  {</b></p><p>  randomize();/*隨機數(shù)發(fā)生器*/</p><p>  food.yes=1;/*1表示需要出現(xiàn)新食物,0表示已經(jīng)存在食物*/</p><p>  snake.life=0;/*活著*/</p><p>  snake.direction=

46、1;/*方向往右*/</p><p>  snake.x[0]=100;snake.y[0]=100;/*蛇頭*/</p><p>  snake.x[1]=110;snake.y[1]=100;</p><p>  snake.node=2;/*節(jié)數(shù)*/</p><p>  PrScore();/*輸出得分*/</p><

47、;p>  while(1)/*可以重復(fù)玩游戲,壓ESC鍵結(jié)束*/</p><p><b>  {</b></p><p>  while(!kbhit())/*在沒有按鍵的情況下,蛇自己移動身體*/</p><p><b>  {</b></p><p>  if(food.yes==1)/*

48、需要出現(xiàn)新食物*/</p><p><b>  {</b></p><p>  food.x=rand()%400+60;</p><p>  food.y=rand()%350+60;</p><p>  while(food.x%10!=0)/*食物隨機出現(xiàn)后必須讓食物能夠在整格內(nèi),這樣才可以讓蛇吃到*/</p

49、><p><b>  food.x++;</b></p><p>  while(food.y%10!=0)</p><p><b>  food.y++;</b></p><p>  food.yes=0;/*畫面上有食物了*/</p><p><b>  }<

50、/b></p><p>  if(food.yes==0)/*畫面上有食物了就要顯示*/</p><p><b>  {</b></p><p>  setcolor(GREEN);</p><p>  rectangle(food.x,food.y,food.x+10,food.y-10);</p>

51、<p><b>  }</b></p><p>  for(i=snake.node-1;i>0;i--)/*蛇的每個環(huán)節(jié)往前移動,也就是貪吃蛇的關(guān)鍵算法*/</p><p><b>  {</b></p><p>  snake.x[i]=snake.x[i-1];</p><p&g

52、t;  snake.y[i]=snake.y[i-1];</p><p><b>  }</b></p><p>  /*1,2,3,4表示右,左,上,下四個方向,通過這個判斷來移動蛇頭*/</p><p>  switch(snake.direction)</p><p><b>  {</b>&

53、lt;/p><p>  case 1:snake.x[0]+=10;break;</p><p>  case 2: snake.x[0]-=10;break;</p><p>  case 3: snake.y[0]-=10;break;</p><p>  case 4: snake.y[0]+=10;break;</p>&l

54、t;p><b>  }</b></p><p>  for(i=3;i<snake.node;i++)/*從蛇的第四節(jié)開始判斷是否撞到自己了,因為蛇頭為兩節(jié),第三節(jié)不可能拐過來*/</p><p><b>  {</b></p><p>  if(snake.x[i]==snake.x[0]&&

55、snake.y[i]==snake.y[0])</p><p><b>  {</b></p><p>  GameOver();/*顯示失敗*/</p><p>  snake.life=1;</p><p><b>  break;</b></p><p><b&g

56、t;  }</b></p><p><b>  }</b></p><p>  if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||</p><p>  snake.y[0]>455)/*蛇是否撞到墻壁*/</p><p><b>

57、;  {</b></p><p>  GameOver();/*本次游戲結(jié)束*/</p><p>  snake.life=1; /*蛇死*/</p><p><b>  }</b></p><p>  if(snake.life==1)/*以上兩種判斷以后,如果蛇死就跳出內(nèi)循環(huán),重新開始*/</p&g

58、t;<p><b>  break;</b></p><p>  if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/</p><p><b>  {</b></p><p>  setcolor(0);/*把畫面上的食物東西去掉*/<

59、/p><p>  rectangle(food.x,food.y,food.x+10,food.y-10);</p><p>  snake.x[snake.node]=-20;snake.y[snake.node]=-20;</p><p>  /*新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置*/</p><p>  snake.nod

60、e++;/*蛇的身體長一節(jié)*/</p><p>  food.yes=1;/*畫面上需要出現(xiàn)新的食物*/</p><p>  score+=10;</p><p>  PrScore();/*輸出新得分*/</p><p><b>  }</b></p><p>  setcolor(4);/*畫

61、出蛇*/</p><p>  for(i=0;i<snake.node;i++)</p><p>  rectangle(snake.x[i],snake.y[i],snake.x[i]+10,</p><p>  snake.y[i]-10);</p><p>  delay(gamespeed);</p><p&

62、gt;  setcolor(0);/*用黑色去除蛇的的最后一節(jié)*/</p><p>  rectangle(snake.x[snake.node-1],snake.y[snake.node-1],</p><p>  snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);</p><p>  } /*endwhile

63、(!kbhit)*/</p><p>  if(snake.life==1)/*如果蛇死就跳出循環(huán)*/</p><p><b>  break;</b></p><p>  key=bioskey(0);/*接收按鍵*/</p><p>  if(key==ESC)/*按ESC鍵退出*/</p><p

64、><b>  break;</b></p><p><b>  else</b></p><p>  if(key==UP&&snake.direction!=4)</p><p>  /*判斷是否往相反的方向移動*/</p><p>  snake.direction=3;&

65、lt;/p><p><b>  else</b></p><p>  if(key==RIGHT&&snake.direction!=2)</p><p>  snake.direction=1;</p><p><b>  else</b></p><p>  

66、if(key==LEFT&&snake.direction!=1)</p><p>  snake.direction=2;</p><p><b>  else</b></p><p>  if(key==DOWN&&snake.direction!=3)</p><p>  snake

67、.direction=4;</p><p>  }/*endwhile(1)*/</p><p><b>  }</b></p><p><b>  /*游戲結(jié)束*/</b></p><p>  void GameOver(void)</p><p><b>  {

68、</b></p><p>  cleardevice(); </p><p>  PrScore();</p><p>  setcolor(RED);</p><p>  settextstyle(0,0,4);</p><p>  outtextxy(200,200,"GAME OVER&qu

69、ot;);</p><p><b>  getch();</b></p><p><b>  }</b></p><p><b>  /*輸出成績*/</b></p><p>  void PrScore(void)</p><p><b> 

70、 { </b></p><p>  char str[10];</p><p>  setfillstyle(SOLID_FILL,YELLOW);</p><p>  bar(50,15,220,35);</p><p>  setcolor(6);</p><p>  settextstyle(0,

71、0,2);</p><p>  sprintf(str,"score:%d",score);</p><p>  outtextxy(55,20,str);</p><p><b>  }</b></p><p><b>  /*圖形結(jié)束*/</b></p><

72、;p>  void Close(void)</p><p><b>  { </b></p><p><b>  getch();</b></p><p>  closegraph();</p><p><b>  }</b></p><p>

73、  第3章 課程設(shè)計總結(jié)</p><p>  在這短短的兩星期的時間內(nèi),通過老師的細心講解和同學(xué)們之間互相的討論,我深知課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識 ,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對我們的實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新月異,當今計算機應(yīng)用在生活中可以說得是無處不在。因此作為二十一世紀的大學(xué)來說掌握程序開發(fā)技術(shù)是十分重要的,而C語言又是最常見,功能最強大

74、的一種高級語言,因此做好C語言課程設(shè)計是十分必要的。當我們回顧起此次課程設(shè)計,至今我仍感慨頗多,的確,自從拿到題目到完成整個編程,從理論到實踐,從迷茫到初步了解,從動腦思考到付出實踐(上機具體運行)在短短半個月的日子里,學(xué)到很多很多的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計使我們懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從

75、理論中得出結(jié)論,從結(jié)論中悟出真諦,從失敗中汲取教訓(xùn),從成功中獲取教訓(xùn)。才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程中遇到問題,可以說得是困難重重,這畢竟第一次</p><p>  我做的是貪吃蛇游戲。我認為是其中最簡單的一個,但對我一個初學(xué)者來說卻是一個很大的困難。更加是第一次做課程設(shè)計,實在不知道做課設(shè)的具體步驟,所以第一天下午在機房做了一個下午卻絲毫沒有進展,最主要是不知從何開

76、始,這個時候才知道上課老師們不厭其煩的教導(dǎo)是多么的寶貴,才后悔上課的時候沒有認真的聽講。還好時間還算是充裕,只好拿出書本重新復(fù)習(xí)一下。特別是在老師和同學(xué)們的幫助下,對課設(shè)有了初步的了解,同時對書本上的知識有了更深刻的認識。特別是數(shù)組,結(jié)構(gòu)體,指針的部分及函數(shù)體的循環(huán)調(diào)用,幾乎是一片空白。不過經(jīng)過幾天的努力,大體上把課本上的知識點看了一遍,知識點也都基本是撐握了,所以經(jīng)過半個月的認真復(fù)習(xí)和精心編寫程序。起初還算順利,不過畢竟是個新手,還是

77、不知如何具體的編寫,于是就在網(wǎng)上下了一篇類似的程序,經(jīng)過仔細的研究,終于讀懂了C語言編程的基本過程和方法。 經(jīng)過</p><p>  一波三折,終于開始正式編程。</p><p>  編程是一件很枯燥很無聊的事情,但是出于完成作業(yè),得到學(xué)分的壓力,還必須強破自己堅持下去,按照老師所說的模塊化思想,分部分的進行編寫。而且編程是一件高精度、模范化的事情,稍有疏乎都會影響全局,也可能因為某一處的

78、小的錯誤而導(dǎo)致整個程序的無法運行。所以認真仔細就是非很無聊的事情,不過當一個程序運行成功的時候那種喜悅是無法言語的,那種成就感是無法比擬的。又經(jīng)過幾天的努力,終于把程序完成了,盡管程序還是有很多錯誤和漏洞,不過還是很高興的。無論如何是自己的勞動成果,是自己經(jīng)過努力得到的成績,同時也是學(xué)習(xí)C語言的一次實踐作業(yè),自己進步的證明。</p><p>  通過這次課程設(shè)計,使我對C語言有了更進一步的認識和了解,要想學(xué)好它要

79、重在實踐,要通過不斷的上機操作才能更好地學(xué)習(xí)它,我也發(fā)現(xiàn)我的好多不足之處,首先是自己在指法上還不行,經(jīng)常按錯字母,通過學(xué)習(xí)也有所改進;再有對C語言的一些標準庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,還有對C語言中經(jīng)常出現(xiàn)的錯誤也不了解,通過實踐的學(xué)習(xí),我認識到學(xué)好計算機要重視實踐操作,不僅僅是學(xué)習(xí)C語言,還是其它的語言,以及其它的計算機方面的知識都要重在實踐,所以后在學(xué)習(xí)過 程</p><p>  中,我

80、會更加注視實踐操作,使自己便好地學(xué)好計算機。</p><p>  在課程設(shè)計過程中,收獲知識,提高能力的同時,我也學(xué)到了很多人生的哲理,懂得怎么樣去制定計劃,怎么樣去實現(xiàn)這個計劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒。</p><p>  常重要的了。開始的時候真的感覺編程是一件很無聊的事情,不過當一個程序運行成功的時候那種喜悅是無法言語的,那種成就感是無法比擬的。又經(jīng)過幾天的

81、努力,終于把程序完成了,盡管程序還是有很多錯誤和漏洞,不過還是很高興的。無論如何是自己的勞動成果,是自己經(jīng)過努力得到的成績,同時也</p><p>  是學(xué)習(xí)C語言的一次實踐作業(yè),自己進步的證明。</p><p>  通過這次課程設(shè)計,使我對C語言有了更進一步的認識和了解,要想學(xué)好它要重在實踐,要通過不斷的上機操作才能更好地學(xué)習(xí)它,我也發(fā)現(xiàn)我的好多不足之處,首先是自己在指法上還不行,經(jīng)常按

82、錯字母,通過學(xué)習(xí)也有所改進;再有對C語言的一些標準庫函數(shù)不太了解,還有對函數(shù)調(diào)用的正確使用不夠熟悉,還有對C語言中經(jīng)常出現(xiàn)的錯誤也不了解,通過實踐的學(xué)習(xí),我認識到學(xué)好計算機要重視實踐操作,不僅僅是學(xué)習(xí)C語言,還是其它的語言,以及其它的計算機方面的知識都要重在實踐,所以后在學(xué)習(xí)過 程</p><p>  中,我會更加注視實踐操作,使自己更好地學(xué)好計算機。</p><p>  在課程設(shè)計過程中

83、,收獲知識,提高能力的同時,我也學(xué)到了很多人生的哲理,懂得怎么樣去制定計劃,怎么樣去實現(xiàn)這個計劃,并掌握了在執(zhí)行過程中怎么樣去克服心理上的不良情緒??偟膩碚f應(yīng)當多謝老師給我們這次寶貴的機會,才使得我們學(xué)到如此豐富的知識,這不僅是一次考驗更是人生中的一筆重要的財富,在之后當我們回想起來便是一種非凡的享受。同時它還讓我明白了一個道理即是,在人生的路上我們會遇到坎坷不平,或是風(fēng)霜雨雪但是只要我們堅持秉著一顆堅韌的心,定會迎來一馬平川,麗日晴空

84、。</p><p><b>  參考資料</b></p><p>  張強華. 《 C 語言程序設(shè)計》.2001年版.北京. 人民郵電出版社.2001.</p><p>  徐新華. 《 C 語言程序設(shè)計教程》.1999年版.北京. 清華大學(xué)出版社.1999.</p><p>  譚浩強. 《 C 語言程序設(shè)計》.199

85、9年版.北京. 清華大學(xué)出版社.1999.</p><p>  徐建民. 《 C 語言程序設(shè)計》.2002年版.北京. 電子工業(yè)出版社.2002.</p><p>  李大友. 《 C 語言程序設(shè)計》.1999年版. 北京. 清華大學(xué)出版社.1999.</p><p>  畢萬新. 《 C 語言程序設(shè)計》.2005年版.大連. 大連理工大學(xué)出版社.2005.<

86、/p><p>  劉 燕. 《 C 語言程序設(shè)計》.2008年版.北京. 中國鐵道出版社.2008.</p><p>  廖 雷. 《C語言程序設(shè)計》.2006年版.北京. 高等教育出版社.2006.</p><p>  方少卿. 《C語言程序設(shè)計》. 2007年版.北京. 中國鐵道出版社.2007.</p><p>  譚浩強. 《 C語言程序

87、設(shè)計》. (第二版).北京.清華大學(xué)出版社.2007.</p><p>  吳文虎. 《 程序設(shè)計基礎(chǔ)》.2003年版.北京. 清華大學(xué)出版社.2003.</p><p>  錢啟平. 《C裘宗燕.從問題到程序——程序設(shè)計與C語言引論.第一版.北京:北京大學(xué)出版2006</p><p>  朱戰(zhàn)立,數(shù)據(jù)結(jié)構(gòu)—使用c.語言西安交通大學(xué)出版社,2005.</p&g

88、t;<p>  秦維佳;傘宏力;侯春光;孟艷紅 .C/C++程序設(shè)計教程.機械工業(yè)出版社.2007-2-1語言程序設(shè)計基礎(chǔ)》. 2000年版.北京. 鐵道譚浩強.《C程序設(shè)計題解與上機指導(dǎo)》.1998年版.北京:清華大學(xué)出版社,1992.</p><p>  譚浩強.《C程序設(shè)計題解與上機指導(dǎo)》.1998年版.北京:清華大學(xué)出版社,1992.</p><p>  廖雷.《C語

89、言程序設(shè)計》.第2版.北京:高等教育出版社,2006.</p><p>  賈學(xué)斌,宋海民.《C語言程序設(shè)計》.06年版.北京:中國鐵道出版社,2007.</p><p>  趙海廷.《C語言程序設(shè)計》.05年版.北京:人民郵電出版社,2005.</p><p>  何光明,楊靜宇.《C語言程序設(shè)計與應(yīng)用開發(fā)》.06年版.北京:清華大學(xué)出版社,2006.</p

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論