版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PAGEword文檔可自由復(fù)制編輯數(shù)學(xué)計算機(jī)科學(xué)學(xué)院實驗報告專業(yè)名稱12級軟件工程實驗室2號實驗樓201室實驗課程程序設(shè)計實驗課實驗名稱井子棋實驗?zāi)康闹谱鞒鲆粋€井子棋游戲,可以人機(jī)互動實驗原理1)c程序設(shè)計編程環(huán)境visual
c++,掌握運行一個c程序設(shè)計的基本步驟,包括編輯、編譯、連接和運行。2)熟練掌握Visual
C++
6.0環(huán)境運行的C程序上機(jī)步驟3)數(shù)據(jù)類型、常量和變量的使用4)表達(dá)式及運算符的應(yīng)用5)C程序的調(diào)試。需求分析判斷每個鍵入數(shù)值的合理情況輸入1-9共九個數(shù)字,已經(jīng)被占領(lǐng)的數(shù)字不可再輸入計算機(jī)可以根據(jù)人所走的地點和計算機(jī)之前走過的地點確定下一步的位置概要設(shè)計選擇人機(jī)順序選擇人機(jī)順序人先行機(jī)器先行人先行機(jī)器先行人機(jī)交替人機(jī)交替判斷贏家判斷贏家詳細(xì)設(shè)計#include"jziqi.h"statusmain(){ Hello();//簡潔的界面設(shè)計 statusi,l=0,set; printf("請輸入你想進(jìn)行的操作:1.開局,0退出\n"); scanf("%d",&i); system("CLS"); while(i==1)//進(jìn)行開局選項 { printf("請選擇游戲難度:0.困難1.簡單");//困難按分高下棋,簡單按分低下棋 scanf("%d",&set);//選擇游戲難度 if(set==0) { statuschoose,flag;//存儲用戶選擇(落子),決定誰先走 Start(); //初始化游戲 table();//打印游戲界面 printf("決定誰先走:用戶0,計算機(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"); //清屏操作,為了不在一個界面處打印電腦的操作界面 printf("計算機(jī)在下'X',稍等\n"); Computer();//計算機(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"); //清屏操作,為了不在一個界面處打印下一輪用戶的操作 table(); system("pause");//暫停系統(tǒng)的編譯,為了看到之前的界面 if(GameOver()) { system("CLS"); printf("游戲結(jié)束\n"); IsWin(); return0; } }//while }//人先手操作 elseif(flag==1) { //計算機(jī)先手 while(1) { printf("計算機(jī)在下'X',稍等\n"); Computer();//計算機(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ī)先手下棋操作 else return0; } elseif(set==1) { statuschoose,flag;//存儲用戶選擇(落子),決定誰先走 Start(); //初始化游戲 table();//打印游戲界面 printf("決定誰先走:用戶0,計算機(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"); //清屏操作,為了不在一個界面處打印電腦的操作界面 printf("計算機(jī)在下'X',稍等\n"); Computer_1();//計算機(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"); //清屏操作,為了不在一個界面處打印下一輪用戶的操作 table(); system("pause");//暫停系統(tǒng)的編譯,為了看到之前的界面 if(GameOver()) { system("CLS"); printf("游戲結(jié)束\n"); IsWin(); return0; } }//while }//人先手操作 elseif(flag==1) { //計算機(jī)先手 while(1) { printf("計算機(jī)在下'X',稍等\n"); Computer_1();//計算機(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ī)先手下棋操作 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ī)下棋(困難)statusComputer_1();//計算機(jī)下棋(簡單)statusGeziEmpty(statusside);//判斷當(dāng)前格子是否為空statusGameOver();//判斷游戲是否結(jié)束statusBoardFull();//判斷棋盤是否已滿statusHu_Man();//人贏statusCom_puter();//電腦贏voidIsWin();//判斷誰贏statusHello();//彈出對話框下棋位置算法程序:#include"jziqi.h"structNineQQ[10];//1~9為九個格子(宏定義)voidtable()//游戲界面{ printf("_________________________\n"); printf("||||\n"); printf("|%c|%c|%c|\n",Q[1].face,Q[2].face,Q[3].face);//分別對應(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);//分別對應(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);//分別對應(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)格子不為空時(滿),用戶重新從鍵盤獲取一次輸入 { printf("滿了,下別處吧\n"); printf("\a"); //提示信息,若落子位置重復(fù),發(fā)出響聲 printf("親,重新落子\n");//將用戶下棋重新來一遍 printf("落子:"); scanf("%d",&choose); } Q[choose].face='0'; //當(dāng)用戶按任意數(shù)字鍵時,對應(yīng)的數(shù)字鍵界面處打印出‘0’ //統(tǒng)計數(shù)字鍵界面每個格的分?jǐn)?shù),用于計算機(jī)下棋的算法 return1;}statusComputer()//計算機(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ù)組存儲位置 } for(i=0;i<=t;i++) //找出當(dāng)前格子為空的,分?jǐn)?shù)最高的位置 {// printf("輸出當(dāng)前空位%d",num[i]);// printf("當(dāng)前對應(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ǐn)?shù)最高的位置下棋 printf("\n計算機(jī)下在第%d格\n",l); printf("計算機(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'))//兩條對角線連成三子 returnTrue; returnFalse;// return0;}statusCom_puter()//計算機(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'))//兩條對角線連成三子 returnTrue; returnFalse;// return0;}statusBoardFull()//判斷棋盤是否已滿{ statusi; for(i=1;i<10;i++) { if(Q[i].face=='')//九個格子中至少有一個為空,沒滿的情況 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ī)下棋{ 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)容里面會有圖紙預(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 關(guān)于協(xié)議離婚的撫養(yǎng)權(quán)
- 2024夫妻自愿離婚協(xié)議書
- 貝克痣病因介紹
- 落葉型天皰瘡病因介紹
- 自身免疫性腦炎病因介紹
- 房屋與室內(nèi)環(huán)境檢測技術(shù)-模塊三房屋實體查驗與檢76課件講解
- 中小學(xué)校長2024年度述職報告范文
- 2022-2023學(xué)年天津市和平區(qū)第二南開學(xué)校高二(上)期中語文試卷
- 2024秋新滬科版物理八年級上冊教學(xué)課件 第三章 光的世界 第一節(jié)第1課時 光的直線傳播
- 靜脈治療護(hù)理技術(shù)操作標(biāo)準(zhǔn)解讀
- 云倉協(xié)議合同模板
- 2025年研究生考試考研法律碩士綜合(法學(xué)497)試題及解答參考
- 湖北省鄂東南省級示范高中教育教學(xué)改革聯(lián)盟2024-2025學(xué)年高三上學(xué)期期中考試物理試題(無答案)
- 關(guān)于開展學(xué)生矛盾糾紛排查化解工作總結(jié)
- 大學(xué)英語(基礎(chǔ))一學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 2023年湖州教師招聘安吉縣招聘擇優(yōu)錄用事業(yè)編制教師筆試真題
- 24秋國家開放大學(xué)《公共關(guān)系學(xué)》實訓(xùn)任務(wù)(5)答案
- 學(xué)校傳染病控制課件
- 福建省泉州市2023-2024學(xué)年高一上學(xué)期期末質(zhì)檢英語試題(解析版)
- 2024秋期國家開放大學(xué)??啤督ㄔO(shè)法規(guī)》一平臺在線形考(形成性作業(yè)一至五)試題及答案
評論
0/150
提交評論