C語言版井字棋.doc_第1頁
C語言版井字棋.doc_第2頁
C語言版井字棋.doc_第3頁
C語言版井字棋.doc_第4頁
C語言版井字棋.doc_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

精品文檔十五、井字棋【問題描述】設(shè)計(jì)一個(gè)井字棋的游戲程序【基本要求】游戲規(guī)則是:從一個(gè)空的棋盤開始,人為x一方,計(jì)算機(jī)為o一方,人機(jī)雙方輪流放置棋子,人下的時(shí)候,字符x將被放入棋盤中指定的位置,輪到計(jì)算機(jī)下時(shí),程序?qū)呙杵灞P,并將字符o放入掃描到的第一個(gè)空格,某一方有3枚棋子占據(jù)了一橫行、一豎行或一對(duì)角線則獲勝,若整個(gè)棋盤被占滿還沒有一方獲勝則為和局。截圖:代碼:/author GXU-pengcheng#include#include#includevoid Help();/幫助int Play(char player,int choice);/對(duì)弈void Init();/初始化棋盤void Display();/打印棋盤void Black(int choice);/黑棋void White(int choice);/白棋void Block(int choice);/添加選擇框void Clear(int choice);/清空之前的選擇框int Judge(int choice,char symbol);/判斷輸贏 返回值0為無結(jié)果,1為獲勝,2為平局int Funcx(int choice);/將標(biāo)號(hào)轉(zhuǎn)換為行號(hào)int Funcy(int choice);/將標(biāo)號(hào)轉(zhuǎn)換為列號(hào)void End(char symbol);/結(jié)束int Found();/返回第一個(gè)沒有棋子的位置的編號(hào)char a3164;/用數(shù)組存放棋盤和棋子,a行列int b=0;/棋子個(gè)數(shù)int main()char player;int choice; system(title 井字棋);/設(shè)置標(biāo)題system(mode con cols=64 lines=35);/設(shè)置窗口大小system(color 70);/設(shè)置顏色while(1)printf(nnnnnnttt井t字t棋);printf(nnnnnnnnttt1. 玩 家 先 手nnttt2. 電 腦 先 手nnttt3. 幫 助nnttt4. 退 出nnnnntt請(qǐng)輸入: );player=getch();if(player=1)Init();Block(5);choice=5;Play(player,choice);else if(player=2)Init();Play(player,choice);else if(player=3)Help();getch();system(cls);continue;else if(player=4)return 0;elseprintf(nntt 輸入錯(cuò)誤請(qǐng)重新輸入!);Sleep(1000);system(cls);continue;return 0;void Help()system(cls);printf(nnnnnnnnnttt 幫助nnn);printf(t W上移, S下移, A左移, D右移 nn);printf(tt 游戲中按4退出);printf(nnnntt 按任意鍵退出);int Play(char player,int choice)/對(duì)弈char get;char symbol;int c=0;/Judge得出的結(jié)果while(1)system(cls);/每次循環(huán)清屏一次Display();if(player=1)/玩家下棋while(1)/確定要下的位置if(get=getch()!= )if(get=4)system(cls);return 0;else if( (get=w|get=W) &choice-3=1)Clear(choice);choice =choice-3;else if(get=s|get=S)&choice+3=9)Clear(choice);choice = choice+3;else if(get=a|get=A)&(choice+2)/3=(choice+1)/3)Clear(choice);choice -= 1;else if(get=d|get=D)&(choice-1)/3=choice/3)Clear(choice);choice += 1;elsecontinue;Block(choice);system(cls);Display();elseif(a(choice-1)/3)*10+2(choice-1)%3)*21+4!= )printf(該位置已有其他棋子!);continue;elseClear(choice);break;/while結(jié)束b+;Black(choice);player=0;symbol=#;/if結(jié)束else/電腦下棋choice=Found();Block(choice);b+;White(choice);player=1;symbol=*;if(c=Judge(choice,symbol)!=0)/判斷輸贏if(c=2)symbol=;c=0;End(symbol);break;return 0;void Init()/初始化棋盤int x=0,y=0;int i=1;for(x=0;x31;x+)for(y=0;y64;y+)if(y=Funcy(1)|y=Funcy(2)|y=Funcy(3)|y=Funcy(2)+Funcy(3)if(x=Funcx(1)|x=Funcx(4)|x=Funcx(7)|x=Funcx(4)+Funcx(7)axy=+;elseaxy=|;else if(x=Funcx(1)|x=Funcx(4)|x=Funcx(7)|x=Funcx(4)+Funcx(7)axy=-;elseaxy= ;/for(x=1;x=7;x=x+3)/在每個(gè)格子的左上角添加序號(hào),范圍19/for(y=1;y=3;y+)/a(Funcx(x)+1)(Funcy(y)+1)=i;/i+;/void Display()/打印棋盤int x=0,y=0;for(x=0;x31;x+)for(y=0;y64;y+)printf(%c,axy);void Block(int choice)/添加選擇框int x,y;for(x=Funcx(choice)+1;xFuncx(choice)+10;x+)for(y=Funcy(choice)+2;yFuncy(choice)+20;y+)if(x=Funcx(choice)+1|x=Funcx(choice)+9)if(y=Funcy(choice)+2|y=Funcy(choice)+19)axy=+;else if(yFuncy(choice)+14)axy=-;else if(xFuncx(choice)+6)if(y=Funcy(choice)+2|y=Funcy(choice)+19)axy=|;void Clear(int choice)/清空選擇框int x,y,i;for(i=1;i=9;i+)if(aFuncx(choice)+1Funcy(choice)+2=+&i!=choice)for(x=Funcx(choice)+1;xFuncx(choice)+10;x+)for(y=Funcy(choice)+2;yFuncy(choice)+20;y+)if(x=Funcx(choice)+1|x=Funcx(choice)+9)if(y=Funcy(choice)+2|y=Funcy(choice)+19)axy= ;else if(yFuncy(choice)+14)axy= ;else if(xFuncx(choice)+6)if(y=Funcy(choice)+2|y=Funcy(choice)+19)axy= ;void Black(choice)/添加黑棋int x,y;for(x=Funcx(choice)+2;xFuncx(choice)+9;x+)for(y=Funcy(choice)+4;yFuncy(choice)+18;y+)if(x=Funcx(choice)+2|x=Funcx(choice)+8)axy=#;else if(y=Funcy(choice)+4|y=Funcy(choice)+17)axy=#;void White(choice)/添加白棋int x;int d=4;for(x=Funcx(choice)+2;x=Funcx(choice)+8;x+)axFuncy(choice)+d=*;axFuncy(choice)+20-d=*;d=d+2;int Judge(int choice,char symbol)/判斷輸贏 返回值0為無結(jié)果,1為獲勝,2為平局if(aFuncx(choice)+2Funcy(choice)+4=aFuncx(choice+3)+2Funcy(choice)+4&aFuncx(choice+3)+2Funcy(choice)+4=aFuncx(choice+6)+2Funcy(choice)+4)|(aFuncx(choice)+2Funcy(choice)+4=aFuncx(choice)+2Funcy(choice+1)+4&aFuncx(choice)+2Funcy(choice+1)+4=aFuncx(choice)+2Funcy(choice+2)+4)|aFuncx(5)+2Funcy(5)+4=symbol&(aFuncx(1)+2Funcy(1)+4=aFuncx(5)+2Funcy(5)+4&aFuncx(5)+2Funcy(5)+4=aFuncx(9)+2Funcy(9)+4)|(aFuncx(3)+2Funcy(3)+4=aFuncx(5)+2Funcy(5)+4&aFuncx(5)+2Funcy(5)+4=aFuncx(7)+2Funcy(7)+4)return 1;if(b=9)return 2;return 0;int Funcx(int choice)/將標(biāo)號(hào)轉(zhuǎn)換為行號(hào)return (choice-1)/3)%3)*10;int Funcy(int choice)/將標(biāo)號(hào)轉(zhuǎn)換為列號(hào)return (choice-1)%3)*21;void End(char symbol)/結(jié)束system(cls);Display();if(symbol=*)printf(ttt 電 腦 勝 利!nn);else if(symbol=#)prin

溫馨提示

  • 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. 人人文庫網(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)論