五子棋ai一版(自制)源代碼
#include<iostream> //導(dǎo)入輸入輸出庫
#include<stdlib.h> //導(dǎo)入系統(tǒng)庫
#include<time.h> // 導(dǎo)入時(shí)間庫
using namespace std; //命名空間
int jf(){ //定義函數(shù)玩家先下
cout<<"請開始游戲,輸入坐標(biāo):x空格y"<<endl;
int qp[15][15];
for(int i = 0;i<15;i++){
for(int j=0;j<15;j++){
qp[i][j]=-1;
}
}//棋盤初始化
int a,b,a1,b1;
while(1){ //開始下棋
cin>>a>>b; //輸入坐標(biāo)
a--;
b--;
if(a<0 || a>14 || b<0||b>14){
cout<<"參數(shù)錯誤:您已超出棋盤范圍請查閱后再輸入:"<<endl;
}
else if(qp[a][b]==0 || qp[a][b] == 1){
cout<<"參數(shù)錯誤:該位置已有棋子"<<endl;
} //判斷用戶是否違規(guī)操作
else{
qp[a][b]=1;
for(int i = 0;i<15;i++){
for(int j = 0;j<15;j++){
if(qp[i][j]==-1){
cout<<".";
}
else if(qp[i][j]==0){
cout<<"x";
}
else {
cout<<"o";
}
}
cout<<endl;
}
a1=rand() % 15+1;
b1=rand() % 15+1;
a1=a1-1;
b1=b1-1;
while(qp[a1-1][b1-1] ==1 && qp[a1-1][b1-1] == 0){
a1=rand() % 15+1;
b1=rand() %15+1;
}//計(jì)算位置
qp[a1][b1]=0;
system("pause");?
system("cls");
for(int i = 0;i<15;i++){
for(int j = 0;j<15;j++){
if(qp[i][j]==-1){
cout<<".";
}
else if(qp[i][j]==0){
cout<<"x";
}
else {
cout<<"o";
}
}
cout<<endl;
}//計(jì)算機(jī)輸出坐標(biāo)和棋盤
cout<<a1<<" "<<b1<<endl;
a1--;
b1--;
}
}
return 0;
}
int wjf(){// 定義函數(shù)計(jì)算機(jī)先
cout<<"請開始游戲,輸入坐標(biāo):x空格y"<<endl;
int fc1,fc2;
int qp[15][15];
for(int i = 0;i<15;i++){
for(int j=0;j<15;j++){
qp[i][j]=-1;
}
}//初始化棋盤
int a,b,a1,b1;
a1=rand() % 15+1;
b1=rand() % 15+1;
while(qp[a1-1][b1-1] ==1 && qp[a1-1][b1-1] == 0){
a1=rand() % 15+1;
b1=rand() %15+1;
}//隨機(jī)位置
a1=a1-1;
b1=b1-1;
qp[a1][b1]=0;
system("pause");?
system("cls");
for(int i = 0;i<15;i++){
for(int j = 0;j<15;j++){
if(qp[i][j]==-1){
cout<<".";
}
else if(qp[i][j]==0){
cout<<"x";
}
else {
cout<<"o";
}
}
cout<<endl;
}//輸出棋盤
cout<<a1+1<<" "<<b1+1<<endl;
while(1){
cin>>a>>b;
a=a-1;
b=b-1;
if(a<0 || a>14 || b<0 || b>14){
cout<<"參數(shù)錯誤:您已超出棋盤范圍請查閱后再輸入:"<<endl;
}
else if(qp[a][b]==0 || qp[a][b] == 1){
cout<<"參數(shù)錯誤:該位置已有棋子請查閱后再輸入:"<<endl;
} //判斷用戶是否違規(guī)操作
else{
qp[a][b]=1;
for(int i = 0;i<15;i++){
for(int j = 0;j<15;j++){
if(qp[i][j]==-1){
cout<<".";
}
else if(qp[i][j]==0){
cout<<"x";
}
else {
cout<<"o";
}
}
cout<<endl;
}//輸出棋盤
a1=rand() % 15+1;
b1=rand() % 15+1;
a1=a1-1;
b1=b1-1;
while(qp[a1-1][b1-1] ==1 || qp[a1-1][b1-1] == 0){
a1=rand() % 15+1;
b1=rand() %15+1;
}//隨機(jī)位置
a1=a1-1;
b1=b1-1;
fc1=a1+1;
fc2=b1+1;
qp[a1][b1]=0;
system("pause");?
system("cls");
for(int i = 0;i<15;i++){
for(int j = 0;j<15;j++){
if(qp[i][j]==-1){
cout<<".";
}
else if(qp[i][j]==0){
cout<<"x";
}
else {
cout<<"o";
}
}
cout<<endl;
}//輸出棋盤
cout<<fc1<<" "<<fc2<<endl;
}
}
return 0;
}
int main(){
srand((unsigned int)time(NULL));
system("title 五子棋ai");
int a0;
cout<<"玩家先:輸入1。計(jì)算機(jī)先:輸入2"<<endl;//讓用戶選擇模式
cin>>a0;
if(a0 == 1){
jf();
}
else{
wjf();
}
return 0;
}