0


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

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

#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;
}
标签: c++ 开发语言

本文转载自: https://blog.csdn.net/LiXinLong_LXL_13/article/details/140648019
版权归原作者 HIM玩Minecraft 所有, 如有侵权,请联系我们删除。

“C++五子棋(未做完,但能玩,而且还不错)”的评论:

还没有评论