




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、中北大學(xué)程序設(shè)計(jì)課程設(shè)計(jì)說明書學(xué)生姓名: 學(xué) 號:10051041 學(xué) 院: 信息與通信工程學(xué)院 專 業(yè): 光電信息工程 題 目: 五子棋 指導(dǎo)教師: 職稱: 2012 年 01月 06 日(紀(jì)念我已經(jīng)逝去的大學(xué)生活)院: 信息與通信工程學(xué)院 專 業(yè): 光電信息工程 學(xué) 生 姓 名: 學(xué) 號: 10051041 課程設(shè)計(jì)題目: 五子棋 起 迄 日 期:2011年12月 24日2012年1月6日 課程設(shè)計(jì)地點(diǎn): 111420 指 導(dǎo) 教 師: 系 主 任: 下達(dá)任務(wù)書日期: 2011 年 12 月25 日課 程 設(shè) 計(jì) 任 務(wù) 書1設(shè)計(jì)目的:1 熟悉C語言程序設(shè)計(jì)的原理與方法;2 掌握C語言開發(fā)
2、環(huán)境下程序的具體設(shè)計(jì);3 掌握利用C語言分析解決具體問題。2設(shè)計(jì)內(nèi)容和要求:設(shè)計(jì)內(nèi)容:用C語言設(shè)計(jì)一個五子棋游戲程序,允許游戲者自由選擇棋子顏色,實(shí)現(xiàn)人人對戰(zhàn)和人機(jī)對戰(zhàn),利用時間函數(shù)設(shè)置實(shí)現(xiàn)落子倒計(jì)時功能程序應(yīng)該具有以下基本功能:1顯示歡迎界面。2玩家棋子可選,棋盤范圍足夠。3落子時間倒計(jì)時。設(shè)計(jì)要求:1不同的功能使用不同的函數(shù)實(shí)現(xiàn)(模塊化),對每個函數(shù)的功能和調(diào)用接口要注釋清楚。對程序其它部分也進(jìn)行必要的注釋。3對系統(tǒng)進(jìn)行功能模塊分析、畫出總流程圖和各模塊流程圖。4用戶界面要求使用方便、簡潔明了、美觀大方、格式統(tǒng)一。5所有程序需在Win-Tc 或Microsoft Visual C+ 6.0
3、 環(huán)境調(diào)試通過。3設(shè)計(jì)工作任務(wù)及工作量的要求包括課程設(shè)計(jì)計(jì)算說明書(論文)、圖紙、實(shí)物樣品等:1) 課程設(shè)計(jì)說明書一份;2) 電子文檔(說明書、設(shè)計(jì)程序)一份 課 程 設(shè) 計(jì) 任 務(wù) 書4主要參考文獻(xiàn):譚浩強(qiáng) c程序設(shè)計(jì) 北京大學(xué)出版社 5設(shè)計(jì)成果形式及要求:1) 課程說明書打印,并裝訂;2) 必要的程序流程圖和程序附錄。6工作計(jì)劃及進(jìn)度:2011年12月24日2011年12月26日 下達(dá)設(shè)計(jì)任務(wù)書,學(xué)生熟悉設(shè)計(jì)內(nèi)容; 2011年12月27日2011年12月29日 查閱參考資料,確定基本設(shè)計(jì)方案;2011年12月29日2012年01月04日 C語言進(jìn)行程序設(shè)計(jì);2012年01月05日2012年
4、01月06日 完成設(shè)計(jì)報(bào)告;2012年01月06日 答辯; 系主任審查意見: 簽字: 年 月 日目 錄1、課程設(shè)計(jì)的背景及意義.062、設(shè)計(jì)的基本原理063、設(shè)計(jì)的基本過程084、設(shè)計(jì)的結(jié)果105、總結(jié)和結(jié)論.111. 設(shè)計(jì)背景及意義我們的五子棋程序是在Visual C+ 6.0環(huán)境下運(yùn)行的。 Visual C+ 6.0 Microsoft Visual C+(簡稱Visual C+、MSVC、VC+或VC)微軟公司的C+開發(fā)工具,具有集成開發(fā)環(huán)境,可提供編輯C語言,C+以及C+/CLI等編程語言。VC+整合了便利的除錯工具,特別是整合了微軟視窗程式設(shè)計(jì)(Windows API)、三維動畫Di
5、rectX API,Microsoft .NET框架。目前最新的版本是Microsoft Visual C+ 2010。Visual C+ 6.0集成了MFC6.0,于1998發(fā)行。發(fā)行至今一直被廣泛地用于大大小小的項(xiàng)目開發(fā)。 五子棋是一種兩人對弈的純策略型棋類游戲,是起源于中國古代的傳統(tǒng)黑白棋種之一。我們通過對C語言以及對大學(xué)計(jì)算機(jī)基礎(chǔ)的初步學(xué)習(xí)后,本學(xué)期末進(jìn)行了課程程序設(shè)計(jì),設(shè)計(jì)課題為“五子棋”。我們小組由6人組成,通過分工與合作并在趙老師的耐心指導(dǎo)下共同完成了此程序設(shè)計(jì)。2.設(shè)計(jì)的基本原理2.1問題描述連珠(五子棋)是有兩個人在一盤棋上進(jìn)行對抗的競技運(yùn)動。在對局開始時,先由用戶選擇哪方先
6、開局,先開局一方將一枚棋子落在一點(diǎn)上,然后由另一方在對方棋周圍的交叉點(diǎn)上落子,如此輪流落子,直到某一方首先在棋盤的直線、橫線或斜線上形成連續(xù)的五子則該方就算獲勝。此時,算法結(jié)束。 2.2需求分析(1)輸出棋盤界面(2)要求玩家選擇棋子(3)玩家輪流下棋(4)判斷鍵盤輸入哪個鍵按規(guī)則執(zhí)行操作(5)判斷誰先落棋(6)判斷贏家(7)輸出結(jié)果界面2.3流程圖開始玩家選擇棋子輸出棋盤界面O方先輸入棋子坐標(biāo)刷新棋盤界面轉(zhuǎn)換玩家玩家移動棋子YYYNNN結(jié)束判斷是否贏棋判斷是否重子判斷棋子是否出界刷新棋盤界面輸出勝利界面3設(shè)計(jì)的基本過程char b4040;void show() /輸出獲勝圖像/ int i
7、=0,j=0; /i為橫坐標(biāo)變量,j為縱坐標(biāo)變量/for(i=0;i40;i+) /對圖像數(shù)組賦初值/ for(j=0;j40;j+) bij=46;for(i=0;i40;i+) /對圖像數(shù)組特定點(diǎn)賦值/for(j=0;j10&i10&j25&j=6&j=7&j=8&j=9&j=10&j=12&j=14&j=17&j=23)bij=O;for(i=0;i40;i+) /輸出圖像數(shù)組/for(j=0;j40;j+)printf(%c,bij);printf(n);詳細(xì)說明:Show函數(shù)的目的是輸出獲勝界面,調(diào)用全局變量b(目的是為圖像分配存儲空間),i為橫坐標(biāo)變量,j為縱坐標(biāo)變量,接下來的兩個
8、for是把b初始化為“.”,再接下來的雙for是為塑形:限定行間距為10i16,再限定列間距為10j16或25j31,用判斷語句來塑造圖形“雙眼”;當(dāng)i=21時,限定6=j=25,當(dāng)i=22,23,24,25,26,27時同理,用判斷語句來塑造“嘴”,最后用雙for語句來輸出圖形。4設(shè)計(jì)結(jié)果玩家獲勝顯示界面截圖5總結(jié)與結(jié)論1 課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程.回顧起此次課程程序設(shè)計(jì),至今我仍感慨頗多,從選題到定稿,從理論到實(shí)踐,在整整兩星期的日子里,學(xué)到很多很多的的東西,不僅鞏固了以前所學(xué)過的知
9、識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,才能真正提高自己的實(shí)際動手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中難免會遇到過各種各樣的問題,同時在設(shè)計(jì)的過程中也發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設(shè)計(jì)之后,把以前所學(xué)過的知識重新溫故。這次課程設(shè)計(jì)順利完成了,在設(shè)計(jì)中遇到了很多編程問題,最后在趙宇老師的辛勤指導(dǎo)下,終于游逆而解。同時,在趙宇老師的身上我學(xué)得到很多實(shí)用的知識,我表示感謝!同時,對給過我?guī)椭乃型瑢W(xué)和各位指導(dǎo)老師再次表示忠
10、心的感謝!附錄負(fù)責(zé)人設(shè)計(jì)內(nèi)容Viod judge()函數(shù)的設(shè)計(jì)及程序的調(diào)試Viod judge()函數(shù)的設(shè)計(jì)及程序的調(diào)試Void move()函數(shù)的設(shè)計(jì)及課程設(shè)計(jì)說明書的排版制作 Int playing()函數(shù)的設(shè)計(jì)及程序的調(diào)試Void showcheckerboard()函數(shù)設(shè)計(jì)及相關(guān)操作Void show()函數(shù)的設(shè)計(jì)及程序的調(diào)試程序源代碼:#include#includechar a6565;char b4040;void show() /輸出獲勝圖像/ int i=0,j=0; /i為橫坐標(biāo)變量,j為縱坐標(biāo)變量/for(i=0;i40;i+) /對圖像數(shù)組賦初值/ for(j=0;j4
11、0;j+) bij=46;for(i=0;i40;i+) /對圖像數(shù)組特定點(diǎn)賦值/for(j=0;j10&i10&j25&j=6&j=7&j=8&j=9&j=10&j=12&j=14&j=17&j=23)bij=O;for(i=0;i40;i+) /輸出圖像數(shù)組/for(j=0;j40;j+)printf(%c,bij);printf(n);void move(int *x,int *y) /*移動棋子的方向*/ /x為上一步棋子橫坐標(biāo),y為上一步棋子縱坐標(biāo)/char b40; /為記錄棋子將要移動的步伐/int i,z,flag=1; /z為某一步的中間變量,flag為標(biāo)志變量/gets(b
12、); /輸入要移動的步伐/for(i=0;i40;i+)z=bi; /把b【】的某一步傳遞給z/switch(z) /判斷移動棋子方向/case 119: *x=*x-1;break; /w鍵控制棋子上移/case 97: *y=*y-1;break; /a鍵控制棋子左移/case 115: *x=*x+1;break; /s鍵控制棋子下移/case 100: *y=*y+1;break; /d鍵控制棋子右移/case 111: flag=0;break; /o鍵確定落子/if(flag=0) break; /判斷某步是否移動完成/int playing() /*開始下棋*/ int flag
13、=1,i=0,x=0,y=0,k,l,n=0,m=1; /flag為記錄哪方下棋的標(biāo)志變量,x,y為a的橫縱坐標(biāo),m,n分別記錄o方,方的積累步數(shù)/int *p1=&x,*p2=&y; int judge (int x,int y); /本函數(shù)所用子函數(shù)的聲明/void move(int *p1,int *p2);void showcheckerboard(int x,int y); printf(O方先輸入首子坐標(biāo):); scanf(%d %d,&x,&y); /輸入首坐標(biāo)/axy=O; /首坐標(biāo)的棋盤位置畫棋子/showcheckerboard(m,n); /輸出更新后的棋盤/for(i=
14、0;i2000;i+) /改變玩家/if(flag=1)flag=0;elseflag=1;for(k=0;k=1&x=1&y=64) if(axy=46) break; else if(flag=1) m-; else n-; printf(此處有子,請繼續(xù)移子); continue;else if(flag=1) m-; else n-;printf(此處過界,請繼續(xù)移子);if(flag=1) /在a的特定位置更新字符/axy=O;else axy=;showcheckerboard(m,n); /更新棋盤/l=judge(x,y); /記錄誰贏變量/ if(l=1) return fl
15、ag; void showcheckerboard(int x,int y) /*畫出棋盤*/ /x,y分別為o方下棋步數(shù),方下棋步數(shù)/int i,j,w=0; /i,j為橫縱坐標(biāo)變量/printf(=n);printf( 0方累計(jì)下棋步數(shù):%d 方累計(jì)下棋步數(shù):%dn,x,y);printf(=n);for(i=0;i65;i+) /輸出橫縱坐標(biāo)/printf(%2d,i);printf(n);for(i=1;i65;i+)for(j=0;j65;j+)if(j=0)w+=1;printf(%2d,w);elseprintf(%2c,aij);printf(n);int judge(int
16、x,int y) /*判斷各方向五子是否連成一線*/ /x,y分別為橫縱坐標(biāo)/ int i,b,c,d,e,z=1; /z為標(biāo)志變量,記錄每個方向連棋個數(shù)/for(i=1;i5;i+) /垂直向下數(shù)/if(axy+i=axy) z+=1;if(z=5)return(1);break;else break;for(i=1;i5;i+) /垂直向上數(shù)/if(axy-i=axy)z+=1;if(z=5)return(1);break;else break;e=z;z=1; for(i=1;i5;i+) /水平向右數(shù)/if(ax+iy=axy)z+=1;if(z=5)return(1);break;e
17、lse break; for(i=1;i5;i+) /水平向左數(shù)/if(ax-iy=axy)z+=1;if(z=5)return(1);break;else break; b=z;z=1;for(i=1;i5;i+) /向左下方數(shù)/if(ax-iy+i=axy)z+=1;if(z=5)return(1);break;else break; for(i=1;i5;i+) /向右上方數(shù)/if(ax+iy-i=axy)z+=1;if(z=5)return(1);break;else break; c=z;z=1;for(i=1;i5;i+) /向左上方數(shù)/if(ax-iy-i=axy)z+=1;if(z=5)return(1);break;else break; for(i=1;i5;i+) /向右下方數(shù)/if(ax+iy+i=axy)z+=1;if(z=5)return(1);break;else break; d=z;if(e!=5&b!=5&c!=5&d!=5) /判斷某個方向五子連棋/return(0);void main() int x,y,flag,m=0,n=0,p=0; /flag為哪方下棋的判斷變量,m,n為
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 養(yǎng)殖合作協(xié)議合同范本
- 加工及測試合同范本
- 2025年錫林郭勒盟c1貨運(yùn)從業(yè)資格證模擬考試題
- 東莞物業(yè)服務(wù)合同范本
- 六座車買賣合同范本
- 買賣貨款利息合同范本
- 勞動關(guān)系托管合同范本
- 勞務(wù)服務(wù)費(fèi)合同范本
- 萬瑞地產(chǎn)合同范本
- 辦公商品采購合同范本
- 蚌埠介紹-蚌埠簡介課件(經(jīng)典版)
- GB/T 15561-2024數(shù)字指示軌道衡
- 探究煙花爆竹知識產(chǎn)權(quán)-洞察分析
- 網(wǎng)絡(luò)保險風(fēng)險評估-洞察分析
- 呼吸機(jī)濕化的護(hù)理
- 2025-2030年中國旅居康養(yǎng)行業(yè)全國市場開拓戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2024“五史”全文課件
- 食品檢驗(yàn)員聘用合同樣本
- 六年級信息技術(shù)下冊教學(xué)計(jì)劃
- 2025年九年級數(shù)學(xué)中考復(fù)習(xí)計(jì)劃
- 2024屆江西省南昌市高三一模英語試卷(解析版)
評論
0/150
提交評論