阅读量:0
代码放下面了,关于步骤介绍的我以后再完善一下。
#include<bits/stdc++.h> #include<cstdio> #include<cstdlib> #include<ctime> #include<windows.h> #include<stdlib.h> #include<time.h> #define random(x) (rand()%x) using namespace std; //--------------------------------五子棋------------------------------------// //player_1:o //player_2:x int Game_mode; char qizi[25][25]; HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); //主要模块 void print_checkerboard(){ SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY); cout<<" "; for(int i=1;i<=20;i++){ cout<<i<<" "; if(i<10) cout<<" "; } cout<<endl; for(int i=1;i<=20;i++){ if(i<10) cout<<" "; cout<<i<<" "; for(int j=1;j<=20;j++){ if(qizi[i][j]=='o'){ SetConsoleTextAttribute(handle, FOREGROUND_BLUE | FOREGROUND_INTENSITY); cout<<qizi[i][j]<<" "; SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY); }else if(qizi[i][j]=='x'){ SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_INTENSITY); cout<<qizi[i][j]<<" "; SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY); }else{ SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY); cout<<qizi[i][j]<<" "; } } cout<<endl; } } bool inspect_1(){ for(int i=1;i<=20;i++){ for(int j=1;j<=20;j++){ if(qizi[i][j]=='o'){ if((qizi[i+1][j]=='o'&&qizi[i+2][j]=='o'&&qizi[i+3][j]=='o'&&qizi[i+4][j]=='o') or (qizi[i-1][j]=='o'&&qizi[i-2][j]=='o'&&qizi[i-3][j]=='o'&&qizi[i-4][j]=='o') or (qizi[i][j+1]=='o'&&qizi[i][j+2]=='o'&&qizi[i][j+3]=='o'&&qizi[i][j+4]=='o') or (qizi[i][j-1]=='o'&&qizi[i][j-2]=='o'&&qizi[i][j-3]=='o'&&qizi[i][j-4]=='o') or (qizi[i+1][j+1]=='o'&&qizi[i+2][j+2]=='o'&&qizi[i+3][j+3]=='o'&&qizi[i+4][j+4]=='o') or (qizi[i+1][j-1]=='o'&&qizi[i+2][j-2]=='o'&&qizi[i+3][j-3]=='o'&&qizi[i+4][j-4]=='o') or (qizi[i-1][j+1]=='o'&&qizi[i-2][j+2]=='o'&&qizi[i-3][j+3]=='o'&&qizi[i-4][j+4]=='o') or (qizi[i-1][j-1]=='o'&&qizi[i-2][j-2]=='o'&&qizi[i-3][j-3]=='o'&&qizi[i-4][j-4]=='o') ) { return true; } } } } return false; } bool inspect_2(){ for(int i=1;i<=20;i++){ for(int j=1;j<=20;j++){ if(qizi[i][j]=='x'){ if((qizi[i+1][j]=='x'&&qizi[i+2][j]=='x'&&qizi[i+3][j]=='x'&&qizi[i+4][j]=='x') or (qizi[i-1][j]=='x'&&qizi[i-2][j]=='x'&&qizi[i-3][j]=='x'&&qizi[i-4][j]=='x') or (qizi[i][j+1]=='x'&&qizi[i][j+2]=='x'&&qizi[i][j+3]=='x'&&qizi[i][j+4]=='x') or (qizi[i][j-1]=='x'&&qizi[i][j-2]=='x'&&qizi[i][j-3]=='x'&&qizi[i][j-4]=='x') or (qizi[i+1][j+1]=='x'&&qizi[i+2][j+2]=='x'&&qizi[i+3][j+3]=='x'&&qizi[i+4][j+4]=='x') or (qizi[i+1][j-1]=='x'&&qizi[i+2][j-2]=='x'&&qizi[i+3][j-3]=='x'&&qizi[i+4][j-4]=='x') or (qizi[i-1][j+1]=='x'&&qizi[i-2][j+2]=='x'&&qizi[i-3][j+3]=='x'&&qizi[i-4][j+4]=='x') or (qizi[i-1][j-1]=='x'&&qizi[i-2][j-2]=='x'&&qizi[i-3][j-3]=='x'&&qizi[i-4][j-4]=='x') ) { return true; } } } } return false; } //电脑模块 void reflection(){ system("cls"); for(int i=1;i<=2;i++){ print_checkerboard(); cout<<"电脑正在思考中"; for(int i=1;i<=3;i++){ cout<<"."; Sleep(500); } system("cls"); } } void lianzi_3_o(){ for(int i=1;i<=20;i++){ for(int j=1;j<=20;j++){ if(qizi[i][j]=='o'){ if(qizi[i+1][j]=='o' and qizi[i+2][j]=='o'){ } } } } } int main(){ memset(qizi, 42 , sizeof(qizi)); HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(handle, BACKGROUND_BLUE | BACKGROUND_GREEN); SetConsoleTextAttribute(handle, FOREGROUND_BLUE ); cout<<"请先确定游戏模式:"<<endl; cout<<"1.(玩家VS电脑)"<<endl; cout<<"2.(玩家VS玩家)"<<endl; SetConsoleTextAttribute(handle, FOREGROUND_RED ); cin>>Game_mode; system("cls"); if(Game_mode==1){ // print_checkerboard(); // int cmp=0,player=0; // int player_x=0,player_y=0; // int cmp_x=0,cmp_y=0; // int F_PER=0,F_CMP=0; // srand(( int )time(0)); // int order=random(2); // if(order==1){ // player=1,cmp=0; // F_PER=1; // cout<<"你先下。。。"<<endl; // Sleep(3000); // system("cls"); // }else{ // player=0,cmp=1; // F_CMP=1; // cout<<"电脑先下。。。"<<endl; // Sleep(3000); // system("cls"); // } // while(inspect_1()==false and inspect_2()==false){ // if(player==1){ // int a=0,b=0; // while(a>20 or b>20 or qizi[a][b]=='o'||qizi[a][b]=='x'){ // a=0,b=0; // cin>>a>>b; // if(a>20 or b>20){ // system("cls"); // print_checkerboard(); // SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_INTENSITY); // cout<<"超出棋盘范围,请重新输入!"<<endl; // SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY); // } // if(a<=20 and b<=20) { // if(qizi[a][b]=='o'||qizi[a][b]=='x'){ // system("cls"); // print_checkerboard(); // SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_INTENSITY); // cout<<"此坐标已有棋子,请重新输入!"<<endl; // SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY); // }else{ // player_x=a,player_y=b; // break; // } // // } // } // if(F_PER==1){ // qizi[player_x][player_y]='o'; // system("cls"); // print_checkerboard(); // if(inspect_1()){ // cout<<"哈哈,你赢了!"<<endl; // system("pause"); // } // system("cls"); // }else{ // qizi[player_x][player_y]='x'; // system("cls"); // print_checkerboard(); // if(inspect_2()){ // cout<<"哈哈,你赢了!"<<endl; // system("pause"); // } // } // }else{ // int a=0,b=0; // print_checkerboard(); // reflection(); // // } // } }else if(Game_mode==2){ bool player1=0,player2=0; int player1_x,player1_y; int player2_x,player2_y; print_checkerboard(); while(inspect_1()==false and inspect_2()==false){ if(player1==0) { int a=0,b=0; while(a>20 or b>20 or qizi[a][b]=='o'||qizi[a][b]=='x'){ a=0,b=0; cin>>a>>b; if(a>20 or b>20){ system("cls"); print_checkerboard(); SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_INTENSITY); cout<<"超出棋盘范围,请重新输入!"<<endl; SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY); } if(a<=20 and b<=20) { if(qizi[a][b]=='o'||qizi[a][b]=='x'){ system("cls"); print_checkerboard(); SetConsoleTextAttribute(handle, FOREGROUND_RED | FOREGROUND_INTENSITY); cout<<"此坐标已有棋子,请重新输入!"<<endl; SetConsoleTextAttribute(handle, FOREGROUND_GREEN | FOREGROUND_INTENSITY); }else{ player1_x=a,player1_y=b; break; } } } qizi[player1_x][player1_y]='o'; system("cls"); print_checkerboard(); if(inspect_1()==true){ cout<<"哈哈,玩家1,赢了!"<<endl; system("pause"); return 0; } player1=1; player2=0; } if(player2==0) { int a=0,b=0; while(a>20 or b>20 or qizi[a][b]=='o'or qizi[a][b]=='x'){ a=0,b=0; cin>>a>>b; if(a>20 or b>20){ system("cls"); print_checkerboard(); SetConsoleTextAttribute(handle, FOREGROUND_RED); cout<<"超出棋盘范围,请重新输入!"<<endl; SetConsoleTextAttribute(handle, FOREGROUND_GREEN); } if(a<=20 and b<=20) { if(qizi[a][b]=='o'||qizi[a][b]=='x'){ system("cls"); print_checkerboard(); SetConsoleTextAttribute(handle, FOREGROUND_RED); cout<<"此坐标已有棋子,请重新输入!"<<endl; SetConsoleTextAttribute(handle, FOREGROUND_GREEN); }else{ player2_x=a,player2_y=b; break; } } } qizi[player2_x][player2_y]='x'; system("cls"); print_checkerboard(); if(inspect_2()==true){ cout<<"哈哈,玩家2,赢了!"<<endl; system("pause"); return 0; } player1=0; player2=1; } } } else{ cout<<"输入错误,结束。"<<endl; } return 0; }