




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、十五、井字棋【問題描述】設計一個井字棋的游戲程序【基本要求】游戲規(guī)則是:從一個空的棋盤開始,人為x一方,計算機為o一方,人機雙方輪流放置棋子,人下的時候,字符x將被放入棋盤中指定的位置,輪到計算機下時,程序?qū)呙杵灞P,并將字符o放入掃描到的第一個空格,某一方有3枚棋子占據(jù)了一橫行、一豎行或一對角線則獲勝,若整個棋盤被占滿還沒有一方獲勝則為和局。截圖:代碼:/author GXU-pengcheng#include<stdio.h>#include<windows.h>#include<conio.h>void Help();/幫助int Play(char
2、player,int choice);/對弈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);/將標號轉(zhuǎn)換為行號int Funcy(int choice);/將標號轉(zhuǎn)換為列號void En
3、d(char symbol);/結(jié)束int Found();/返回第一個沒有棋子的位置的編號char a3164;/用數(shù)組存放棋盤和棋子,a行列int b=0;/棋子個數(shù)int main()char player;int choice; system("title 井字棋");/設置標題system("mode con cols=64 lines=35");/設置窗口大小system("color 70");/設置顏色while(1)printf("nnnnnnttt井t字t棋");printf("nnn
4、nnnnnttt1. 玩 家 先 手nnttt2. 電 腦 先 手nnttt3. 幫 助nnttt4. 退 出nnnnntt請輸入: ");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
5、='4')return 0;elseprintf("nntt 輸入錯誤請重新輸入!");Sleep(1000);system("cls");continue;return 0;void Help()system("cls");printf("nnnnnnnnnttt 幫助nnn");printf("t 'W'上移, 'S'下移, 'A'左移, 'D'右移 nn");printf("tt 游戲中按'4
6、'退出");printf("nnnntt 按任意鍵退出");int Play(char player,int choice)/對弈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;el
7、se 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
8、 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
9、);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;x<31;x+)for(y=0;y&l
10、t;64;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)/在每個格子的左上角添加序號,范圍19/for(y=1;y&l
11、t;=3;y+)/a(Funcx(x)+1)(Funcy(y)+1)=i;/i+;/void Display()/打印棋盤int x=0,y=0;for(x=0;x<31;x+)for(y=0;y<64;y+)printf("%c",axy);void Block(int choice)/添加選擇框int x,y;for(x=Funcx(choice)+1;x<Funcx(choice)+10;x+)for(y=Funcy(choice)+2;y<Funcy(choice)+20;y+)if(x=Funcx(choice)+1|x=Funcx(cho
12、ice)+9)if(y=Funcy(choice)+2|y=Funcy(choice)+19)axy='+'else if(y<Funcy(choice)+7|y>Funcy(choice)+14)axy='-'else if(x<Funcx(choice)+4|x>Funcx(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(
13、choice)+1Funcy(choice)+2='+'&&i!=choice)for(x=Funcx(choice)+1;x<Funcx(choice)+10;x+)for(y=Funcy(choice)+2;y<Funcy(choice)+20;y+)if(x=Funcx(choice)+1|x=Funcx(choice)+9)if(y=Funcy(choice)+2|y=Funcy(choice)+19)axy=' 'else if(y<Funcy(choice)+7|y>Funcy(choice)+14)axy=&
14、#39; 'else if(x<Funcx(choice)+4|x>Funcx(choice)+6)if(y=Funcy(choice)+2|y=Funcy(choice)+19)axy=' 'void Black(choice)/添加黑棋int x,y;for(x=Funcx(choice)+2;x<Funcx(choice)+9;x+)for(y=Funcy(choice)+4;y<Funcy(choice)+18;y+)if(x=Funcx(choice)+2|x=Funcx(choice)+8)axy='#'else if
15、(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=aFun
16、cx(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
17、)+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)/將標號轉(zhuǎn)換為行號return (choice-1)/3)%3)*10;int Funcy(int choice)/將標號轉(zhuǎn)換為列號return (choice-1)%3)*21;void End(char symbol)/結(jié)束system("cls");Display();if(symbol='*')printf("ttt 電 腦 勝
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 化學品倉庫管理制度牌
- 國家安全心得體會
- 2025至2030工業(yè)EDI超純水系統(tǒng)行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 2025至2030觸摸屏手機行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 魚糜制品建設項目實施方案
- 2025至2030中國季戊四醇行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國硅納米線電池行業(yè)項目調(diào)研及市場前景預測評估報告
- 2025至2030中國保稅區(qū)行業(yè)市場深度調(diào)研及競爭格局及有效策略與實施路徑評估報告
- 2025至2030中國醫(yī)用激光儀器設備行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030全球及中國DDoS保護軟件行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- GB/T 6896-2007鈮條
- GB/T 32151.6-2015溫室氣體排放核算與報告要求第6部分:民用航空企業(yè)
- GB/T 2543.2-2001紡織品紗線捻度的測定第2部分:退捻加捻法
- 大學2023年自主招生報名登記表
- 小學體育暑假特色作業(yè)
- 2020四川考研數(shù)學二真題【含答案】
- 壓縮機拆除方案
- DB50-T 1293-2022 松材線蟲病疫木除治技術規(guī)范(標準文本)
- 微電子工藝實驗報告
- 金屬材料檢驗的標準課件
- 暑假人教版7升8年級英語試卷試題及答案
評論
0/150
提交評論