查看: 73|回復: 2

资源共享-网络技术-C++五子棋源码

[複製鏈接]

13

主題

19

帖子

252

積分

管理員

Rank: 9Rank: 9Rank: 9

積分
252
發表於 2019-2-27 09:37:06 | 顯示全部樓層 |閱讀模式
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include "stdio.h"  
#include "windows.h"  
using namespace std;
char stage[27][27];
int x;
char y;
int J_end=0;
int player=1;//player1:x  player2:y
bool qizi[27][27];//初始值为false,表示没有棋子

int judge(int index){
        char aaa;
        if(index==1) aaa='x' ;
        if(index==2) aaa='o';
        //return 1,plyer1 获胜;return 2,player2 获胜。
        for(int i=1;i<=15;i++){
                for(int k=1;k<=15;k++){
                        if(stage[k]==aaa){
                                int line=1;
                                //横向判断
                                for(int m=k+1;m<=k+4;m++){
                                        if(stage[m]==aaa) line++;
                                }
                                if(line==5) return index;
                                //纵向判断
                                line=1;
                                for(int n=i+1;n<=i+4;n++){
                                        if(stage[n][k]==aaa) line++;
                                }
                                if(line==5) return index;
                                //正对角判断
                                line=1;
                                for(int shu=1,ii=i,kk=k;shu<=4;shu++){
                                        if(stage[ii+shu][kk+shu]==aaa) line++;
                                }
                                if(line==5) return index;
                                //次对角判断
                                if((y-96)>=5) {
                                        line=1;
                                        for(int shu=1,ii=i,kk=k;shu<=4;shu++){
                                                if(stage[ii-shu][kk-shu]==aaa) line++;
                                        }
                                        if(line==5) return index;
                                }
                        }
                }
        }
        return 0;
}

int draw(){
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
        cout<<"   "<<"a"<<" "<<"b"<<" "<<"c"<<" "<<"d"<<" "<<"e"<<" "<<"f"<<" "<<"g"<<" "
        <<"h"<<" "<<"i"<<" "<<"j"<<" "<<"k"<<" "<<"l"<<" "<<"m"<<" "<<"n"<<" "<<"o"
        //<<" "<<"p"<<" "<<"q"<<" "<<"r"<<" "<<"s"<<" "<<"t"<<" "<<"u"<<" "<<"v"<<" "<<"w"<<" "<<"x"<<" "<<"y"<<" "<<"z"
        <<endl<<"1"<<"  ";
        for(int i=1;i<=15;i++){
        
                if(stage[1]=='x'){
                        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
                        cout<<stage[1]<<" ";
                        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
                }
                else if(stage[1]=='o'){
                        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
                        cout<<stage[1]<<" ";
                        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
                }
                else        cout<<stage[1]<<" ";
        }
        for(int temp_flag=2;temp_flag<=9;temp_flag++){
                cout<<endl<<temp_flag<<"  ";
                for(int k=1;k<=15;k++){
               
                        if(stage[temp_flag][k]=='x'){
                                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
                                cout<<stage[temp_flag][k]<<" ";
                                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
                        }
                        else if(stage[temp_flag][k]=='o'){
                                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
                                cout<<stage[temp_flag][k]<<" ";
                                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
                        }
                        else        cout<<stage[temp_flag][k]<<" ";
                }
        }
        for(int temp_flag=10;temp_flag<=15;temp_flag++){
                cout<<endl<<temp_flag<<" ";
                for(int k=1;k<=15;k++){
               
                        if(stage[temp_flag][k]=='x'){
                                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN);
                                cout<<stage[temp_flag][k]<<" ";
                                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
                        }
                        else if(stage[temp_flag][k]=='o'){
                                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED);
                                cout<<stage[temp_flag][k]<<" ";
                                SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_BLUE);
                        }
                        else        cout<<stage[temp_flag][k]<<" ";
                }        
        }
        cout<<endl;
}

int main(){
        //初始化数组
        for(int i=1;i<=15;i++){
                for(int k=1;k<=15;k++)
                        stage[k]='.';
        }
        while(J_end!=1&&J_end!=2){
                //绘制棋盘
                draw();        
                cout<<"======================================"<<endl;
                if(player==1){
                        p1:cout<<"玩家一的回合:"<<"    ";
                        qizi[x][y-96]=true;
                        J_end=judge(1);
                        cin>>x>>y;
                        if(qizi[x][y-96]){
                                cout<<endl<<"    Error!这里已经有棋子了。"<<endl<<"请重新输入:";
                                goto p1;
                        }
                        if(y>111||y<97||x<1||x>15){
                                cout<<endl<<"    Error!超出棋盘范围。"<<endl<<"请重新输入:";
                                goto p1;
                        }
                        stage[x][y-96]='x';
                        player=2;
                }
                else if(player==2){
                        p2:cout<<"玩家二的回合:"<<"    ";
                        cin>>x>>y;
                        if(qizi[x][y-96]){
                                cout<<endl<<"    Error!这里已经有棋子了。"<<endl<<"请重新输入:";
                                goto p2;
                        }
                        if(y>111||y<97||x<1||x>15){
                                cout<<endl<<"    Error!超出棋盘范围。"<<endl<<"请重新输入:";
                                goto p2;
                        }
                        stage[x][y-96]='o';
                        qizi[x][y-96]=true;
                        J_end=judge(2);
                        player=1;
                }
                if(J_end!=1&&J_end!=2)
                        system("cls");
        }
        cout<<endl<<"======================================"<<endl;
        if(J_end==1) cout<<"恭喜玩家一获胜";
        else cout<<"恭喜玩家二获胜";
}

回復

使用道具 舉報

3

主題

7

帖子

65

積分

註冊會員

Rank: 2

積分
65

封弊者

發表於 2021-10-9 23:02:25 | 顯示全部樓層
2021考古
回復

使用道具 舉報

0

主題

15

帖子

32

積分

新手上路

Rank: 1

積分
32
發表於 2022-11-29 03:52:07 | 顯示全部樓層
無論你是想賺錢、想認識妹子交女友魔龍傳奇遊戲都是可以幫你實現的
回復

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

Copyright;  2015-2016  300CYLY  Powered by Discuz!    
快速回復 返回頂部 返回列表
一粒米 | 中興米 | 論壇美工 | 設計 抗ddos | 天堂私服 | ddos | ddos | 防ddos | 防禦ddos | 防ddos主機 | 天堂美工 | 設計 防ddos主機 | 抗ddos主機 | 抗ddos | 抗ddos主機 | 抗攻擊論壇 | 天堂自動贊助 | 免費論壇 | 天堂私服 | 天堂123 | 台南清潔 | 天堂 | 天堂私服 | 免費論壇申請 | 抗ddos | 虛擬主機 | 實體主機 | vps | 網域註冊 | 抗攻擊遊戲主機 | ddos |