欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      c語言程序貪吃蛇課程設計報告

      時間:2019-05-11 22:56:27下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《c語言程序貪吃蛇課程設計報告》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《c語言程序貪吃蛇課程設計報告》。

      第一篇:c語言程序貪吃蛇課程設計報告

      高級語言程序設計 課程設計報告

      Experiment Designing reporter 課程名稱:高級語言程序設計

      英文名稱

      : C Program Experiment Designing 專業(yè):自動化 111 學號: XXX 姓名: XXX 指導教師: XXX

      日期:

      2012 年 6月 17日至 2011 年6 月 20 日 山東工商學院信電學院 一:課程設計內容 程序功能介紹

      貪吃蛇游戲是一個經(jīng)典小游戲,深受眾多玩家喜愛,其規(guī)則是:一條蛇在封閉圍墻里,圍墻里隨機出現(xiàn)一個食物,通過按鍵盤四個光標鍵控制蛇向上下左右四個方向移動,蛇頭撞倒食物,則食物被吃掉,蛇身體長一節(jié),同時記10分,接著又出現(xiàn)食物,等待蛇來吃,如果蛇在移動中撞到墻或身體交叉蛇頭撞倒自己身體游戲結束。此游戲不僅能鍛煉人的思維敏捷性,而且還可以提高玩家的邏輯判斷能力。設計思路

      我們小組稱設計本次課題——貪吃蛇的思路為“貪快速上手貪吃蛇三步曲”: 第一步:

      尋找到一個真正可以運行的已用C編好的貪吃蛇。因為我們畢竟從未看到過用C編游戲的程序,讓我們兩手一抹黑的開始編寫是有一定的困難的,如果我們自己找一個已經(jīng)設計好的程序,以此為跳板實現(xiàn)我們想要達到的效果,那么肯定是高效的。所以我們組統(tǒng)一決定,去尋找一個可以運行的C編譯的貪吃蛇。第二步:

      運行游戲并了解游戲程序。

      我們認為,只有你運行并了解一個游戲,才能知道游戲里需要什么樣的改進和創(chuàng)新,如果你自己本身就沒玩過這個游戲,那么你就是再有技術,你也永遠改進和改編不了一個游戲,因為你根本不知道你在干什么。

      同樣重要的是了解游戲程序。因為只有看懂了程序,才能實現(xiàn)對他的改編,才能游刃有余。第三步:

      尋找模塊并分類,而后進行改編。

      尋找到你想要改變的游戲內容的控制模塊,比如,我想要增加一堵墻,那么就應該找到 void DrawK(void){

      setcolor(11);

      setlinestyle(SOLID_LINE,0,THICK_WIDTH);for(i=200;i<=500;i+=10)

      rectangle(i,200,i+10,209);} 然后要找到:改變蛇初始長度、顏色、初始位置的模塊,改變蘋果出現(xiàn)位置的模塊,讓蛇見墻死的模塊,讓蛇吃蘋果加長的模塊???.并且進行分類,這樣下次再想實現(xiàn)某個目標時,可以一目了然的進行改編。對于找到的模塊如何進行改編呢?怎么才能知道某個數(shù)值或函數(shù)代表什么呢? 我們有兩個方法:

      1.)看名字,比如snakecolor(),很明顯他的意思是蛇的顏色。2.)控制變量猜想,比如設置墻的時候for(i=200;i<=500;i+=10);

      rectangle(i,300,i+10,309);中的200,500,300,209 代表什么呢?我們可以猜想:它很像是坐標上的(x,y)的格式,是不是呢?可可以先讓其他數(shù)值不變,只讓309改變,改變后發(fā)現(xiàn)上面的墻變粗了,由此可見這個數(shù)字控制的是一堵墻的最下面一行的坐標。

      關于該程序的相關分析思路答題模板:

      1.貪吃蛇程序流程圖如下:

      二.貪吃蛇程序的改編:

      經(jīng)過小組成員的認真研究我們對其進行了如下改編 第一步加墻 void DrawK(void){ /*setbkcolor(MAGENTA);*/

      setcolor(5);//

      可以改變顏色

      setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設置線型*/ 橫向上的墻:

      for(i=100;i<=600;i+=10)// 本行代表行坐標上:100代表墻的初始位置,i<=600代表墻的結尾。

      {

      rectangle(i,60,i+10,69);//本行代表縱坐標上:60代表墻的最上面一行的位置,69代表墻最下面一行的位置。69-60=9,9代表墻塊的厚度 } 縱向上的墻:

      for(i=100;i<=400;i+=10)//本行代表縱坐標上:100代表墻的初始位置,i<=400代表墻的結尾

      {

      rectangle(100,i,109,i+10);//本行代表縱坐標上:100代表墻的最左邊面一行的位置,69代表墻最右面一行的位置。69-60=9,9代表墻塊的寬度

      } 我們認為本模塊最重要的是for語句控制的坐標代表的意思。只要明白了坐標的意思,就可以實現(xiàn)對游戲的改編。

      第二步就是進行對新加入的墻蛇是否撞上死亡

      讓蛇撞墻死

      if(snake.x[0]>190&&snake.x[0]< 510&&snake.y[0]>=200&&

      snake.y[0]<=215)

      /*其中,對x,y范圍的控制,實際是對蛇撞擊的死亡區(qū)域的限制。*/

      {

      GameOver();/*本次游戲結束*/

      snake.life=1;/*蛇死*/

      } 相應的新添加的墻。

      for(i=200;i<=500;i+=10)/*畫圍墻*/

      {

      rectangle(i,200,i+10,209);/*指定位置*/ 第三步食物的定點出現(xiàn)

      if(food.yes==1)/*需要出現(xiàn)新食物*/ 這里說明一下:rand()產(chǎn)生0-65535的數(shù),在limits.h里有定義%400后產(chǎn)生一個0-399的數(shù)+60 則為 60 –459,即:%400+60意思是在60~399之間隨機產(chǎn)生一個數(shù)。

      {

      food.x=rand()%400+60;

      food.y=rand()%350+60;

      while(food.x%10!=0)/*食物隨機出現(xiàn)后必須讓食物能夠在整格內,這樣才可以讓蛇吃到*/

      food.x++;

      while(food.y%10!=0)

      food.y++;

      food.yes=0;/*畫面上有食物了*/

      } 如果將food.x=(常數(shù)a)那么食物就會出現(xiàn)在x=a行的隨機列,對于food.y=(常數(shù)b)那么食物就出現(xiàn)在y=b列的隨機行。

      第四步對食物墻壁的顏色以及對蛇的運動速個性化調節(jié)

      setcolor(4);// 對顏色的調整 int gamespeed=50000;/*游戲速度自己調整*/

      通過改變變量的值,就可以個性化選擇自己喜歡的顏色,這將是一場別開生面的游戲界面。* 紅色代表解析淺藍代表提示 三.課程設計總結 有言曰:“實踐出真知”,在這幾天的課程設計實踐中,我們組三人真正的體會到了這句話的真諦。

      在經(jīng)歷了一學期的C語言學習后,我們從以往的“紙上談兵”直接過渡到“實際作戰(zhàn)”。我們實現(xiàn)了讓靜態(tài)的程序變成動態(tài)的游戲效果,雖然我們只是改編了一下別人做好的程序,但我們同樣由此獲益匪淺,感觸頗深,當然也發(fā)現(xiàn)了許多自己的不足。

      首先,在我們剛剛進行第一步“尋找程序”的時候,就被擱淺了,因為我們發(fā)現(xiàn),在網(wǎng)上能找到一個真正符合我們使用標準的程序很難,就是找到了幾個也沒有能運行它們的程序。我們花費了前兩天的時間來尋找能夠使用的程序和軟件,但最后還是一無所獲,正當我們一籌莫展的時候,我們的導師——楊老師給我們帶來了曙光,使得我們在黑暗中找到了希望的光明,楊老師給我們傳來了一個上屆師哥做好的程序,并且把它的運行軟件也給了我們,這對我們來說無疑是雪中送炭,得到這個程序后,我們三個人看到了C語言運行一個游戲的流程和方法,我們腦中也大概有了一個思路。我們三個人以此程序為跳板,直接開始對程序模塊進行挑選,因為我們已經(jīng)浪費了兩天,所以我們決定進行分工作業(yè),分別去尋找:筑墻模塊,加蘋果模塊,撞墻死模塊。最后我們用了一下午時間完成了三大步中的前兩大步和第三步的第一部分,剩下的就是最重要而充滿挑戰(zhàn)的改編了,從以上的操作中,讓我們明白了找對一個平臺的重要性,這個平臺就是老師給我們的程序,就是我們的前進方向。沒有了方向了的征程,一開始就是個錯誤。在我們尋找程序模塊的時候,我們對于程序中的很多東西都是模模糊糊的概念,比如struck是什么,比如for語句的使用,以及for語句的循環(huán)體是什么,當然我們也發(fā)現(xiàn)了定義字符在長的程序中的方便與重要性。還有就是我們發(fā)現(xiàn)程序在編寫時的規(guī)范性很重要,比如同級別花括號的位置的對應,對應好了,模塊就好找,對應不好就很亂。還有定義函數(shù)及變量的時候,函數(shù)名字和變量名最好是見名知意,比如我們所看的程序中,gamespeed,snakecolour,food.....在最后的攻堅階段,為了實現(xiàn)對程序的改編,我們使用控制變量猜想法是正確的選擇,比如設置墻的時候for(i=200;i<=500;i+=10);

      rectangle(i,300,i+10,309);中的200,500,300,209 代表什么呢?我們猜想:它很像是坐標上的(x,y)的格式,是不是呢?我們先讓其他數(shù)值不變,只讓309改變,改變后發(fā)現(xiàn)上面的墻變粗了,由此我們知道這個數(shù)字控制的是一堵墻的最下面一行的坐標。我們用這個方法知道了其他很多數(shù)值的用途。我們用這種方法先是知道了如何設置一堵墻,在我們欣喜設置一堵墻以后才發(fā)現(xiàn):蛇撞了墻后不死。在我們進行了全局來看以后才知道,原來設計一堵墻,都要再設計一個if語句來使得蛇在這個范圍內會死亡。并且我們發(fā)現(xiàn)在設計這個if語句的時候,不僅要計算好墻的坐標,而且還要用好邏輯語言(&&,||!)同時語句的運算順序也很重要。剛一開始我們忽略的&&和關系運算符級別的高低,使得我們設計的墻,總是撞不死蛇,為此我們很是惱火,著急的組員還在這里發(fā)生了點小摩擦,由此可見C語言的嚴謹性!

      最后我們又通過在網(wǎng)上查找信息,知道了隨機數(shù)發(fā)生器randomize()的用法:rand()=x%+d 意思是說在d~(x-1)之間隨機產(chǎn)生一個數(shù)字。我們很自然的聯(lián)想到,如果把food.x等于常數(shù)a;把food.y等于一個;x%+d的隨機數(shù),那不就能固定只在某一行出現(xiàn)蘋果了嗎?所以我們覺得,充分利用手邊的資源也是很重要的,畢竟C語言很高深,課本上的東西總是有限的,要想知道更多的東西還需多練習,多查閱資料。總之:革命尚未成功,通知還需努力?。∷膫€人感受: 湯X:

      就我個人而言,這次課程設計,我覺得我最大的收獲就是:我明白了,我們其實真的沒那么厲害,我們真的還有很多東西不會,我們真的連課本上的基本東西都沒掌握,課本上的東西,真的也只是C語言這個大海中的一滴水而已。而在我本人還沒有掌握好課本的知識點的情況下,做起這個程序自然很費事,一個簡單的課本P293講到的struct結構體,我一開始竟然忘記它是什么意思,不知道它是什么,就更不用談怎么用它了。還有邏輯語言的使用。我想,現(xiàn)在肯定有很多同學還不知道邏輯運算的優(yōu)先次序吧?這個問題我本人在使用邏輯語言的時候也不太會,還查看了書。像這些小的知識點,我個人認為如果掌握不好的話,是不可能讓整個大程序運行起來的。還有比如我在遇到程序顯示“else多余”的警告時候不不知所措,問了老師才知道是if()后面加了“;”而且if沒有用“{}”來固定范圍,這個錯誤原因是分號使得if語句結束了,孤立的else當然是多余的了。一個小小的分號使得程序無法運行,由此可見在今后的編程中,一定要注意謹慎,仔細。同時要注意記住平時編程的時候,出現(xiàn)的錯誤指示是什么意思。比如這次的“else多余”就是因為if后多了分號。還有在編程時候,書寫一定要規(guī)范,特別是if語句的花括號的位置要對應起來,因為位置決定范圍。注意定義變量和函數(shù)要使用規(guī)范的英文單詞,這樣才能見名知意,為以后修改找變量節(jié)省時間。對于這次課題中,“設計一個墻,就要對應一個函數(shù)舍得蛇撞墻死”,讓我明白,C語言程序中各部分的聯(lián)系性,牽一發(fā)而動全身,所以在編程時一定要注意全局的把握。我們最后還要說說在編程中,好好利用網(wǎng)絡資源,因為課本里的東西總是有限的,而C語言又那么高深,像隨機數(shù)發(fā)生器,還有顏色的定都是我第一次接觸,這些東西的用處可是頗大,以后一定好好學習。多看,多練,多總結。最后還要感謝指導老師,楊老師對我學習的幫助和指導。徐XXX: 剛開始拿到題目時候什么也不會一片茫然,從網(wǎng)上找了一個程序一看,太嚇人了,這么長怎么看啊,而且還是錯誤的。沒辦法只能硬著頭皮去改了,但是在改的過程中才發(fā)現(xiàn)其實c語言沒有想象的那么難而且還很有意思,只是自己平時沒有好好學所以在改的時候非常吃力,有很多簡單的知識都不知道,沒有記住。沒辦法只能借助與課本了。但是幾天下來發(fā)現(xiàn)自己已經(jīng)不再像以前那樣是個菜鳥了,雖然很多知識還沒掌握。同時在編改程序的時候切記不能煩躁要靜心慢慢來,好幾次自己都因心燥出現(xiàn)了很多不該出現(xiàn)的錯誤浪費了很多時間。

      對鍵盤的熟悉在編程時也是很重要的,自己在寫的時候往往就是跟一指禪差不多眼睛盯著鍵盤打,打錯了也不知道最后導致整個程序都是錯誤的,就因為一個打錯了一個字母。

      總的來說這次課程設計收獲很多,也知道了自己的不足,在以后的學習中要多實踐,實踐很能提高自己的能力。劉XX:

      4天的C語言課程設計上機學習讓我感受頗多,每天都發(fā)現(xiàn)新的問題,又不得不絞盡腦汁解決問題,心情就像正弦函數(shù),隨著問題的出現(xiàn)和解決一起一伏。剛開始接觸貪吃蛇的C語言成尋時,看著C-free上面出現(xiàn)的有十幾個錯誤的程序,一片茫然不知所措。只能繼續(xù)在網(wǎng)上搜索錯誤較少的程序,并結合書上的基礎知識查看錯誤所在,最終發(fā)現(xiàn)是不能在C-free中運行,只能在mytc5.6上運行。

      作為小組中唯一的女生,明顯感覺有壓力,打字速度不如另外兩個男生,對游戲和程序的敏感也不如他們強,有種小小的挫敗感。旁邊小組的同學也給我很大的壓力。他們自己編寫程序,我很佩服他們,越是這樣想。心里越著急,越不能解決問題,每當感覺有壓力的時候,就提醒自己心靜,認真的看程序。在學習過程中,深深的發(fā)現(xiàn)了自己的不足之處,對于C語言,只學了一點點皮毛東西,想要學好C語言,編好程序,還要付出很多的努力,還要用更多的時間來學習C語言這門深奧的學科。現(xiàn)在只能借用別人已經(jīng)寫好的程序,在別人的基礎上,一點點進步和學習,比如程序中筑墻,需要仿照已有的程序,結合邏輯運算,關系運算和數(shù)學知識才能讓蛇撞墻死。蘋果位置的出現(xiàn)也同樣需要進一步的搜索,通過更改食物的橫縱坐標以及出現(xiàn)的概率來確定食物的位置。編寫程序時,也發(fā)現(xiàn)書上的東西對于程序的某些部分來說,沒有什么作用,顯得太淺顯,想要實現(xiàn)老師給出的一些要求,還需要實踐,通過上機學習,自己摸索才能成功。一次次修改,一次次失敗,就像貪吃蛇想方設法吃蘋果會Game over,我們只有認真學好基礎理論,并結合實踐經(jīng)驗才會取得進步。

      在這次學習過程中,我很感謝我的組員,雖然有時我們的意見出現(xiàn)分歧,但是通過大家的共同努力,我們收獲了很多,一起討論,一起研究怎樣解決問題,對老師提出的要求個個擊破,我們擰成一股繩共同應對問題,讓我感受了團隊的力量希望在以后的學習過程中,我們依然能夠互相幫助,共同進步。

      五 課程設計修改后的程序.加墻

      for(i=200;i<=500;i+=10)/*畫圍墻*/

      {

      rectangle(i,200,i+10,209);/*指定位置1*/

      } for(i=120;i<=200;i+=10)/*畫圍墻*/

      {

      rectangle(100,i,109,i+10);/*指定位置2*/

      } 2.指定位置加蘋果

      if(food.yes==1)/*需要出現(xiàn)新食物*/

      {

      food.x=rand()60;

      food.y=rand()%200+60;

      while(food.x%10!=0)

      food.x++;

      while(food.y%10!=0)

      food.y++;

      food.yes=0;3.指定地方撞墻死

      if(snake.x[0]>190&&snake.x[0]< 510&&snake.y[0]>=200&&

      snake.y[0]<=215)

      {

      GameOver();/*本次游戲結束*/

      snake.life=1;/*蛇死*/

      } if(snake.x[0]>90&&snake.x[0]<110&&snake.y[0]>=110&&snake.y[0]<=215)

      {

      GameOver();/*本次游戲結束*/

      snake.life=1;/*蛇死*/

      }

      }

      第二篇:貪吃蛇C語言課程設計報告

      貪吃蛇游戲程序設計報告

      貪吃蛇游戲設計

      姓名: 張力

      學號: 1002032

      3完成日期: 月 日1

      貪吃蛇游戲程序設計報告

      一、設計目的

      貪吃蛇游戲程序功能的實現(xiàn)主要是建立在二維數(shù)組和圖形界面的應用上,通過編寫游戲程序能夠熟悉掌握相關數(shù)組和圖形函數(shù)的運用,提高編程水平,增加編程的興趣

      二、總體設計

      主函數(shù)

      圖形驅動Init 畫界面DrawK 游戲具體過程GamePlay 圖形結束Close

      游戲結束GameOver 輸出成績PrScore

      三、詳細設計(項目成員及分工、模塊功能說明(如函數(shù)功能、入口及出口參數(shù)說明,函數(shù)調用關系描述等)

      ①主函數(shù)main():

      定義使用的常數(shù),全局變量及函數(shù)原型說明,并調用Init()函數(shù)初始化圖形系統(tǒng);然后調用DrawK()函數(shù)畫界面,調用GamePlay()函數(shù)實現(xiàn)游戲的具體過程,游戲結束后調用Close()函數(shù)關閉圖形系統(tǒng)結束程序。

      ②畫界面函數(shù)DrawK():

      主界面是一個密封的圍墻,用兩個循環(huán)語句分別在水平方向和垂直方向輸出連續(xù)的寬度和高度均為10個單位的矩形小方塊,設置成淡青色,背景顏色為黑色。

      ③游戲具體過程函數(shù)GamePlay():

      算法過程:

      a.設置初始值。為防止食物出現(xiàn)在一個位置上,要設置隨機數(shù)發(fā)生器,真正產(chǎn)生隨機數(shù)。初始時,蛇只有蛇頭,設定一個開始方向;

      b.循環(huán)執(zhí)行,直到按Esc鍵退出; c.沒有按鍵的情況下,循環(huán)執(zhí)行。

      如果沒有食物,隨機出現(xiàn)食物;食物的隨機出現(xiàn)要確保它的位置在10的倍數(shù)位置上,因為蛇的坐標都是以10為模的;如果有食物,則顯示食物,蛇

      貪吃蛇游戲程序設計報告

      移動身體,根據(jù)蛇的方向改變坐標值,并判斷蛇是否撞到了墻或自己吃到了自己,如果出現(xiàn)這兩種情況之一,則蛇死;調用游戲結束函數(shù)GamePlay(),結束本次游戲;

      判斷蛇吃到食物的方法是蛇頭的坐標和食物的坐標都相等;如果蛇吃到了食物,蛇身體長一節(jié),數(shù)組元素增加一個,身體節(jié)數(shù)、分數(shù)都進行相應的改變。

      在新位置畫出蛇。采用的方法是每次移動的時候從最后一節(jié)開始到倒數(shù)第二節(jié),將前一節(jié)的坐標賦值給后一節(jié)的坐標,移動后只要把最后一節(jié)用背景色去除即可。

      D.如果有按鍵,則識別按鍵值。如果按鍵為Esc鍵則結束游戲,程序運行結束;如果所按鍵為方向鍵,則根據(jù)該鍵改變蛇方向的變量direction的值,相反方向鍵無效。

      ④游戲結束函數(shù)GameOver():

      游戲結束,清除屏幕,調用輸出分數(shù)函數(shù)PrScore(),并顯示游戲結束。

      ⑤輸出分數(shù)函數(shù)PrScore():

      在指定位置利用sprintf()將整數(shù)轉換為字符串,用outtextxy()輸出,、bar()函數(shù)的應用是為了覆蓋原來的值。

      ⑥圖形結束函數(shù)Close():

      在顯示游戲結束信息的畫面時,按任意鍵關閉圖形系統(tǒng),程序結束。

      四、調試與測試:調試方法,測試結果的分析與討論,測試過程中遇到的主要問題和采取的解決措施等;

      將源文件在TC3.0環(huán)境下調試運行,前期發(fā)現(xiàn)錯誤為游戲界面靜止。

      五、源程序清單及執(zhí)行結果:

      #include #include #include #include #include #include #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000

      貪吃蛇游戲程序設計報告

      #define UP 0x4800 #define Esc 0x011b #define N 200 /*定義全局變量*/ int i,key;int score=0;/*得分*/ int gamespeed=50000;/*游戲速度可以自己調整*/ struct Food { int x;/*定義食物的橫坐標*/ int y;/*定義食物的縱坐標*/ int yes;/*判斷是否要出現(xiàn)食物的變量*/ }food;/*食物的結構體*/ struct snake { int x[N];int y[N];int node;/*蛇的節(jié)數(shù)*/ int direction;/*蛇的移動方向*/ int life;/*蛇的生命,0活著,1死亡*/ }snake;

      void Init(void);/*圖形驅動*/ void Close(void);/*圖形結束*/ void DrawK(void);/*開始畫面*/ void GameOver(void);/*結束游戲*/ void GamePlay(void);/*玩游戲的具體過程*/ void PrScore(void);/*輸出成績*/

      /*圖形驅動*/ void Init(void){ int gdriver=DETECT,gmode;

      initgraph(&gdriver,&gmode,“D:TC30LIB”);}

      /*開始畫面,左上角坐標為(50,40),右下角坐標為(610,460)的圍墻*/ void DrawK(void){ setbkcolor(LIGHTGREEN);setcolor(11);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;i<=450;i+=10){

      rectangle(50,i,59,i+10);/*左邊*/

      rectangle(601,i,610,i+10);/*右邊*/ } }

      /*玩游戲的具體過程*/ void GamePlay(void){ randomize();/*隨機數(shù)發(fā)生器*/ food.yes=1;/*1表示需要出現(xiàn)新食物,0表示已經(jīng)存在食物*/ snake.life=0;/*蛇還活著^ ^*/ snake.direction=1;/*方向向右*/ snake.x[0]=100;snake.y[0]=100;/*蛇頭*/ snake.x[1]=110;snake.y[1]=100;snake.node=2;/*蛇的節(jié)數(shù)為2*/ PrScore();/*輸出得分*/ while(1)/*可以重復玩游戲,按Esc鍵結束*/ {

      While(!kbhit())/*在沒有按鍵的情況下,蛇自己移動身體*/

      {

      if(food.yes==1)/*需要出現(xiàn)新食物*/

      {

      food.x=rand()%400+60;

      food.y=rand()%350+60;

      while(food.x%10!=0)/*食物隨機出現(xiàn)后必須讓食物能夠在整格內,這樣才可以讓蛇吃到*/

      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);

      }

      for(i=snake.node-1;i>0;i--)/*蛇一個節(jié)一個節(jié)地往前移*/

      {

      snake.x[i]=snake.x[i-1];

      貪吃蛇游戲程序設計報告

      snake.y[i]=snake.y[i-1];

      }

      /*1,2,3,4表示右左上下四個方向,通過判斷這個來移動蛇頭*/

      switch(snake.direction)

      {

      case 1:snake.x[0]+=10;break;

      case 2:snake.x[0]-=10;break;

      case 3:snake.y[0]-=10;break;

      case 4:snake.y[0]+=10;break;

      }

      /*從蛇的第四節(jié)開始判斷蛇有沒有自己把自己吃掉*/

      for(i=3;i

      {

      if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])

      {

      GameOver();/*顯示游戲結束*/

      snake.life=1;/*蛇死了T T!*/

      break;

      }

      }

      If(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)/*判斷蛇是否撞到墻*/

      {

      GameOver();/*游戲結束*/

      snake.life=1;/*蛇死了T T!*/

      }

      if(snake.life==1)/*如果蛇死了就跳出內循環(huán),重新開始*/

      break;

      if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃掉食物啦!*/

      {

      setcolor(0);/*把畫面上的食物顏色覆蓋掉*/

      rectangle(food.x,food.y,food.x+10,food.y-10);

      snake.x[snake.node]=-20;

      snake.y[snake.node]=-20;

      /*新的一節(jié)先放在看不見的位置,下次循環(huán)就取前一節(jié)的位置*/

      snake.node++;/*蛇的身體長一節(jié)*/

      food.yes=1;/*畫面上需要出現(xiàn)新的食物*/

      score+=10;/*加十分!*/

      PrScore();/*輸出新得分*/

      }

      setcolor(4);/*畫出蛇*/

      for(i=0;i

      貪吃蛇游戲程序設計報告

      rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);

      delay(gamespeed);

      setcolor(0);/*用黑色去除蛇的最后一節(jié)*/

      rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);}/*endwhile(!kbhit)*/ if(snake.life==1)/*如果蛇死了就跳出循環(huán)*/

      break;key=bioskey(0);/*接收按鍵*/ if(key==Esc)/*按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;}/*endwhile(1)*/

      /*游戲結束*/ void GameOver(void){ cleardevice();/*清除屏幕*/ PrScore();/*輸出得分*/ setcolor(RED);settextstyle(0, 0,4);outtextxy(200,200,“GAME OVER”);/*顯示游戲結束*/ getch();}

      void PrScore(void)/*輸出成績*/ { char str[10];setfillstyle(SOLID_FILL,YELLOW);bar(50,15,220,35);setcolor(6);settextstyle(0,0,2);sprintf(str,“score:%d”,score);outtextxy(55,20,str);}

      貪吃蛇游戲程序設計報告

      void Close(void)/*圖形結束*/ { getch();closegraph();}

      void main(void)/*主函數(shù)*/ { Init();DrawK();GamePlay();Close();} 8

      第三篇:貪吃蛇課程設計總結報告書

      貪吃蛇課程設計總結報告書

      110200第7組

      組員:李軼萌 劉浩 趙鵬

      一.需求分析

      (1)功能與數(shù)據(jù)需求:題目要求的功能(基本功能)與 擴展功能 基本功能:貪吃蛇的蛇的移動(上下左右)

      隨機出現(xiàn)食物

      蛇吃過后變長 記分功能

      撞到自己或邊界就失敗等基礎的功能

      擴展功能:難易度的選擇 背景音樂 空格暫停功能

      容錯功能(是否重新開始/結束游戲)

      (2)開發(fā)環(huán)境

      Vc6.0

      二.概要設計(1)主要數(shù)據(jù)結構(2)程序總體結構(3)各模塊函數(shù)說明 三 詳細設計(1)主函數(shù)部分(2)游戲部分

      (3)判斷分數(shù),是否繼續(xù)部分 四.測試

      五.應用程序功能的詳細說明 規(guī)則:貪吃蛇在不首尾相碰且不碰邊界的情況下,盡可能多的吃掉隨機出現(xiàn)的食物,多吃多得分而益智的小游戲。

      操作:上w下s左a右d 暫停 空格 退出或重新游戲肯定y 否定 n 六.總結提高(1)課程設計總結

      (2)開發(fā)中遇到的問題和解決方法

      開發(fā)之初,大家對這個程序都不是很了解,所以剛開始只追求把文件做出來,可以運行就可以了。但是后來發(fā)現(xiàn)自己做出來的東西連自己都提不起興趣,單純只有基本功能功能,沒有記分功能,也沒有暫停等等,畫片也很糟糕,大小比例也有些失調,被老師戲稱為“貪吃螞蟻”。后來經(jīng)過調試和自主創(chuàng)新,我們發(fā)現(xiàn)我們其實還是可以加入一些人性化的東西的。

      (3)對自己完成課設完成情況的評價 附錄:程序源代碼

      第四篇:C語言課程設計程序

      #include #include #include struct student { int num;char name[15];

      //定義學生結構體,st數(shù)組。

      int score[5];float jqave;int rank;}st[27];

      struct kecheng { int num;char kcname[20];

      //定義課程結構體,course數(shù)組.float xuefen;float biaozhuncha;int youxiu;int lianghao;int zhongdeng;int jige;int bujige;

      }course[5];

      void readdata1(){

      int i,j;

      char str1[100];

      FILE *f1;

      f1=fopen(“c:xinji110213.txt”,“r”);

      fgets(str1,100,f1);// printf(“%-s”,str1);

      for(i=0;i<27;i++)

      {

      fscanf(f1,“%d%s”,&st[i].num,st[i].name);

      // printf(“%-4d%-10s”,st[i].num,st[i].name);

      for(j=0;j<5;j++)

      {

      fscanf(f1,“%d”,&st[i].score[j]);// printf(“%-9d”,st[i].score[j]);}

      // printf(“n”);}

      fclose(f1);}

      void readdata2(){

      int k;

      char str2[100];

      FILE *f2;

      f2=fopen(“c:xj02kc.txt”,“r”);

      fgets(str2,100,f2);// puts(str2);

      for(k=0;k<5;k++)

      {

      fscanf(f2,“%d%s%f”,&course[k].num,course[k].kcname,&course[k].xuefen);

      // printf(“%-8d%-10s%2.1fn”,course[k].num,course[k].kcname,course[k].xuefen);

      }

      fclose(f2);} void jqave(){ int i,j;float s=0,sum=0;for(i=0;i<27;i++)

      {

      for(j=0;j<5;j++)

      {

      s+=course[j].xuefen;

      sum+=st[i].score[j]*course[j].xuefen;

      }

      st[i].jqave =sum/s;

      } }

      void ranking()

      { int i,j;

      for(i=0;i<27;i++){

      st[i].rank=1;

      for(j=0;j<27;j++)

      if(st[i].jqave

      st[i].rank=st[i].rank+1;} }

      void paiminghoudechengji(){ int i,j;FILE *fp;fp=fopen(“c:MC110213.txt”,“w”);printf(“ 名次 學號

      姓名

      數(shù)學分析

      高等代數(shù)

      C語言

      大學物理

      大學藝術

      加權平均分 n”);fprintf(fp,“ 名次 學號

      姓名

      數(shù)學分析

      高等代數(shù)

      C語言

      大學物理

      大學藝術

      加權平均分 n”);

      for(i=0;i<27;i++)

      {

      printf(“%3d%5d%8s”,st[i].rank,st[i].num,st[i].name);

      fprintf(fp,“%3d%5d%8s”,st[i].rank,st[i].num,st[i].name);

      for(j=0;j<5;j++)

      {

      printf(“%10d”,st[i].score[j]);

      fprintf(fp,“%10d”,st[i].score[j]);

      }

      printf(“%12.2fn”,st[i].jqave);

      fprintf(fp,“%12.2fn”,st[i].jqave);} fclose(fp);}

      void xiechengji(){ int j;FILE *fp;fp=fopen(“c:xj1110213.txt”,“w”);fprintf(fp,“ 編號

      課程名稱

      課程學分

      標準差

      優(yōu)秀

      良好

      中等

      及格

      不及格

      n”);printf(“ 編號

      課程名稱

      課程學分

      標準差

      優(yōu)秀

      良好

      中等

      及格

      不及格

      n”);for(j=0;j<5;j++)

      {

      printf(“%3d%15s%10.2f”,course[j].num,course[j].kcname,course[j].xuefen);fprintf(fp,“%3d%15s%10.2f”,course[j].num,course[j].kcname,course[j].xuefen);

      printf(“%10.1f%8d%8d%8d%8d%6dn”,course[j].biaozhuncha,course[j].youxiu,course[j].lianghao,course[j].zhongdeng,course[j].jige,course[j].bujige);

      fprintf(fp,“%10.1f%8d%8d%8d%8d%6dn”,course[j].biaozhuncha,course[j].youxiu,course[j].lianghao,course[j].zhongdeng,course[j].jige,course[j].bujige);

      } fclose(fp);}

      void pingjunfen(){ int i,j;

      for(j=0;j<5;j++)

      {

      float zongfen=0,pingjunfen=0;

      for(i=0;i<27;i++)

      zongfen+=st[i].score[j];

      pingjunfen=zongfen/27;

      } }

      void biaozhuncha(){

      int i,j;

      for(j=0;j<5;j++){

      float zongfen=0,pingjunfen=0,x=0;

      for(i=0;i<27;i++)

      zongfen+=st[i].score[j];

      pingjunfen=zongfen/27;

      for(i=0;i<27;i++)

      x+=(st[i].score[j]-pingjunfen)*(st[i].score[j]-pingjunfen);

      course[j].biaozhuncha=(float)sqrt((x/27));

      } }

      void count(){

      int i,j;

      for(i=0;i<5;i++)

      {

      course[i].youxiu=0,course[i].lianghao=0,course[i].zhongdeng=0,course[i].jige=0,course[i].bujige=0;

      for(j=0;j<27;j++)

      {

      if(st[j].score[i]<60)

      course[i].bujige++;

      else if(st[j].score[i]<=69)

      course[i].jige++;

      else if(st[j].score[i]<=79)

      course[i].zhongdeng++;

      else if(st[j].score[i]<=89)

      course[i].lianghao++;

      else

      course[i].youxiu++;

      } } }

      void chengjitiao(){

      int i,j;FILE *fp;fp=fopen(“c:cjt110213.txt”,“w”);do

      { printf(“請輸入你要查詢的編號

      退出請按零”);

      scanf(“%d”,&i);

      fprintf(fp,“ 編號

      姓名

      數(shù)學分析

      高等代數(shù)

      C語言

      大學物理

      大學藝術

      加權平均分

      名次n”);printf(“ 編號

      姓名

      數(shù)學分析

      高等代數(shù)

      C語言

      大學物理

      大學藝術

      加權平均分

      名次n”);if(i>=0&&i<=26)fprintf(fp,“%3d%10s”,st[i-1].num,st[i-1].name);

      printf(“%3d%10s”,st[i-1].num,st[i-1].name);for(j=0;j<5;j++){

      printf(“%9d”,st[i-1].score[j]);

      fprintf(fp,“%9d”,st[i-1].score[j]);} printf(“%12.2f%8dn”,st[i-1].jqave,st[i-1].rank);fprintf(fp,“%12.2f%8dn”,st[i-1].jqave,st[i-1].rank);fclose(fp);} while(i>0&&i<28);

      }

      void bujigexueshengmingdan(){

      int i,j;

      printf(“不及格學生名單如下:n”);printf(“ 學號

      姓名

      不及格課程

      分數(shù)

      n”);for(i=0;i<27;i++){

      for(j=0;j<5;j++)

      if(st[i].score[j]<60)

      {printf(“%3d%12s”,st[i].num,st[i].name);

      printf(“%15s%8dn”,course[j].kcname,st[i].score[j]);

      // printf(“

      平均分”);

      // printf(“%10.2f

      名次%8dn”,st[i].jqave,st[i].rank);

      }

      } }

      void youdeng(){ int i,k;printf(“ 優(yōu)等生名單如下n”);printf(“編號

      姓名

      數(shù)學分析

      高等代數(shù)

      C語言 大學物理 大學藝術 加權平均分

      名次n”);for(i=0;i<27;i++){ // for(j=0;j<5;j++)

      if(st[i].jqave>=90||st[i].rank<=3)

      {

      printf(“%2d%10s”,st[i].num,st[i].name);

      for(k=0;k<5;k++)

      printf(“%9d”,st[i].score[k]);

      printf(“%10.2f%8dn”,st[i].jqave,st[i].rank);

      }

      else;

      } }

      void caidan()

      { loop: printf(“

      &&簡易教學管理系統(tǒng)&&n”);

      printf(“press 1 for

      排名后的成績表

      !n”);

      printf(“press 2 for

      各科成績情況!n”);

      printf(“press 3 for

      成績條!n”);

      printf(“press 4 for

      不及格學生名單!n”);

      printf(“press 5 for

      優(yōu)等生名單!n”);

      printf(“press 0 for

      退出n”);

      int t;

      scanf(“%d”,&t);

      switch(t)

      {

      case 1:

      paiminghoudechengji();break;

      case 2:

      xiechengji();break;

      case 3:

      chengjitiao();break;

      case 4:

      bujigexueshengmingdan();break;

      case 5:

      youdeng();break;

      case 0:

      exit(0);

      }

      goto loop;

      }

      void main(){

      readdata1();

      readdata2();

      jqave();

      ranking();

      pingjunfen();

      biaozhuncha();count();

      caidan();}

      第五篇:C語言課程設計數(shù)字鐘程序

      C語言數(shù)字鐘程序

      #include“stdio.h” void clock(int t);void main(){ int t,i,j,n;for(t=0;t<10;t++){ clock(t);sound(590);for(n=0;n<4;n++){ delay(100000000);} nosound();for(n=0;n<6;n++){ delay(100000000);} for(j=8;j<=18;j++){ for(i=1;i<=80;i++){ gotoxy(i,j);putchar(0);} } } } void clock(int t){ int i,j;textcolor(11);if(t==0){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<11;i++){ gotoxy(51,8+i);cprintf(“%c”,14);} for(j=0;j<11;j+=10){ for(i=0;i<8;i++){ gotoxy(59-i,8+j);cprintf(“%c”,14);} } } if(t==1){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} } if(t==2){ for(j=0;j<2;j++){ for(i=0;i<6;i++){ gotoxy(60-j*8,8+i+j*5);cprintf(“%c”,14);} } for(j=0;j<11;j+=5){ for(i=0;i<9;i++){ gotoxy(60-i,8+j);cprintf(“%c”,14);} } } if(t==3){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(j=0;j<11;j+=5){ for(i=0;i<8;i++){ gotoxy(59-i,8+j);cprintf(“%c”,14);} } } if(t==4){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<6;i++){ gotoxy(52,8+i);cprintf(“%c”,14);} for(i=0;i<8;i++){ gotoxy(59-i,13);cprintf(“%c”,14);} } if(t==5){ for(j=0;j<2;j++){ for(i=0;i<6;i++){ gotoxy(52+j*8,8+i+j*5);cprintf(“%c”,14);} } for(j=0;j<11;j+=5){ for(i=0;i<9;i++){ gotoxy(60-i,8+j);cprintf(“%c”,14);} } } if(t==6){ for(j=0;j<2;j++){ for(i=0;i<6;i++){ gotoxy(52+j*8,8+i+j*5);cprintf(“%c”,14);} } for(i=0;i<6;i++){ gotoxy(52,13+i);cprintf(“%c”,14);} for(j=0;j<11;j+=5){ for(i=0;i<9;i++){ gotoxy(60-i,8+j);cprintf(“%c”,14);} } } if(t==7){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<8;i++){ gotoxy(59-i,8);cprintf(“%c”,14);} } if(t==8){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<11;i++){ gotoxy(52,8+i);cprintf(“%c”,14);} for(j=0;j<11;j+=5){ for(i=0;i<8;i++){ gotoxy(59-i,8+j);cprintf(“%c”,14);} } } if(t==9){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<6;i++){ gotoxy(52,8+i);cprintf(“%c”,14);} for(j=0;j<2;j++){ for(i=0;i<8;i++){ gotoxy(59-i,8+j*5);cprintf(“%c”,14);} } } }

      下載c語言程序貪吃蛇課程設計報告word格式文檔
      下載c語言程序貪吃蛇課程設計報告.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內容。

      相關范文推薦

        數(shù)字鐘程序-c語言課程設計

        #include"stdio.h" void clock(int t); void main() { int t,i,j,n; for(t=0;t......

        C語言程序課程設計心得體會

        C語言程序課程設計心得體會 學習c語言不能停留在學習它的語法規(guī)則,而是利用學到的知識編寫c語言程序,解決實際問題。那么,現(xiàn)在就來看看,以下兩篇關于C語言程序課程設計心得體會......

        Windows程序課程設計報告

        window程序課程設計 簡單的學生信息 管理應用程序 學生姓名: 韓 慧 學生學號: 031140312 班 級: 031140--3 二〇一三年十二月 簡單的學生信息管理應用程序 一、設計目的、內......

        C語言課程設計報告

        C語言課程設計報告 班級: 10電子本1 學號: 10303033122 姓名: 指導老師: 方文森完成日期: 溫州大學城市學院課程設計 目 錄 1、課程設計目的和要求 ............................

        C語言課程設計報告

        C語言課程設計報告 Experiment Designing reporter 課程名稱 : C語言課程設計 英文名稱 : C Program Experiment Designing 專 業(yè) : 學 號 : 姓 名 : 指導教師 : 日 期: 2011......

        C語言課程設計報告(參考)

        C語言課程設計報告 專 業(yè):網(wǎng)絡工程 學 號:11102101 姓 名:步乾豪 提交日期:2012-6-21 C語言課程設計報告 【設計目的】 1.教學目的 本課程設計是學生學習完《C語言程序設計》課程......

        C語言課程設計報告

        目錄 1前言 .............................................................. 1 2正文 .............................................................. 1 2.1設計目的......

        C語言課程設計報告

        C語言課程設計報告 1. 實驗題目:職員信息管理系統(tǒng) 2. 數(shù)據(jù)結構:整型int,字符型char,長整型long,結構體及結構體數(shù)組 3. 源代碼 : #include"stdio.h" #include"string.h" #defin......