簡(jiǎn)單五子棋C語言課設(shè)_第1頁
簡(jiǎn)單五子棋C語言課設(shè)_第2頁
簡(jiǎn)單五子棋C語言課設(shè)_第3頁
簡(jiǎn)單五子棋C語言課設(shè)_第4頁
簡(jiǎn)單五子棋C語言課設(shè)_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上C語言課程設(shè)計(jì)姓名:學(xué)號(hào):專業(yè):軟件工程班級(jí): 3 班指導(dǎo)教師:編寫日期:2015/6/25一、需求分析1、程序的輸入與輸出:只需通過鍵盤“上”,“下”,“左”,“右”移動(dòng)光標(biāo)在棋盤上的位置,“p”鍵下子,“q”鍵悔棋進(jìn)行人人對(duì)戰(zhàn)。2、程序的系統(tǒng)功能:(1)五子棋;(2)、根據(jù)需要提供對(duì)圖書所需的查詢方式。二、系統(tǒng)總體設(shè)計(jì)1問題:(1)建立棋盤:如何跟簡(jiǎn)便的建立棋盤; (2)玩家操作如何移動(dòng)光標(biāo);(3)如何在各個(gè)方向上檢查是否有五個(gè)棋子連接;2. 解決方法:(1) 用許多“+”符號(hào)連接起來構(gòu)成簡(jiǎn)便棋盤,下棋時(shí)只需將棋子覆蓋到“+”完成下子;(2) 棋子的移動(dòng)與落子有鍵

2、盤上按鍵控制,本程序選取按鍵為W、S、A、D和P鍵,分別代表上移、下移、左移、右移光標(biāo)和落子。在光標(biāo)移動(dòng)的過程中,光標(biāo)按照玩家按鍵移動(dòng);在玩家按下落子按鍵后,程序自動(dòng)調(diào)用棋子顯示子程序和判斷勝負(fù)子程序。落子后,程序會(huì)為落子處的數(shù)組元素賦一個(gè)特定值,用于判定勝負(fù)。(3) 勝負(fù)判斷模塊是程序的關(guān)鍵,該模塊的設(shè)計(jì)直接關(guān)系到程序的運(yùn)行速率和運(yùn)行結(jié)果的正確與否。本函數(shù)根據(jù)每次落子的位置,分別向上、下、左、右、左上、左下、右上、右下八個(gè)方向判斷是否有相同顏色的棋子連成五子,如果成立,游戲就結(jié)束,并顯示提示信息,否則繼續(xù)落子。3、 詳細(xì)設(shè)計(jì)1. 建立棋盤void drawqipan() /繪制棋盤及數(shù)據(jù)初始

3、化 int i,j; system("cls"); /清除屏幕 for(i=0;i<20;i+) for(j=0;j<20;j+) Qij=0; printf("十"); printf("n"); weizhi.x=0;weizhi.y=0; /程序數(shù)據(jù)初始化 gotoxy(0,0);2 玩家操作void jilu() /記錄落子情況 Qweizhi.xweizhi.y=player+1; if(player) player=0; /玩家變換 return; player=1;int cluozi(int x,int y)

4、 /由電腦落子時(shí)調(diào)用 weizhi.x=x;weizhi.y=y; gotoxy(weizhi.x,weizhi.y); if(Qweizhi.xweizhi.y=0) /判斷當(dāng)前位置是否已經(jīng)落子 jilu(); printf(""); gotoxy(weizhi.x,weizhi.y); void luozi() /玩家落子 if(Qweizhi.xweizhi.y=0) /判斷當(dāng)前位置是否已經(jīng)落子 if(player) jilu(); printf(""); else jilu(); printf(""); gotoxy(weiz

5、hi.x,weizhi.y); 3、systemsystem("CLS")可以實(shí)現(xiàn)清屏操作。而調(diào)用color函數(shù)可以改變控制臺(tái)的前景色和背景。4、 判斷勝負(fù)int checkWin() /檢查游戲是否有輸贏int p; int r,c,rr,cc,count=0; p=player=0?2:1; for(c=0;c<20;c+) for(r=0;r<20;r+) if(Qrc!=p) continue; /檢查列 rr=r;cc=c; while(-cc>=0 &&Qrrcc=p)count+; cc=c; while(+cc<20

6、&&Qrrcc=p)count+; cc=c; if(count+1>=5) return p; /檢查行 count=0; while(-rr>=0 &&Qrrcc=p)count+; rr=r; while(+rr<20 &&Qrrcc=p)count+; rr=r; if(count+1>=5) return p; /檢查反斜邊 count=0; cc-;rr-; while(cc>=0|rr>=0) &&Qrrcc=p)count+;cc-;rr-; rr=r;cc=c; cc+;rr+

7、; while(cc<20|rr<20) &&Qrrcc=p)count+;cc+;rr+; rr=r;cc=c; if(count+1>=5) return p; count=0; /檢查正斜邊 count=0; cc+;rr-; while(cc<20|rr>=0) &&Qrrcc=p)count+;cc+;rr-; rr=r;cc=c; cc-;rr+; while(cc>=0|rr<20) &&Qrrcc=p)count+;cc-;rr+; rr=r;cc=c; if(count+1>=5)

8、 return p; count=0; return 0;四、程序運(yùn)行結(jié)果測(cè)試與分析1.棋盤2. 光標(biāo)移動(dòng)3. 判斷勝負(fù)五、結(jié)論與心得這次課程設(shè)計(jì)完成了五子棋的主體設(shè)計(jì),基本實(shí)現(xiàn)了五子棋的核心要求,另外在構(gòu)建棋盤時(shí)用到了創(chuàng)新的思路,更加簡(jiǎn)便的完成了棋盤的建立。程序的總體設(shè)計(jì)較為簡(jiǎn)單,并沒有用到許多復(fù)雜的語句等,其所用的語句如:for,while,switch,case.都是C語言基礎(chǔ)的語句,比較適合閱讀。在設(shè)計(jì)程序的過程中,我們遇到了許多困難,比如建立棋盤時(shí)遇到了錯(cuò)誤,于是我們小組成員通過上網(wǎng)查閱資料的方式解決了問題。但是,這個(gè)程序有一個(gè)待改進(jìn)的地方就是該游戲只能人與人對(duì)戰(zhàn)而不能人機(jī)對(duì)戰(zhàn),所以在單人時(shí)缺乏可玩性,我想我們小組一定會(huì)在

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論