版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- java課程設(shè)計(jì)--對戰(zhàn)五子棋
- c語言五子棋課程設(shè)計(jì)
- c語言課程設(shè)計(jì)--五子棋游戲設(shè)計(jì)
- c語言圖形五子棋課程設(shè)計(jì)報(bào)告
- c語言圖形五子棋課程設(shè)計(jì)報(bào)告
- 五子棋c++課程設(shè)計(jì)
- 五子棋c++課程設(shè)計(jì)
- c語言課程設(shè)計(jì)報(bào)告五子棋游戲課程設(shè)計(jì)
- c++課程設(shè)計(jì)——五子棋
- 五子棋課程設(shè)計(jì)
- 五子棋對戰(zhàn)游戲
- 網(wǎng)絡(luò)對戰(zhàn)五子棋
- 匯編語言五子棋課程設(shè)計(jì)
- 匯編語言五子棋課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---五子棋人機(jī)對戰(zhàn)
- 五子棋java語言課程設(shè)計(jì)報(bào)告
- c++五子棋課程設(shè)計(jì)報(bào)告
- c++課程設(shè)計(jì)--五子棋游戲
- java五子棋課程設(shè)計(jì)
- 五子棋-課程設(shè)計(jì)報(bào)告
評論
0/150
提交評論