版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
PAGEword文檔可自由復(fù)制編輯數(shù)學(xué)計(jì)算機(jī)科學(xué)學(xué)院實(shí)驗(yàn)報(bào)告專業(yè)名稱12級(jí)軟件工程實(shí)驗(yàn)室2號(hào)實(shí)驗(yàn)樓201室實(shí)驗(yàn)課程程序設(shè)計(jì)實(shí)驗(yàn)課實(shí)驗(yàn)名稱井子棋實(shí)驗(yàn)?zāi)康闹谱鞒鲆粋€(gè)井子棋游戲,可以人機(jī)互動(dòng)實(shí)驗(yàn)原理1)c程序設(shè)計(jì)編程環(huán)境visual
c++,掌握運(yùn)行一個(gè)c程序設(shè)計(jì)的基本步驟,包括編輯、編譯、連接和運(yùn)行。2)熟練掌握Visual
C++
6.0環(huán)境運(yùn)行的C程序上機(jī)步驟3)數(shù)據(jù)類型、常量和變量的使用4)表達(dá)式及運(yùn)算符的應(yīng)用5)C程序的調(diào)試。需求分析判斷每個(gè)鍵入數(shù)值的合理情況輸入1-9共九個(gè)數(shù)字,已經(jīng)被占領(lǐng)的數(shù)字不可再輸入計(jì)算機(jī)可以根據(jù)人所走的地點(diǎn)和計(jì)算機(jī)之前走過的地點(diǎn)確定下一步的位置概要設(shè)計(jì)選擇人機(jī)順序選擇人機(jī)順序人先行機(jī)器先行人先行機(jī)器先行人機(jī)交替人機(jī)交替判斷贏家判斷贏家詳細(xì)設(shè)計(jì)#include"jziqi.h"statusmain(){ Hello();//簡潔的界面設(shè)計(jì) statusi,l=0,set; printf("請輸入你想進(jìn)行的操作:1.開局,0退出\n"); scanf("%d",&i); system("CLS"); while(i==1)//進(jìn)行開局選項(xiàng) { printf("請選擇游戲難度:0.困難1.簡單");//困難按分高下棋,簡單按分低下棋 scanf("%d",&set);//選擇游戲難度 if(set==0) { statuschoose,flag;//存儲(chǔ)用戶選擇(落子),決定誰先走 Start(); //初始化游戲 table();//打印游戲界面 printf("決定誰先走:用戶0,計(jì)算機(jī)1\n"); scanf("%d",&flag); //由用戶選擇先手 system("CLS");//清屏操作 if(flag==0) { //用戶先手 printf("親,輪到你了'0'\n"); printf("落子:"); scanf("%d",&choose);//用戶選擇落子位置 People(choose);//用戶 table(); system("pause");//暫停系統(tǒng)的編譯,為了看到之前的界面 while(1) { if(GameOver()) //每次用戶落子后,都要游戲是否結(jié)束,結(jié)束就退出 { system("CLS"); printf("游戲結(jié)束\n"); IsWin(); //在游戲結(jié)束后,開始判定贏家或平局 return0; } system("CLS"); //清屏操作,為了不在一個(gè)界面處打印電腦的操作界面 printf("計(jì)算機(jī)在下'X',稍等\n"); Computer();//計(jì)算機(jī)下棋的函數(shù) table(); system("pause"); //暫停系統(tǒng)的編譯,為了看到之前的界面 if(GameOver()) //每次用戶落子后,都要游戲是否結(jié)束,結(jié)束就退出 { system("CLS"); printf("游戲結(jié)束\n"); IsWin(); //在游戲結(jié)束后,開始判定贏家或平局 return0; } printf("親,輪到你了'0'\n"); printf("落子:"); scanf("%d",&choose);//用戶選擇落子位置 People(choose);//用戶 system("CLS"); //清屏操作,為了不在一個(gè)界面處打印下一輪用戶的操作 table(); system("pause");//暫停系統(tǒng)的編譯,為了看到之前的界面 if(GameOver()) { system("CLS"); printf("游戲結(jié)束\n"); IsWin(); return0; } }//while }//人先手操作 elseif(flag==1) { //計(jì)算機(jī)先手 while(1) { printf("計(jì)算機(jī)在下'X',稍等\n"); Computer();//計(jì)算機(jī) table(); system("pause"); if(GameOver()) { system("CLS"); printf("游戲結(jié)束\n"); IsWin(); return0; } printf("親,輪到你了'0'\n"); printf("落子:"); scanf("%d",&choose); People(choose);//用戶 system("CLS"); table(); system("pause"); system("CLS"); if(GameOver()) { system("CLS"); printf("游戲結(jié)束\n"); IsWin(); return0; } }//while }//計(jì)算機(jī)先手下棋操作 else return0; } elseif(set==1) { statuschoose,flag;//存儲(chǔ)用戶選擇(落子),決定誰先走 Start(); //初始化游戲 table();//打印游戲界面 printf("決定誰先走:用戶0,計(jì)算機(jī)1\n"); scanf("%d",&flag); //由用戶選擇先手system("CLS");//清屏操作 if(flag==0) { //用戶先手 printf("親,輪到你了'0'\n"); printf("落子:"); scanf("%d",&choose);//用戶選擇落子位置 People(choose);//用戶 table(); system("pause");//暫停系統(tǒng)的編譯,為了看到之前的界面 while(1) { if(GameOver()) //每次用戶落子后,都要游戲是否結(jié)束,結(jié)束就退出 { system("CLS"); printf("游戲結(jié)束\n"); IsWin(); //在游戲結(jié)束后,開始判定贏家或平局 return0; } system("CLS"); //清屏操作,為了不在一個(gè)界面處打印電腦的操作界面 printf("計(jì)算機(jī)在下'X',稍等\n"); Computer_1();//計(jì)算機(jī)下棋的函數(shù) table(); system("pause"); //暫停系統(tǒng)的編譯,為了看到之前的界面 if(GameOver()) //每次用戶落子后,都要游戲是否結(jié)束,結(jié)束就退出 { system("CLS"); printf("游戲結(jié)束\n"); IsWin(); //在游戲結(jié)束后,開始判定贏家或平局 return0; } printf("親,輪到你了'0'\n"); printf("落子:"); scanf("%d",&choose);//用戶選擇落子位置 People(choose);//用戶 system("CLS"); //清屏操作,為了不在一個(gè)界面處打印下一輪用戶的操作 table(); system("pause");//暫停系統(tǒng)的編譯,為了看到之前的界面 if(GameOver()) { system("CLS"); printf("游戲結(jié)束\n"); IsWin(); return0; } }//while }//人先手操作 elseif(flag==1) { //計(jì)算機(jī)先手 while(1) { printf("計(jì)算機(jī)在下'X',稍等\n"); Computer_1();//計(jì)算機(jī) table(); system("pause"); if(GameOver()) { system("CLS"); printf("游戲結(jié)束\n"); IsWin(); return0; } printf("親,輪到你了'0'\n"); printf("落子:"); scanf("%d",&choose); People(choose);//用戶 system("CLS"); table(); system("pause"); system("CLS"); if(GameOver()) { system("CLS"); printf("游戲結(jié)束\n"); IsWin(); return0; } }//while }//計(jì)算機(jī)先手下棋操作 else return0; } else return0; }//while游戲結(jié)束,退出 return0;}//main頭文件:#include<stdio.h>#include<string.h>#include<stdlib.h>#include<windows.h>#defineTrue1#defineFalse0typedefintstatus;structNineQ//九宮格結(jié)構(gòu)體{ intscore;//記錄當(dāng)前格子的分值 charface;//記錄當(dāng)前格子的狀態(tài)(*、o或空)};voidtable();//游戲界面voidStart();//初始化statusPeople(statuschoose);//用戶下棋statusComputer();//計(jì)算機(jī)下棋(困難)statusComputer_1();//計(jì)算機(jī)下棋(簡單)statusGeziEmpty(statusside);//判斷當(dāng)前格子是否為空statusGameOver();//判斷游戲是否結(jié)束statusBoardFull();//判斷棋盤是否已滿statusHu_Man();//人贏statusCom_puter();//電腦贏voidIsWin();//判斷誰贏statusHello();//彈出對(duì)話框下棋位置算法程序:#include"jziqi.h"structNineQQ[10];//1~9為九個(gè)格子(宏定義)voidtable()//游戲界面{ printf("_________________________\n"); printf("||||\n"); printf("|%c|%c|%c|\n",Q[1].face,Q[2].face,Q[3].face);//分別對(duì)應(yīng)格子1、2、3的落子情況 printf("||||\n"); printf("\n"); printf("||||\n"); printf("|%c|%c|%c|\n",Q[4].face,Q[5].face,Q[6].face);//分別對(duì)應(yīng)格子4、5、6的落子情況 printf("||||\n"); printf("\n"); printf("||||\n"); printf("|%c|%c|%c|\n",Q[7].face,Q[8].face,Q[9].face);//分別對(duì)應(yīng)格子7、8、9的落子情況 printf("||||\n"); printf("_________________________\n\n");}voidStart()//初始化,打印游戲界面{ statusi; Q[0].score=0; for(i=1;i<10;i++) { Q[i].face=''; Q[i].score=0; }}statusPeople(statuschoose)//用戶下棋{ while(GeziEmpty(choose))//當(dāng)格子不為空時(shí)(滿),用戶重新從鍵盤獲取一次輸入 { printf("滿了,下別處吧\n"); printf("\a"); //提示信息,若落子位置重復(fù),發(fā)出響聲 printf("親,重新落子\n");//將用戶下棋重新來一遍 printf("落子:"); scanf("%d",&choose); } Q[choose].face='0'; //當(dāng)用戶按任意數(shù)字鍵時(shí),對(duì)應(yīng)的數(shù)字鍵界面處打印出‘0’ //統(tǒng)計(jì)數(shù)字鍵界面每個(gè)格的分?jǐn)?shù),用于計(jì)算機(jī)下棋的算法 return1;}statusComputer()//計(jì)算機(jī)下棋{ inti,t=0,num[10],l=0; for(i=0;i<10;i++) num[i]=0; for(i=1;i<10;i++) { switch(i) { case1: if(Q[2].face=='X'&&Q[3].face=='X') Q[i].score+=50; if(Q[4].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[9].face=='X') Q[i].score+=50; //判斷1格子是否加‘XX’ if(Q[2].face=='0'&&Q[3].face=='0') Q[i].score+=25; if(Q[4].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[9].face=='0') Q[i].score+=25; //判斷1格子是否加‘00’ if((Q[2].face=='X'&&Q[3].face=='')||(Q[2].face==''&&Q[3].face=='X')) Q[i].score+=10; if((Q[4].face=='X'&&Q[7].face=='')||(Q[4].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[9].face=='')||(Q[5].face==''&&Q[9].face=='X')) Q[i].score+=10; //判斷1格子是否加‘X空’ if((Q[2].face=='0'&&Q[3].face=='')||(Q[2].face==''&&Q[3].face=='0')) Q[i].score+=8; if((Q[4].face=='0'&&Q[7].face=='')||(Q[4].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[9].face=='')||(Q[5].face==''&&Q[9].face=='0')) Q[i].score+=8; //判斷1格子是否加‘0空’ if((Q[2].face=='X'&&Q[3].face=='0')||(Q[2].face=='0'&&Q[3].face=='X')) Q[i].score+=0; if((Q[4].face=='0'&&Q[7].face=='0')||(Q[4].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[5].face=='0'&&Q[9].face=='0')||(Q[5].face=='0'&&Q[9].face=='X')) Q[i].score+=0; //判斷1格子是否加‘X0’ if(Q[2].face==''&&Q[3].face=='') Q[i].score+=4; if(Q[4].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[9].face=='') Q[i].score+=4; //判斷1格子是否加‘空空’ break; case2: if(Q[1].face=='X'&&Q[3].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[8].face=='X') Q[i].score+=50; //判斷2格子是否加‘XX’ if(Q[1].face=='0'&&Q[3].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[8].face=='0') Q[i].score+=25; //判斷2格子是否加‘00’ if((Q[1].face=='X'&&Q[3].face=='')||(Q[1].face==''&&Q[3].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[8].face=='')||(Q[5].face==''&&Q[8].face=='X')) Q[i].score+=10; //判斷2格子是否加‘X空’ if((Q[1].face=='0'&&Q[3].face=='')||(Q[1].face==''&&Q[3].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[8].face=='')||(Q[5].face==''&&Q[8].face=='0')) Q[i].score+=8; //判斷2格子是否加‘0空’ if((Q[1].face=='X'&&Q[3].face=='0')||(Q[1].face=='0'&&Q[3].face=='X')) Q[i].score+=0; if((Q[5].face=='X'&&Q[8].face=='0')||(Q[5].face=='0'&&Q[8].face=='X')) Q[i].score+=0; //判斷2格子是否加‘X0’if(Q[1].face==''&&Q[3].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[8].face=='') Q[i].score+=4; //判斷2格子是否加‘空空 break; case3: if(Q[1].face=='X'&&Q[2].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[6].face=='X'&&Q[9].face=='X') Q[i].score+=50; //判斷3格子是否加‘XX’ if(Q[1].face=='0'&&Q[2].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[6].face=='0'&&Q[9].face=='0') Q[i].score+=25; //判斷3格子是否加‘00’ if((Q[1].face=='X'&&Q[2].face=='')||(Q[1].face==''&&Q[2].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[7].face=='')||(Q[5].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[6].face=='X'&&Q[9].face=='')||(Q[6].face==''&&Q[9].face=='X')) Q[i].score+=10; //判斷3格子是否加‘X空’ if((Q[1].face=='0'&&Q[2].face=='')||(Q[1].face==''&&Q[2].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[7].face=='')||(Q[5].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[6].face=='0'&&Q[9].face=='')||(Q[6].face==''&&Q[9].face=='0')) Q[i].score+=8; //判斷3格子是否加‘0空’ if((Q[1].face=='X'&&Q[2].face=='0')||(Q[1].face=='0'&&Q[2].face=='X')) Q[i].score+=0; if((Q[5].face=='X'&&Q[7].face=='0')||(Q[5].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[6].face=='X'&&Q[9].face=='0')||(Q[6].face=='0'&&Q[9].face=='X')) Q[i].score+=0; //判斷3格子是否加‘X0’ if(Q[1].face==''&&Q[2].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[6].face==''&&Q[9].face=='') Q[i].score+=4; //判斷3格子是否加‘空空’ break; case4: if(Q[1].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[6].face=='X') Q[i].score+=50; //判斷4格子是否加‘XX’ if(Q[1].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[6].face=='0') Q[i].score+=25; //判斷4格子是否加‘00’ if((Q[1].face=='X'&&Q[7].face=='')||(Q[1].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[6].face=='')||(Q[5].face==''&&Q[6].face=='X')) Q[i].score+=10; //判斷4格子是否加‘X空’ if((Q[1].face=='0'&&Q[7].face=='')||(Q[1].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[6].face=='')||(Q[5].face==''&&Q[6].face=='0')) Q[i].score+=8; //判斷4格子是否加‘0空’ if((Q[1].face=='X'&&Q[7].face=='0')||(Q[1].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[5].face=='X'&&Q[6].face=='0')||(Q[5].face=='0'&&Q[6].face=='X')) Q[i].score+=0; //判斷4格子是否加‘X0’if(Q[1].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[6].face=='') Q[i].score+=4; //判斷4格子是否加‘空空 break; case5: if(Q[1].face=='X'&&Q[9].face=='X') Q[i].score+=50; if(Q[2].face=='X'&&Q[8].face=='X') Q[i].score+=50; if(Q[3].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[4].face=='X'&&Q[6].face=='X') Q[i].score+=50; //判斷5格子是否加‘XX’ if(Q[1].face=='0'&&Q[9].face=='0') Q[i].score+=25; if(Q[2].face=='0'&&Q[8].face=='0') Q[i].score+=25; if(Q[3].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[4].face=='0'&&Q[6].face=='0') Q[i].score+=25; //判斷5格子是否加‘00’ if((Q[1].face=='X'&&Q[9].face=='')||(Q[1].face==''&&Q[9].face=='X')) Q[i].score+=10; if((Q[2].face=='X'&&Q[8].face=='')||(Q[2].face==''&&Q[8].face=='X')) Q[i].score+=10; if((Q[3].face=='X'&&Q[7].face=='')||(Q[3].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[4].face=='X'&&Q[6].face=='')||(Q[4].face==''&&Q[6].face=='X')) Q[i].score+=10; //判斷5格子是否加‘X空’ if((Q[1].face=='0'&&Q[9].face=='')||(Q[1].face==''&&Q[9].face=='0')) Q[i].score+=8; if((Q[2].face=='0'&&Q[8].face=='')||(Q[2].face==''&&Q[8].face=='0')) Q[i].score+=8; if((Q[3].face=='0'&&Q[7].face=='')||(Q[3].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[4].face=='0'&&Q[6].face=='')||(Q[4].face==''&&Q[6].face=='0')) Q[i].score+=8; //判斷5格子是否加‘0空’ if((Q[1].face=='X'&&Q[9].face=='0')||(Q[1].face=='0'&&Q[9].face=='X')) Q[i].score+=0; if((Q[2].face=='X'&&Q[8].face=='0')||(Q[2].face=='0'&&Q[8].face=='X')) Q[i].score+=0; if((Q[3].face=='X'&&Q[7].face=='0')||(Q[3].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[4].face=='X'&&Q[6].face=='0')||(Q[4].face=='0'&&Q[6].face=='X')) Q[i].score+=0; //判斷5格子是否加‘X0’ if(Q[1].face==''&&Q[9].face=='') Q[i].score+=4; if(Q[2].face==''&&Q[8].face=='') Q[i].score+=4; if(Q[3].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[4].face==''&&Q[6].face=='') Q[i].score+=4; //判斷5格子是否加‘空空’ break; case6: if(Q[3].face=='X'&&Q[9].face=='X') Q[i].score+=50; if(Q[4].face=='X'&&Q[5].face=='X') Q[i].score+=50; //判斷6格子是否加‘XX’ if(Q[3].face=='0'&&Q[9].face=='0') Q[i].score+=25; if(Q[4].face=='0'&&Q[5].face=='0') Q[i].score+=25; //判斷6格子是否加‘00’ if((Q[3].face=='X'&&Q[9].face=='')||(Q[3].face==''&&Q[9].face=='X')) Q[i].score+=10; if((Q[4].face=='X'&&Q[5].face=='')||(Q[4].face==''&&Q[5].face=='X')) Q[i].score+=10; //判斷6格子是否加‘X空’ if((Q[3].face=='0'&&Q[9].face=='')||(Q[3].face==''&&Q[9].face=='0')) Q[i].score+=8; if((Q[4].face=='0'&&Q[5].face=='')||(Q[4].face==''&&Q[5].face=='0')) Q[i].score+=8; //判斷6格子是否加‘0空’ if((Q[3].face=='X'&&Q[9].face=='0')||(Q[3].face=='0'&&Q[9].face=='X')) Q[i].score+=0; if((Q[4].face=='X'&&Q[5].face=='0')||(Q[4].face=='0'&&Q[5].face=='X')) Q[i].score+=0; //判斷6格子是否加‘X0’if(Q[3].face==''&&Q[9].face=='') Q[i].score+=4; if(Q[4].face==''&&Q[5].face=='') Q[i].score+=4; //判斷6格子是否加‘空空 break; case7: if(Q[1].face=='X'&&Q[4].face=='X') Q[i].score+=50; if(Q[3].face=='X'&&Q[5].face=='X') Q[i].score+=50; if(Q[8].face=='X'&&Q[9].face=='X') Q[i].score+=50; //判斷7格子是否加‘XX’ if(Q[1].face=='0'&&Q[4].face=='0') Q[i].score+=25; if(Q[3].face=='0'&&Q[5].face=='0') Q[i].score+=25; if(Q[8].face=='0'&&Q[9].face=='0') Q[i].score+=25; //判斷7格子是否加‘00’ if((Q[1].face=='X'&&Q[4].face=='')||(Q[1].face==''&&Q[4].face=='X')) Q[i].score+=10; if((Q[3].face=='X'&&Q[5].face=='')||(Q[3].face==''&&Q[5].face=='X')) Q[i].score+=10; if((Q[8].face=='X'&&Q[9].face=='')||(Q[6].face==''&&Q[9].face=='X')) Q[i].score+=10; //判斷7格子是否加‘X空’ if((Q[1].face=='0'&&Q[4].face=='')||(Q[1].face==''&&Q[4].face=='0')) Q[i].score+=8; if((Q[3].face=='0'&&Q[5].face=='')||(Q[3].face==''&&Q[5].face=='0')) Q[i].score+=8; if((Q[8].face=='0'&&Q[9].face=='')||(Q[8].face==''&&Q[9].face=='0')) Q[i].score+=8; //判斷7格子是否加‘0空’ if((Q[1].face=='X'&&Q[4].face=='0')||(Q[1].face=='0'&&Q[4].face=='X')) Q[i].score+=0; if((Q[3].face=='X'&&Q[5].face=='0')||(Q[3].face=='0'&&Q[5].face=='X')) Q[i].score+=0; if((Q[8].face=='X'&&Q[9].face=='0')||(Q[8].face=='0'&&Q[9].face=='X')) Q[i].score+=0; //判斷7格子是否加‘X0’ if(Q[1].face==''&&Q[4].face=='') Q[i].score+=4; if(Q[3].face==''&&Q[5].face=='') Q[i].score+=4; if(Q[8].face==''&&Q[9].face=='') Q[i].score+=4; //判斷7格子是否加‘空空’ break; case8: if(Q[2].face=='X'&&Q[5].face=='X') Q[i].score+=50; if(Q[7].face=='X'&&Q[9].face=='X') Q[i].score+=50; //判斷8格子是否加‘XX’ if(Q[2].face=='0'&&Q[5].face=='0') Q[i].score+=25; if(Q[7].face=='0'&&Q[9].face=='0') Q[i].score+=25; //判斷8格子是否加‘00’ if((Q[2].face=='X'&&Q[5].face=='')||(Q[2].face==''&&Q[5].face=='X')) Q[i].score+=10; if((Q[7].face=='X'&&Q[9].face=='')||(Q[7].face==''&&Q[9].face=='X')) Q[i].score+=10; //判斷8格子是否加‘X空’ if((Q[2].face=='0'&&Q[5].face=='')||(Q[2].face==''&&Q[5].face=='0')) Q[i].score+=8; if((Q[7].face=='0'&&Q[9].face=='')||(Q[7].face==''&&Q[9].face=='0')) Q[i].score+=8; //判斷8格子是否加‘0空’ if((Q[2].face=='X'&&Q[5].face=='0')||(Q[2].face=='0'&&Q[5].face=='X')) Q[i].score+=0; if((Q[7].face=='X'&&Q[9].face=='0')||(Q[7].face=='0'&&Q[9].face=='X')) Q[i].score+=0; //判斷6格子是否加‘X0’if(Q[2].face==''&&Q[5].face=='') Q[i].score+=4; if(Q[7].face==''&&Q[9].face=='') Q[i].score+=4; //判斷6格子是否加‘空空 break; case9: if(Q[1].face=='X'&&Q[5].face=='X') Q[i].score+=50; if(Q[3].face=='X'&&Q[6].face=='X') Q[i].score+=50; if(Q[7].face=='X'&&Q[8].face=='X') Q[i].score+=50; //判斷9格子是否加‘XX’ if(Q[1].face=='0'&&Q[5].face=='0') Q[i].score+=25; if(Q[3].face=='0'&&Q[6].face=='0') Q[i].score+=25; if(Q[7].face=='0'&&Q[8].face=='0') Q[i].score+=25; //判斷9格子是否加‘00’ if((Q[1].face=='X'&&Q[5].face=='')||(Q[1].face==''&&Q[5].face=='X')) Q[i].score+=10; if((Q[3].face=='X'&&Q[6].face=='')||(Q[3].face==''&&Q[6].face=='X')) Q[i].score+=10; if((Q[7].face=='X'&&Q[8].face=='')||(Q[7].face==''&&Q[8].face=='X')) Q[i].score+=10; //判斷9格子是否加‘X空’ if((Q[1].face=='0'&&Q[5].face=='')||(Q[1].face==''&&Q[5].face=='0')) Q[i].score+=8; if((Q[3].face=='0'&&Q[6].face=='')||(Q[3].face==''&&Q[6].face=='0')) Q[i].score+=8; if((Q[7].face=='0'&&Q[8].face=='')||(Q[7].face==''&&Q[8].face=='0')) Q[i].score+=8; //判斷9格子是否加‘0空’ if((Q[1].face=='X'&&Q[5].face=='0')||(Q[1].face=='0'&&Q[5].face=='X')) Q[i].score+=0; if((Q[3].face=='X'&&Q[6].face=='0')||(Q[3].face=='0'&&Q[6].face=='X')) Q[i].score+=0; if((Q[7].face=='X'&&Q[8].face=='0')||(Q[7].face=='0'&&Q[8].face=='X')) Q[i].score+=0; //判斷9格子是否加‘X0’ if(Q[1].face==''&&Q[5].face=='') Q[i].score+=4; if(Q[3].face==''&&Q[6].face=='') Q[i].score+=4; if(Q[7].face==''&&Q[8].face=='') Q[i].score+=4; //判斷9格子是否加‘空空’ break; }} for(i=1;i<10;i++) { if(!GeziEmpty(i))//找出當(dāng)前格子為空的位置 num[t++]=i; //用數(shù)組存儲(chǔ)位置 } for(i=0;i<=t;i++) //找出當(dāng)前格子為空的,分?jǐn)?shù)最高的位置 {// printf("輸出當(dāng)前空位%d",num[i]);// printf("當(dāng)前對(duì)應(yīng)的分?jǐn)?shù)%d",Q[num[i]].score);// printf("\n"); if(Q[num[i]].score>Q[0].score) { Q[0].score=Q[num[i]].score; l=num[i]; } } Q[0].score=0; Q[l].face='X'; //計(jì)算機(jī)在分?jǐn)?shù)最高的位置下棋 printf("\n計(jì)算機(jī)下在第%d格\n",l); printf("計(jì)算機(jī)當(dāng)前格的分?jǐn)?shù)%d\n",Q[l].score);for(i=0;i<10;i++){ Q[i].score=0;}return1;}statusGeziEmpty(statusside)//判斷當(dāng)前所下的格子是否為空{(diào) if(Q[side].face!='') //當(dāng)前格子為滿 return1; return0; //當(dāng)前格子為空}statusHu_Man()//人贏{ statusi,j; for(j=0;j<2;j++) {if(Q[3*j+1].face=='0'&&Q[3*j+2].face=='0'&&Q[3*j+3].face=='0')//行連成三子,Q[1]Q[2]Q[3],Q[4]Q[5]Q[6],Q[7]Q[8]Q[9]分別判斷連三子 returnTrue;} for(i=1;i<=3;i++) if(Q[i].face=='0'&&Q[i+3].face=='0'&&Q[i+6].face=='0')//列連成三子,Q[1]Q[4]Q[7],Q[2]Q[5]Q[8],Q[3]Q[6]Q[9]分別判斷連三子 returnTrue; if((Q[1].face=='0'&&Q[5].face=='0'&&Q[9].face=='0')||(Q[3].face=='0'&&Q[5].face=='0'&&Q[7].face=='0'))//兩條對(duì)角線連成三子 returnTrue; returnFalse;// return0;}statusCom_puter()//計(jì)算機(jī)贏{ statusi,j; for(j=0;j<2;j++) { if(Q[3*j+1].face=='X'&&Q[3*j+2].face=='X'&&Q[3*j+3].face=='X')//行連成三子,Q[1]Q[2]Q[3],Q[4]Q[5]Q[6],Q[7]Q[8]Q[9]分別判斷連三子 returnTrue;} for(i=1;i<=3;i++) if(Q[i].face=='X'&&Q[i+3].face=='X'&&Q[i+6].face=='X')//列連成三子,Q[1]Q[4]Q[7],Q[2]Q[5]Q[8],Q[3]Q[6]Q[9]分別判斷連三子 returnTrue; if((Q[1].face=='X'&&Q[5].face=='X'&&Q[9].face=='X')||(Q[3].face=='X'&&Q[5].face=='X'&&Q[7].face=='X'))//兩條對(duì)角線連成三子 returnTrue; returnFalse;// return0;}statusBoardFull()//判斷棋盤是否已滿{ statusi; for(i=1;i<10;i++) { if(Q[i].face=='')//九個(gè)格子中至少有一個(gè)為空,沒滿的情況 returnFalse; } returnTrue;// return0;}statusGameOver()//判斷游戲是否結(jié)束{ if(!Com_puter()&&!Hu_Man()&&!BoardFull())//電腦沒贏,人沒贏并且棋盤不為空的情況,即游戲還在進(jìn)行 return0; return1;} voidIsWin()//判斷誰贏{ if(Com_puter()) printf("Computerwins!\n");//游戲結(jié)束,電腦贏了 else if(Hu_Man()) printf("Hunmanwins!\n"); //游戲結(jié)束,人贏了 else if(BoardFull()) printf("Boardisfull!平局\n");//游戲結(jié)束,平局 }statusComputer_1()//計(jì)算機(jī)下棋{ inti,t=0,num[10],l=0; for(i=0;i<10;i++) num[i]=0; for(i=1;i<10;i++) { switch(i) { case1: if(Q[2].face=='X'&&Q[3].face=='X') Q[i].score+=50; if(Q[4].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[9].face=='X') Q[i].score+=50; //判斷1格子是否加‘XX’ if(Q[2].face=='0'&&Q[3].face=='0') Q[i].score+=25; if(Q[4].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[9].face=='0') Q[i].score+=25; //判斷1格子是否加‘00’ if((Q[2].face=='X'&&Q[3].face=='')||(Q[2].face==''&&Q[3].face=='X')) Q[i].score+=10; if((Q[4].face=='X'&&Q[7].face=='')||(Q[4].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[9].face=='')||(Q[5].face==''&&Q[9].face=='X')) Q[i].score+=10; //判斷1格子是否加‘X空’ if((Q[2].face=='0'&&Q[3].face=='')||(Q[2].face==''&&Q[3].face=='0')) Q[i].score+=8; if((Q[4].face=='0'&&Q[7].face=='')||(Q[4].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[9].face=='')||(Q[5].face==''&&Q[9].face=='0')) Q[i].score+=8; //判斷1格子是否加‘0空’ if((Q[2].face=='X'&&Q[3].face=='0')||(Q[2].face=='0'&&Q[3].face=='X')) Q[i].score+=0; if((Q[4].face=='0'&&Q[7].face=='0')||(Q[4].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[5].face=='0'&&Q[9].face=='0')||(Q[5].face=='0'&&Q[9].face=='X')) Q[i].score+=0; //判斷1格子是否加‘X0’ if(Q[2].face==''&&Q[3].face=='') Q[i].score+=4; if(Q[4].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[9].face=='') Q[i].score+=4; //判斷1格子是否加‘空空’ break; case2: if(Q[1].face=='X'&&Q[3].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[8].face=='X') Q[i].score+=50; //判斷2格子是否加‘XX’ if(Q[1].face=='0'&&Q[3].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[8].face=='0') Q[i].score+=25; //判斷2格子是否加‘00’ if((Q[1].face=='X'&&Q[3].face=='')||(Q[1].face==''&&Q[3].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[8].face=='')||(Q[5].face==''&&Q[8].face=='X')) Q[i].score+=10; //判斷2格子是否加‘X空’ if((Q[1].face=='0'&&Q[3].face=='')||(Q[1].face==''&&Q[3].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[8].face=='')||(Q[5].face==''&&Q[8].face=='0')) Q[i].score+=8; //判斷2格子是否加‘0空’ if((Q[1].face=='X'&&Q[3].face=='0')||(Q[1].face=='0'&&Q[3].face=='X')) Q[i].score+=0; if((Q[5].face=='X'&&Q[8].face=='0')||(Q[5].face=='0'&&Q[8].face=='X')) Q[i].score+=0; //判斷2格子是否加‘X0’if(Q[1].face==''&&Q[3].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[8].face=='') Q[i].score+=4; //判斷2格子是否加‘空空 break; case3: if(Q[1].face=='X'&&Q[2].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[6].face=='X'&&Q[9].face=='X') Q[i].score+=50; //判斷3格子是否加‘XX’ if(Q[1].face=='0'&&Q[2].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[6].face=='0'&&Q[9].face=='0') Q[i].score+=25; //判斷3格子是否加‘00’ if((Q[1].face=='X'&&Q[2].face=='')||(Q[1].face==''&&Q[2].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[7].face=='')||(Q[5].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[6].face=='X'&&Q[9].face=='')||(Q[6].face==''&&Q[9].face=='X')) Q[i].score+=10; //判斷3格子是否加‘X空’ if((Q[1].face=='0'&&Q[2].face=='')||(Q[1].face==''&&Q[2].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[7].face=='')||(Q[5].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[6].face=='0'&&Q[9].face=='')||(Q[6].face==''&&Q[9].face=='0')) Q[i].score+=8; //判斷3格子是否加‘0空’ if((Q[1].face=='X'&&Q[2].face=='0')||(Q[1].face=='0'&&Q[2].face=='X')) Q[i].score+=0; if((Q[5].face=='X'&&Q[7].face=='0')||(Q[5].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[6].face=='X'&&Q[9].face=='0')||(Q[6].face=='0'&&Q[9].face=='X')) Q[i].score+=0; //判斷3格子是否加‘X0’ if(Q[1].face==''&&Q[2].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[6].face==''&&Q[9].face=='') Q[i].score+=4; //判斷3格子是否加‘空空’ break; case4: if(Q[1].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[5].face=='X'&&Q[6].face=='X') Q[i].score+=50; //判斷4格子是否加‘XX’ if(Q[1].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[5].face=='0'&&Q[6].face=='0') Q[i].score+=25; //判斷4格子是否加‘00’ if((Q[1].face=='X'&&Q[7].face=='')||(Q[1].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[5].face=='X'&&Q[6].face=='')||(Q[5].face==''&&Q[6].face=='X')) Q[i].score+=10; //判斷4格子是否加‘X空’ if((Q[1].face=='0'&&Q[7].face=='')||(Q[1].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[5].face=='0'&&Q[6].face=='')||(Q[5].face==''&&Q[6].face=='0')) Q[i].score+=8; //判斷4格子是否加‘0空’ if((Q[1].face=='X'&&Q[7].face=='0')||(Q[1].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[5].face=='X'&&Q[6].face=='0')||(Q[5].face=='0'&&Q[6].face=='X')) Q[i].score+=0; //判斷4格子是否加‘X0’if(Q[1].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[5].face==''&&Q[6].face=='') Q[i].score+=4; //判斷4格子是否加‘空空 break; case5: if(Q[1].face=='X'&&Q[9].face=='X') Q[i].score+=50; if(Q[2].face=='X'&&Q[8].face=='X') Q[i].score+=50; if(Q[3].face=='X'&&Q[7].face=='X') Q[i].score+=50; if(Q[4].face=='X'&&Q[6].face=='X') Q[i].score+=50; //判斷5格子是否加‘XX’ if(Q[1].face=='0'&&Q[9].face=='0') Q[i].score+=25; if(Q[2].face=='0'&&Q[8].face=='0') Q[i].score+=25; if(Q[3].face=='0'&&Q[7].face=='0') Q[i].score+=25; if(Q[4].face=='0'&&Q[6].face=='0') Q[i].score+=25; //判斷5格子是否加‘00’ if((Q[1].face=='X'&&Q[9].face=='')||(Q[1].face==''&&Q[9].face=='X')) Q[i].score+=10; if((Q[2].face=='X'&&Q[8].face=='')||(Q[2].face==''&&Q[8].face=='X')) Q[i].score+=10; if((Q[3].face=='X'&&Q[7].face=='')||(Q[3].face==''&&Q[7].face=='X')) Q[i].score+=10; if((Q[4].face=='X'&&Q[6].face=='')||(Q[4].face==''&&Q[6].face=='X')) Q[i].score+=10; //判斷5格子是否加‘X空’ if((Q[1].face=='0'&&Q[9].face=='')||(Q[1].face==''&&Q[9].face=='0')) Q[i].score+=8; if((Q[2].face=='0'&&Q[8].face=='')||(Q[2].face==''&&Q[8].face=='0')) Q[i].score+=8; if((Q[3].face=='0'&&Q[7].face=='')||(Q[3].face==''&&Q[7].face=='0')) Q[i].score+=8; if((Q[4].face=='0'&&Q[6].face=='')||(Q[4].face==''&&Q[6].face=='0')) Q[i].score+=8; //判斷5格子是否加‘0空’ if((Q[1].face=='X'&&Q[9].face=='0')||(Q[1].face=='0'&&Q[9].face=='X')) Q[i].score+=0; if((Q[2].face=='X'&&Q[8].face=='0')||(Q[2].face=='0'&&Q[8].face=='X')) Q[i].score+=0; if((Q[3].face=='X'&&Q[7].face=='0')||(Q[3].face=='0'&&Q[7].face=='X')) Q[i].score+=0; if((Q[4].face=='X'&&Q[6].face=='0')||(Q[4].face=='0'&&Q[6].face=='X')) Q[i].score+=0; //判斷5格子是否加‘X0’ if(Q[1].face==''&&Q[9].face=='') Q[i].score+=4; if(Q[2].face==''&&Q[8].face=='') Q[i].score+=4; if(Q[3].face==''&&Q[7].face=='') Q[i].score+=4; if(Q[4].face==''&&Q[6].face=='') Q[i].score+=4; //判斷5格子是否加‘空空’ break; case6: if(Q[3].face=='X'&&Q[9].face=='X') Q[i].score+=50; if(Q[4].face=='X'&&Q[5].face=='X') Q[i].score+=50; //判斷6格子是否加‘XX’ if(Q[3].face=='0'&&Q[9].face=='0') Q[i].score+=25; if(Q[4].face=='0'&&Q[5].face=='0') Q[i].score+=25; //判斷6格子是否加‘00’ if((Q[3].face=='X'&&Q[9].face=='')||(Q[3].face==''&&Q[9].face=='X')) Q[i].score+=10; if((Q[4].face=='X'&&Q[5].face=='')||(Q[4].face==''&&Q[5].face=='X')) Q[i].score+=10; //判斷6格子是否加‘X空’ if((Q[3].face=='0'&&Q[9].face=='')||(Q[3].face==''&&Q[9].face=='0')) Q[i].score+=8; if((Q[4].face=='0'&&Q[5].face=='')||(Q[4].face==''&&Q[5].face=='0')) Q[i].score+=8; //判斷6格子是否加‘0空’ if((Q[3].face=='X'&&Q[9].face=='0')||(Q[3].face=='0'&&Q[9].face=='X')) Q[i].score+=0; if((Q[4].face=='X'&&Q[5].face=='0')||(Q[4].face=='0'&&Q[5].face=='X')) Q[i].score+=0; //判斷6格子是否加‘X0’if(Q[3].face==''&&Q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度毛竹山承包經(jīng)營與竹林碳匯交易合同3篇
- 專用工程車輛租賃合同書2024版
- 二零二五年度地下車庫車位劃線與通風(fēng)照明改造合同4篇
- 二零二五年度活動(dòng)板房安裝與智能化家居系統(tǒng)合同3篇
- 2025年度跨境電商進(jìn)口商品代理銷售合同模板
- 二零二五年度池塘租賃合同(含水產(chǎn)養(yǎng)殖產(chǎn)業(yè)鏈合作)4篇
- 2025年度智能電動(dòng)摩托車全球購銷一體化服務(wù)合同模板4篇
- 2025年度大學(xué)生活動(dòng)中心戶外運(yùn)動(dòng)場地建設(shè)合同
- 2025年智能物流柴油供應(yīng)合同范本4篇
- 2025年度個(gè)人二手住宅買賣合同糾紛解決機(jī)制2篇
- 蛋糕店服務(wù)員勞動(dòng)合同
- 土地買賣合同參考模板
- 2025高考數(shù)學(xué)二輪復(fù)習(xí)-專題一-微專題10-同構(gòu)函數(shù)問題-專項(xiàng)訓(xùn)練【含答案】
- 新能源行業(yè)市場分析報(bào)告
- 2025年天津市政建設(shè)集團(tuán)招聘筆試參考題庫含答案解析
- 巖土工程勘察.課件
- 60歲以上務(wù)工免責(zé)協(xié)議書
- 2022年7月2日江蘇事業(yè)單位統(tǒng)考《綜合知識(shí)和能力素質(zhì)》(管理崗)
- 沈陽理工大學(xué)《數(shù)》2022-2023學(xué)年第一學(xué)期期末試卷
- 初一英語語法練習(xí)
- XX公司年會(huì)活動(dòng)報(bào)價(jià)單
評(píng)論
0/150
提交評(píng)論