C++五子棋(未做完,但能玩,而且还不错)

HIM玩Minecraft 2024-08-02 09:35:01 阅读 53

代码放下面了,关于步骤介绍的我以后再完善一下。

<code>#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;

}



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。