紙牌游戲課程設(shè)計_第1頁
已閱讀1頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計</b></p><p>  題 目: 紙牌游戲的設(shè)計與實現(xiàn) </p><p>  院 (系): </p><p>  年級專業(yè): </p><p>  姓 名:

2、 </p><p>  學 號: </p><p>  指導教師: </p><p><b>  課程設(shè)計任務(wù)書</b></p><p>  注:任務(wù)書由指導教師填寫。

3、</p><p>  課程設(shè)計(論文)指導教師成績評定表</p><p><b>  摘 要</b></p><p>  紙牌游戲是數(shù)據(jù)結(jié)構(gòu)大作業(yè)中比較經(jīng)典的一個大作業(yè),通過此課程設(shè)計能夠啟發(fā)我們的思維,對數(shù)據(jù)結(jié)構(gòu)中的函數(shù)有更加清楚的認識,建立我們對數(shù)據(jù)結(jié)構(gòu)的興趣,通過此課程設(shè)計設(shè)同時也能夠使我們對各方面的知識有了更加全面的認識與了解,豐富了

4、我們的知識面,擴展了我們的思維。通過課程設(shè)計的實踐,我們可以在程序設(shè)計方法、上機操作等基本技能和科學作風方面受到比較系統(tǒng)和嚴格的訓練。</p><p>  當前計算機軟件技術(shù)和網(wǎng)絡(luò)技術(shù)正飛速發(fā)展,軟件系統(tǒng)日趨大型化、復雜化,軟件對于一個計算機系統(tǒng)是至關(guān)重要的。因此社會對軟件開發(fā)者提出了比以往更高的要求,相應(yīng)的系統(tǒng)要求也有了很大的提高。本系統(tǒng)用C++作為程序語言,設(shè)計出的系統(tǒng)功能強大,操作方便靈活。</p&g

5、t;<p>  關(guān)鍵詞 紙牌游戲,數(shù)據(jù)結(jié)構(gòu),軟件,系統(tǒng)</p><p><b>  -Ⅰ-</b></p><p><b>  目 錄</b></p><p>  摘 要…………………………………………………………………………………………Ⅰ</p><p>  1需求分析…………

6、……………………………………………………………………………1</p><p>  1.1需求來源……………………………………………………………………………………1</p><p>  1.2設(shè)計目的……………………………………………………………………………………1</p><p>  1.3設(shè)計要求……………………………………………………………………………………1

7、</p><p>  2 功能需求描述…………………………………………………………………………………1</p><p>  3 總體設(shè)計………………………………………………………………………………………1</p><p>  3.1 設(shè)計思想…………………………………………………………………………………1</p><p>  3.2 系統(tǒng)模塊

8、結(jié)構(gòu)……………………………………………………………………………2</p><p>  3.3 系統(tǒng)總設(shè)計流程圖………………………………………………………………………2</p><p>  4 概要設(shè)計………………………………………………………………………………………4</p><p>  4.1抽象數(shù)據(jù)類型定義…………………………………………………………………………

9、4</p><p>  4.2本程序所包含模塊…………………………………………………………………………5</p><p>  4.3系統(tǒng)功能的實現(xiàn)…………………………………………………………………………5</p><p>  5 模塊設(shè)計………………………………………………………………………………………6</p><p>  5.1洗牌模塊…

10、……………………………………………………………………………6</p><p>  5.2翻牌模塊…………………………………………………………………………6</p><p>  6 運行與分析……………………………………………………………………………………6</p><p>  6.1運行結(jié)果……………………………………………………………………………………6</

11、p><p>  6.2結(jié)果分析……………………………………………………………………………………7</p><p>  致謝……………………………………………………………………………………8</p><p>  參考文獻………………………………………………………………………………………9</p><p>  源程序……………………………………………

12、………………………………………10</p><p><b>  1 需求分析</b></p><p><b>  1.1需求來源</b></p><p>  在本系統(tǒng)的需求分析環(huán)節(jié)中,會對軟件開發(fā)的意圖、開發(fā)的目標、作用范圍和有關(guān)該軟件開的背景材料進行詳細的分析。紙牌游戲作為一個用來娛樂的應(yīng)用軟件,在對其進行需求分析的過

13、程中,需用要充分考慮系統(tǒng)的可用性和簡單易用性,聯(lián)系實際娛樂需要,從而得到合理的需求分析結(jié)論。</p><p><b>  1.2設(shè)計目的</b></p><p>  該軟件為用戶提供一個在Windows系統(tǒng)上運行的紙牌游戲小系統(tǒng)。應(yīng)達到的目的是:編號為1-52張牌,正面向上,從第2張開始,以2為基數(shù),是2的倍數(shù)的牌翻一次,直到最后一張牌;然后,從第3張開始,以3為基數(shù)

14、,是3的倍數(shù)的牌翻一次,直到最后一張牌;然后…從第4張開始,以4為基數(shù),是4的倍數(shù)的牌翻一次,直到最后一張牌;...再依次5的倍數(shù)的牌翻一次,6的,7的直到以52為基數(shù)的翻過。</p><p><b>  1.3設(shè)計要求</b></p><p>  任意輸出一組牌,輸出最后正面向上的牌。</p><p><b>  2 功能需求描述

15、</b></p><p>  紙牌游戲是一個用來娛樂的系統(tǒng)軟件,此軟件操作簡單,每個新手都可以直接使用,不需要登陸注冊,按游戲規(guī)則游戲即可。</p><p>  游戲使用者主要功能需求如下:</p><p>  系統(tǒng)洗牌后,猜測正面向上的牌,然后系統(tǒng)按設(shè)計的規(guī)則進行翻牌。洗牌后,使用者就可以看到自己猜得正面向上的牌是否與系統(tǒng)一樣了。若一樣,則勝利,否則失

16、敗。游戲很簡單,使用者只要掌握好游戲規(guī)則就很容易取勝。</p><p><b>  3 總體設(shè)計</b></p><p><b>  3.1設(shè)計思想</b></p><p>  在對紙牌游戲進行合理的需求分析之后,對整個系統(tǒng)進行總體設(shè)計。首先確定開發(fā)與設(shè)計的總體思想,在此基礎(chǔ)上,用圖表的方式給出系統(tǒng)總體的設(shè)計架構(gòu),繪制系

17、統(tǒng)模型結(jié)構(gòu)圖,并且通過模塊功能圖對每個模塊進行總體設(shè)計。</p><p>  開發(fā)本設(shè)計的總體思想:紙牌游戲是一個簡易的游戲系統(tǒng)。開發(fā)設(shè)計的重點在于對紙牌的洗牌和翻牌按設(shè)計要求進行設(shè)計,不得出錯。</p><p>  紙牌小游戲是供大眾娛樂的小游戲,所以無需考慮安全問題。</p><p>  對于洗牌翻牌這兩環(huán)節(jié)要用到程序設(shè)計思想中的循環(huán)結(jié)構(gòu)。 </p>

18、<p>  系統(tǒng)采用結(jié)構(gòu)化的設(shè)計方法進行設(shè)計,采用C語言進行開發(fā)。</p><p><b>  3.2系統(tǒng)模塊結(jié)構(gòu)</b></p><p>  依據(jù)需求分析結(jié)果,紙牌游戲總體上說就一個模塊:翻牌。詳細一點可分為2個模塊:洗牌模塊、翻牌模塊。其中翻牌模塊就是洗牌的最后一個步驟,即屏幕上顯示得最后幾張牌。也是用戶應(yīng)該猜得最后結(jié)果。系統(tǒng)模塊結(jié)構(gòu)如下圖:<

19、/p><p><b>  圖3-2-1</b></p><p>  3.3系統(tǒng)總設(shè)計流程圖</p><p>  牌的張數(shù)自減牌的張數(shù)自減</p><p><b>  圖3-3-1</b></p><p><b>  4 概要設(shè)計</b></p>

20、<p>  4.1抽象數(shù)據(jù)類型定義</p><p> ?、艑埮七M行按規(guī)則翻牌</p><p>  AllCards* RandArrange()</p><p><b>  { }</b></p><p>  void Turn_Over(AllCards* C)</p><p>

21、;<b>  { }</b></p><p> ?、撇樵兎剖O碌淖詈?張牌</p><p>  void Search(AllCards* C)</p><p><b>  { }</b></p><p><b> ?、侵骱瘮?shù)</b></p><p&g

22、t;  void main()</p><p><b>  { } </b></p><p>  根據(jù)設(shè)計要求,我們知道設(shè)計中所有用到的數(shù)據(jù)記錄有紙牌翻轉(zhuǎn)信息,因此要定義相關(guān)的數(shù)據(jù)類型:紙牌最大個數(shù)定義為CARDNUM 52,翻轉(zhuǎn)狀態(tài)存儲在bool isup中,紙牌放在數(shù)組Cards[CARDNUM+1]中等。</p><p>  4.2本

23、程序包含模塊</p><p><b> ?、胖鞒绦蚰K</b></p><p> ?、?define CARDNUM 52 給數(shù)組定義一個空間</p><p>  ②typedef struct</p><p>  { }Indexcode; 紙牌的信息</p><p>  ③typedef s

24、truct</p><p>  { }PreCard; 翻轉(zhuǎn)紙牌</p><p> ?、躷ypedef struct</p><p>  { }AllCards;存儲紙牌的數(shù)組</p><p><b> ?、葡磁颇K</b></p><p> ?、羌埮品D(zhuǎn)模塊——翻轉(zhuǎn)紙牌</p>&

25、lt;p><b>  各模塊關(guān)系如下:</b></p><p><b>  圖4-2-1</b></p><p>  4.3系統(tǒng)功能的實現(xiàn)</p><p>  要實現(xiàn)紙牌按此要求翻轉(zhuǎn),首先要將52張紙牌序號i為1到52,定義正面朝上的狀態(tài)Cards[i].isup為true;對52張牌(序號放在i里)對2,3

26、3;··52(放在j里 )按i+1是否是j的倍數(shù)進行狀態(tài)翻轉(zhuǎn)。如果對序號從1到52的牌,對翻轉(zhuǎn)處理后狀態(tài)仍然是正面的將其輸出,一直進行下去,直到以52的基礎(chǔ)翻過。</p><p><b>  5 模塊設(shè)計</b></p><p><b>  5.1洗牌模塊</b></p><p>  該模塊案設(shè)計要求

27、洗牌,是用戶進行游戲的前提。該模塊主要是按要求進行循環(huán)翻牌的過程,要求為:“從第2張開始,以2為基數(shù),是2的倍數(shù)的牌翻一次,直到最后一張牌;然后,從第3張開始,以3為基數(shù),是3的倍數(shù)的牌翻一次,直到最后一張牌;然后…從第4張開始,以4為基數(shù),是4的倍數(shù)的牌翻一次, 直到最后一張牌;...再依次5的倍數(shù)的牌翻一次,6的,7的,直到以52為基數(shù)的翻過,輸出”。</p><p><b>  5.2翻牌模塊&l

28、t;/b></p><p>  翻牌模塊其實就是洗牌模塊得最后一個步驟。該模塊就是為了顯示出最后</p><p>  結(jié)果,讓用戶比較一下自己的結(jié)果和系統(tǒng)輸出得結(jié)果有什么不同。 </p><p><b>  6 運行與分析</b></p><p><b>  6.1運行結(jié)果</b><

29、;/p><p><b>  6.2結(jié)果分析</b></p><p>  該游戲很簡單,只需按規(guī)則一步步地進行翻牌,然后將自己所猜的結(jié)果與屏幕上的結(jié)果對比,在每輪游戲結(jié)束后,都可繼續(xù)游戲。</p><p><b>  致謝</b></p><p>  通過這次設(shè)計,使我在數(shù)據(jù)結(jié)構(gòu)的邏輯特性和物理表示、數(shù)據(jù)

30、結(jié)構(gòu)的選擇應(yīng)用、算法的設(shè)計及其實現(xiàn)等方面加深了對課程基本內(nèi)容的理解。同時,在程序設(shè)計方法以及上機操作等基本技能和科學作風方面受到比較系統(tǒng)和嚴格的訓練。</p><p>  在此之前,我腦袋里面沒有數(shù)據(jù)結(jié)構(gòu)的思想,什么數(shù)據(jù)結(jié)構(gòu)對我而言就是一張空白的紙。當時就感覺自己什么都不會做,什么也不能做,但是真正接觸后并沒有想象的那么難,有什么不懂的上網(wǎng)去搜索,這是一個信息橫流的世界,有g(shù)oogle,baidu就沒有不能解決的

31、知識難題。在網(wǎng)上搜索點有關(guān)的資料后,然后再利用自己在課堂上所學的知識,將所有內(nèi)容連接起來,所有問題就迎刃而解。課程設(shè)計是以學生自學為主、指導教師指導為輔,認真、獨立地完成課程設(shè)計的任務(wù),有問題就要及時主動與指導教師溝通。在老師的悉心指導下和同學們的幫助下,使我順利地完成了此次課程設(shè)計。所以,要特別感謝指導老師和各位同學,我相信這短短五天的課程設(shè)計將會是我以后不管是工作還是學習不可多得的經(jīng)驗。</p><p>&l

32、t;b>  參 考 文 獻</b></p><p>  [1] 嚴蔚敏.《數(shù)據(jù)結(jié)構(gòu) C語言》.清華大學出版社</p><p>  [2] 譚浩強.《c語言程序設(shè)計》.清華大學出版社</p><p>  [3]《數(shù)據(jù)結(jié)構(gòu)》.高教出版社 </p><p>  [4] 李春保.《數(shù)據(jù)結(jié)構(gòu)習題》.清華大學出版社</p>

33、<p>  [5] 嚴蔚敏.《數(shù)據(jù)結(jié)構(gòu)習題》.清華大學出版社</p><p>  [6] 王立柱.《c語言與數(shù)據(jù)結(jié)構(gòu)》.清華大學出版社</p><p>  [7] 李春葆.《數(shù)據(jù)結(jié)構(gòu)(C語言篇)習題與解析》.清華大學出版社</p><p>  [8]徐孝凱.《數(shù)據(jù)結(jié)構(gòu)簡明教程》,清華大學出版社</p><p>  [9]陳文博,朱

34、青.《數(shù)據(jù)結(jié)構(gòu)與算法》,機械工業(yè)出版社</p><p>  [10]晉良潁.《數(shù)據(jù)結(jié)構(gòu)》,人民郵電出版社</p><p>  [11]趙文靜,祁飛等.《數(shù)據(jù)結(jié)構(gòu)與算法》,科學出版社</p><p><b>  源程序:</b></p><p>  #define CARDNUM 52</p><p&g

35、t;  #include<stdio.h></p><p>  #include<iomanip></p><p>  #include<iostream></p><p>  typedef struct{</p><p>  int* elem;</p><p>  int le

36、ngth;</p><p>  }Indexcode;</p><p>  typedef struct{</p><p><b>  int code;</b></p><p>  bool isup;</p><p><b>  }PreCard;</b></p&g

37、t;<p>  typedef struct{</p><p>  PreCard Cards[CARDNUM];</p><p>  }AllCards;</p><p>  AllCards* RandArrange(); </p><p>  void Turn_Over(AllCards*);</p>&l

38、t;p>  void Search(AllCards*);</p><p>  void main(){</p><p>  system("color 1a");</p><p>  AllCards* cards;</p><p><b>  char c;</b></p>&

39、lt;p><b>  int i=0;</b></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("這是一個很easy的紙牌游戲,下面我們....\n");</p><p><b>  while(1){</b>

42、</p><p>  if(!(i++)) printf("開始第1輪游戲:\n");</p><p>  else {printf("\n和你猜的結(jié)果一樣嗎,不一樣的話,就再接再厲吧!");</p><p>  printf("繼續(xù)嗎?(Y/N)");</p><p>  scan

43、f("%c",&c);</p><p>  if(c=='N'||c=='n'){</p><p>  printf(" ****************************結(jié)束*************************** \n");</p><p><b> 

44、 return;</b></p><p><b>  }</b></p><p>  else printf("\n第%d輪游戲:\n",i);</p><p><b>  }</b></p><p>  printf("洗牌中......\n"

45、);</p><p>  cards=RandArrange();</p><p>  printf("\n按規(guī)則翻面中......\n");</p><p>  Turn_Over(cards);</p><p>  Search(cards);</p><p><b>  }</

46、b></p><p><b>  }</b></p><p>  AllCards* RandArrange()</p><p><b>  {</b></p><p><b>  int j,k;</b></p><p>  AllCards*

47、C=(AllCards*)malloc(sizeof(AllCards));</p><p>  int c[CARDNUM+1];</p><p>  Indexcode icode;</p><p>  icode.elem=c;</p><p>  icode.length=CARDNUM;</p><p>  

48、for(int i=1;i<=CARDNUM;i++){</p><p>  icode.elem[i]=i;</p><p><b>  }</b></p><p>  for(i=1;i<=CARDNUM;i++){</p><p>  if(!icode.length)break;</p>

49、<p>  j=(rand()%icode.length)+1;</p><p>  C->Cards[i].code=icode.elem[j];</p><p>  for(k=j;k<icode.length;k++)</p><p>  icode.elem[k]=icode.elem[k+1];</p><p&g

50、t;  icode.length--;</p><p>  C->Cards[i].isup=true;</p><p><b>  }</b></p><p>  for(i=1;i<=CARDNUM;i++)</p><p>  printf("%4d",(C->Cards+i)

51、->code);</p><p>  printf("\n");</p><p><b>  return C;</b></p><p><b>  }</b></p><p>  void Turn_Over(AllCards* C)</p><p&g

52、t;<b>  {</b></p><p><b>  int i,j;</b></p><p>  for(i=2;i<=CARDNUM;i++){</p><p>  for(j=2;j<=CARDNUM;j++)</p><p>  if(C->Cards[j].code%i

53、==0)</p><p>  {if(C->Cards[j].isup!=true)</p><p>  C->Cards[j].isup=true;</p><p>  else C->Cards[j].isup=false;}</p><p><b>  }</b></p><p

54、><b>  }</b></p><p>  void Search(AllCards* C)</p><p><b>  {</b></p><p>  printf("正面向上的有: \n");</p><p>  for(int i=1;i<=CARDNUM;

溫馨提示

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

評論

0/150

提交評論