c語言課程設(shè)計(jì)---五子棋(雙人對戰(zhàn))_第1頁
已閱讀1頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  C語言程序設(shè)計(jì) </b></p><p>  題 目 五子棋(雙人對戰(zhàn))</p><p><b>  目錄</b></p><p>  1設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求…………………………………… 1</p><p>  1.1系統(tǒng)功能簡介………………………………

2、……… 1 </p><p>  1.2系統(tǒng)運(yùn)行環(huán)境 ………………………………………1</p><p>  2程序流程圖 ………………………………………………1</p><p>  3運(yùn)行的運(yùn)行及說明 ………………………………………2</p><p>  3.1系統(tǒng)的運(yùn)行 …………………………………………2

3、</p><p>  3.2運(yùn)行說明…………………………………………… 4</p><p>  4課程設(shè)計(jì)目的………………………………………………….</p><p>  5 程序特色…………………………………………………….5</p><p>  6總結(jié) ………………………………………………………5</p><p>

4、  附件:源程序清單……………………………………………5</p><p>  1設(shè)計(jì)內(nèi)容與設(shè)計(jì)要求</p><p><b>  1.1系統(tǒng)功能簡介</b></p><p>  該系統(tǒng)是五子棋的人人對戰(zhàn)模式,而非平常的人機(jī)對戰(zhàn)</p><p>  系統(tǒng)有簡單的菜單界面</p><p><b&g

5、t;  1.2系統(tǒng)運(yùn)行環(huán)境</b></p><p>  Vc++6.0下運(yùn)行,硬件基本無要求,現(xiàn)在的計(jì)算機(jī)系統(tǒng)基本都可以運(yùn)行該系統(tǒng)。</p><p><b>  2程序流程圖</b></p><p><b>  3系統(tǒng)的運(yùn)行及說明</b></p><p><b>  3.1系統(tǒng)

6、的運(yùn)行</b></p><p>  圖3-1程序的初始化界面</p><p>  程序初始化的界面,界面簡潔明快,便于觀察。</p><p>  圖3-2程序的運(yùn)行界面</p><p>  圖3-3程序的介紹界面</p><p><b>  3-2運(yùn)行說明</b></p>

7、<p>  A向左 W向上 D向右 S向左 空格鍵 確定 當(dāng)結(jié)束時(shí)按Y重新開始游戲按N退出游戲</p><p><b>  4課程設(shè)計(jì)目的</b></p><p>  五子棋游戲不僅能增強(qiáng)人們的抽象思維能力、邏輯推理能力、空間想象力,提高人們的記憶力、心算能力等,而且深含哲理,有助于修身養(yǎng)性。五子棋既有現(xiàn)代休閑方式所特有的特征“短、平、快

8、” ,又有中國古典哲學(xué)所包含的高深學(xué)問“陰陽易理” ;它既有簡單易學(xué)的特點(diǎn),為人民群眾所喜聞樂見,又有深奧的技巧;既能組織舉辦群眾性的比賽、活動,又能組織舉辦高水平的國際性比賽;它的棋文化源淵流長,具有東方的神秘和西方的直觀,它是中西方文化的交融點(diǎn),也是中西方文化交流的一個(gè)平臺。</p><p>  自從計(jì)算機(jī)作為游戲?qū)?zhàn)平臺以來,各種棋類游戲如雨后春筍般紛紛冒出。五子棋是一種受大眾廣泛喜愛的游戲,其規(guī)則簡單,變

9、化多端,非常富有趣味性和消遣性。同時(shí)具有簡單易學(xué)、既動手又動腦的特點(diǎn)。</p><p>  同時(shí)也為鍛煉自己的編程能力。</p><p><b>  5程序特色</b></p><p>  本程序簡潔明快,采用黑白兩色棋,并且本程序?yàn)殡p人對戰(zhàn)。</p><p><b>  6總結(jié)</b></p

10、><p>  通過這次實(shí)習(xí),讓我們初步有了編寫系統(tǒng)的能力,我們對很多的函數(shù)有了新的認(rèn)識,也學(xué)會了運(yùn)用多種函數(shù),也明白了編寫軟件的基本過程,和基本方法。編寫軟件的過程中我們又學(xué)到了曾經(jīng)自己不知道的函數(shù)或是自己不會的函數(shù)的用法。這次課程設(shè)計(jì)課總的來說讓我受益匪淺。</p><p>  在這幾天的編寫過程中我們對c語言有了更進(jìn)一步的認(rèn)識和了解。此次編程過程的經(jīng)驗(yàn)和知識肯定能促進(jìn)我以后的學(xué)習(xí)。<

11、/p><p>  此次課程設(shè)計(jì)不僅給了我們很多很好的經(jīng)驗(yàn),也讓我們體會到了失敗時(shí)的焦急和難受,也體會到了成功時(shí)的興奮與喜悅。</p><p><b>  附件:源程序清單</b></p><p>  #include <stdio.h></p><p>  #include <conio.h><

12、/p><p>  #include <stdlib.h></p><p>  void main()</p><p><b>  {</b></p><p>  //q:20*20棋盤數(shù)據(jù)數(shù)組,0表示空,1表示黑棋,2表示白棋</p><p>  //h:游戲狀態(tài)量,變化范圍為0、1、2,

13、0表示退出游戲,1表示初始化游戲數(shù)據(jù),2表示進(jìn)行游戲</p><p><b>  //i:循環(huán)輔助量</b></p><p>  //j:鍵盤輸入結(jié)果</p><p>  //k:從二維坐標(biāo)得到的一維數(shù)組下標(biāo)</p><p>  //l:黑白子變化輔助量,變化范圍為1、2,1為當(dāng)前下的是黑棋,2為當(dāng)前下的的是白棋<

14、/p><p>  //m:輸贏判斷結(jié)果,變化范圍為0、1、2,0表示沒有輸贏,1表示黑棋贏,2表示白棋贏</p><p>  //x:游標(biāo)的X坐標(biāo)</p><p>  //y:游標(biāo)的Y坐標(biāo)</p><p>  char q[400];</p><p>  int h, i, j, k, l, m, x, y;</p&

15、gt;<p>  //第一次進(jìn)入游戲循環(huán),首先初始化游戲數(shù)據(jù)</p><p><b>  h = 1;</b></p><p><b>  while (h)</b></p><p><b>  {</b></p><p>  if (h == 1)</p&

16、gt;<p><b>  {</b></p><p><b>  //初始化棋盤</b></p><p>  for (i = 0; i < 400; ++i)</p><p><b>  q[i] = 0;</b></p><p>  //初始化黑白子變化

17、輔助量,黑棋先行</p><p><b>  l = 2;</b></p><p>  //初始化輸贏判斷結(jié)果,當(dāng)前沒有輸贏</p><p><b>  m = 0;</b></p><p><b>  //初始化游標(biāo)坐標(biāo)</b></p><p>  x

18、 = y = 0;</p><p>  //初始化完畢進(jìn)行游戲</p><p><b>  h = 2;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b&

19、gt;</p><p><b>  //清屏</b></p><p>  system("cls");</p><p><b>  //繪制棋子、棋盤</b></p><p>  for (i = 0; i < 400; ++i)</p><p>&

20、lt;b>  {</b></p><p>  if (y * 20 + x == i)</p><p><b>  {</b></p><p>  if (q[i] == 1)</p><p>  printf("■");</p><p>  else if

21、(q[i] == 2)</p><p>  printf("□");</p><p><b>  else</b></p><p>  printf("◎");</p><p><b>  }</b></p><p><b>

22、  else</b></p><p><b>  {</b></p><p>  if (q[i] == 1)</p><p>  printf("●");</p><p>  else if (q[i] == 2)</p><p>  printf("○

23、");</p><p><b>  else</b></p><p><b>  {</b></p><p>  if (i == 0)</p><p>  printf("┏");</p><p>  else if (i == 19)<

24、/p><p>  printf("┓");</p><p>  else if (i == 380)</p><p>  printf("┗");</p><p>  else if (i == 399)</p><p>  printf("┛");</p&

25、gt;<p>  else if (i > 0 && i < 19)</p><p>  printf("┳");</p><p>  else if (0 == i % 20)</p><p>  printf("┣");</p><p>  else if

26、(19 == i % 20)</p><p>  printf("┫");</p><p>  else if (i > 380 && i < 399)</p><p>  printf("┻");</p><p><b>  else</b></

27、p><p>  printf("╋");</p><p><b>  }</b></p><p><b>  }</b></p><p>  if (19 == i % 20)</p><p>  printf("\n");</p&g

28、t;<p><b>  }</b></p><p><b>  //接收輸入</b></p><p>  j = _getch();</p><p><b>  //更新游標(biāo)坐標(biāo)</b></p><p>  if (y > 0 && (j =

29、= 'w' || j == 'W'))</p><p><b>  --y;</b></p><p>  if (y < 19 && (j == 's' || j == 'S'))</p><p><b>  ++y;</b></p

30、><p>  if (x > 0 && (j == 'a' || j == 'A'))</p><p><b>  --x;</b></p><p>  if (x < 19 && (j == 'd' || j == 'D'))</p&

31、gt;<p><b>  ++x;</b></p><p><b>  //下子</b></p><p>  if (j == ' ')</p><p><b>  {</b></p><p>  //從二維坐標(biāo)轉(zhuǎn)換到一維數(shù)組索引</p>

32、;<p>  k = y * 20 + x;</p><p><b>  //設(shè)置數(shù)據(jù)</b></p><p>  if (0 == q[k])</p><p>  q[k] = (l = (l == 2) ? 1 : 2);</p><p>  //設(shè)置勝負(fù)判斷結(jié)果</p><p>

33、;<b>  m = 0;</b></p><p><b>  //左右勝負(fù)判斷</b></p><p>  for (i = -4; i < 1; ++i)</p><p><b>  {</b></p><p><b>  //邊界判斷 </b>

34、;</p><p>  if (x + i < 0 || x + i + 4 > 19)</p><p><b>  continue;</b></p><p><b>  else</b></p><p><b>  {</b></p><p&

35、gt;  //得到最左邊棋子的索引</p><p>  k = y * 20 + x + i;</p><p>  //連棋判斷,若成立則修改勝負(fù)判斷結(jié)果</p><p>  if (q[k] == q[k + 1] &&</p><p>  q[k + 1] == q[k + 2] &&</p>

36、<p>  q[k + 2] == q[k + 3] &&</p><p>  q[k + 3] == q[k + 4])</p><p><b>  {</b></p><p><b>  m = l;</b></p><p>  break;}}}</p>

37、;<p><b>  //上下勝負(fù)判斷</b></p><p>  for (i = -4; i < 1; ++i)</p><p><b>  {</b></p><p><b>  //邊界判斷</b></p><p>  if (y + i <

38、0 || y + i + 4 > 19)</p><p><b>  continue;</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  //得到最上邊棋子的索引</p><p> 

39、 k = (y + i) * 20 + x;</p><p>  //連棋判斷,若成立則修改勝負(fù)判斷結(jié)果</p><p>  if (q[k] == q[k + 20] &&</p><p>  q[k + 20] == q[k + 40] &&</p><p>  q[k + 40] == q[k + 60]

40、 &&</p><p>  q[k + 60] == q[k + 80])</p><p><b>  {</b></p><p><b>  m = l;</b></p><p>  break;}}}</p><p>  //左上右下勝負(fù)判斷<

41、/p><p>  for (i = -4; i < 1; ++i)</p><p><b>  {</b></p><p><b>  //邊界判斷</b></p><p>  if (x + i < 0 || x + i + 4 > 19 || y + i < 0 || y +

42、 i + 4 > 19)</p><p><b>  continue;</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  //得到最左上邊棋子的索引</p><p>  k = (y

43、 + i) * 20 + x + i;</p><p>  //連棋判斷,若成立則修改勝負(fù)判斷結(jié)果</p><p>  if (q[k] == q[k + 20 + 1] &&</p><p>  q[k + 20 + 1] == q[k + 40 + 2] &&</p><p>  q[k + 40 + 2]

44、 == q[k + 60 + 3] &&</p><p>  q[k + 60 + 3] == q[k + 80 + 4])</p><p><b>  {</b></p><p><b>  m = l;</b></p><p>  break;}}}</p>&

45、lt;p>  //左下右上勝負(fù)判斷</p><p>  for (i = -4; i < 1; ++i)</p><p><b>  {</b></p><p><b>  //邊界判斷</b></p><p>  if (x + i < 0 || x + i + 4 > 1

46、9 || y - i > 19 || y - i - 4 < 0)</p><p><b>  continue;</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  //得到最左下邊棋子的索引</

47、p><p>  k = (y - i) * 20 + x + i;</p><p>  //連棋判斷,若成立則修改勝負(fù)判斷結(jié)果</p><p>  if (q[k] == q[k - 20 + 1] &&</p><p>  q[k - 20 + 1] == q[k - 40 + 2] &&</p>

48、<p>  q[k - 40 + 2] == q[k - 60 + 3] &&</p><p>  q[k - 60 + 3] == q[k - 80 + 4])</p><p><b>  {</b></p><p><b>  m = l;</b></p><p>  

49、break;}}}}</p><p><b>  //勝利結(jié)果選擇</b></p><p>  if (m != 0)</p><p><b>  {</b></p><p><b>  //打印勝利結(jié)果</b></p><p>  if (m =

50、= 1)</p><p>  printf("白棋勝利!\n");</p><p><b>  else</b></p><p>  printf("黑棋勝利!\n");</p><p><b>  //用戶輸入選擇</b></p><p&

51、gt;<b>  do</b></p><p><b>  {</b></p><p>  printf("重新游戲請按Y,退出游戲請按N:\n");</p><p>  j = _getch();</p><p>  } while (j != 'y' &

52、;& j != 'Y' && j != 'n' && j != 'N');</p><p>  //根據(jù)選擇設(shè)置游戲狀態(tài)</p><p>  if (j == 'y' || j == 'Y')</p><p>  h = 1;elseh = 0;

溫馨提示

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

評論

0/150

提交評論