IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c++怀旧五子棋win7版 -> 正文阅读

[C++知识库]c++怀旧五子棋win7版

//win7版 
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<time.h>
#include<conio.h>
#include<windows.h>
#include<ctime>
using namespace std;
struct coordinate{
int X,Y;
}Coor1[626],Coor2[626];
char Getin=' ';
int Map[25][25],Sum1,Sum2;
int Map1[25][25]; 
void No(){
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO CursorInfo;
GetConsoleCursorInfo(handle, &CursorInfo);//获取控制台光标信息
CursorInfo.bVisible = false; //隐藏控制台光标
SetConsoleCursorInfo(handle, &CursorInfo);//设置控制台光标状态
}
void _Coordinate_(int x,int y){
HANDLE winHandle;//句柄
COORD pos = {x,y};
winHandle = GetStdHandle(STD_OUTPUT_HANDLE);
//设置光标位置 
SetConsoleCursorPosition(winHandle,pos); 
}
int Hrong(int x,int y,int n){
if(Map[x][y]==n)    return 5;
}
void Nturn(){
int x1[10],y1[10];
for(int i=Sum1-1;i>=0;i--){
    int x=Coor2[i].X,y=Coor2[i].Y,Emc=0;
    for(int j=0;j<10;j++){x1[j]=x;y1[j]=y;}
    while(Map[x1[0]][y1[0]]==2){    x1[0]++;y1[0]++;Emc++;}
    if(Emc==2&&Map[x-1][y-1]==0&&Map[x1[0]][y1[0]]==0){Map1[x1[0]][y1[0]]+=5+3*Hrong(x1[0]+1,y1[0]+1,2);}
    if(Emc==3&&Map[x1[0]][y1[0]]==0){Map1[x1[0]][y1[0]]+=50+90*Hrong(x1[0]+1,y1[0]+1,2);}
    if(Emc==4&&Map[x1[0]][y1[0]]==0){Map1[x1[0]][y1[0]]+=500;}
    Emc=0;
    while(Map[x1[1]][y1[1]]==2){    x1[1]--;y1[1]++;Emc++;}
    if(Emc==2&&Map[x+1][y-1]==0&&Map[x1[1]][y1[1]]==0){Map1[x1[1]][y1[1]]+=5+3*Hrong(x1[1]-1,y1[1]+1,2);}
    if(Emc==3&&Map[x1[1]][y1[1]]==0){Map1[x1[1]][y1[1]]+=50+90*Hrong(x1[1]-1,y1[1]+1,2);}
    if(Emc==4&&Map[x1[1]][y1[1]]==0){Map1[x1[1]][y1[1]]+=500;}
    Emc=0;
    while(Map[x1[2]][y1[2]]==2){    x1[2]++;y1[2]--;Emc++;}
    if(Emc==2&&Map[x-1][y+1]==0&&Map[x1[2]][y1[2]]==0){Map1[x1[2]][y1[2]]+=5+3*Hrong(x1[2]+1,y1[2]-1,2);}
    if(Emc==3&&Map[x1[2]][y1[2]]==0){Map1[x1[2]][y1[2]]+=50+90*Hrong(x1[2]+1,y1[2]-1,2);}
    if(Emc==4&&Map[x1[2]][y1[2]]==0){Map1[x1[2]][y1[2]]+=500;}
    Emc=0; 
    while(Map[x1[3]][y1[3]]==2){    x1[3]--;y1[3]--;Emc++;}
    if(Emc==2&&Map[x+1][y+1]==0&&Map[x1[3]][y1[3]]==0){Map1[x1[3]][y1[3]]+=5+3*Hrong(x1[3]-1,y1[3]-1,2);}
    if(Emc==3&&Map[x1[3]][y1[3]]==0){Map1[x1[3]][y1[3]]+=50+90*Hrong(x1[3]-1,y1[3]-1,2);}
    if(Emc==4&&Map[x1[3]][y1[3]]==0){Map1[x1[3]][y1[3]]+=500;}
    Emc=0;
    while(Map[x1[4]][y1[4]]==2){    x1[4]++;Emc++;}
    if(Emc==2&&Map[x-1][y]==0&&Map[x1[4]][y1[4]]==0){Map1[x1[4]][y1[4]]+=5+3*Hrong(x1[4]+1,y1[4],2);}
    if(Emc==3&&Map[x1[4]][y1[4]]==0){Map1[x1[4]][y1[4]]+=50+90*Hrong(x1[4]+1,y1[4],2);}
    if(Emc==4&&Map[x1[4]][y1[4]]==0){Map1[x1[4]][y1[4]]+=500;}
    Emc=0;
    while(Map[x1[5]][y1[5]]==2){    x1[5]--;Emc++;}
    if(Emc==2&&Map[x+1][y]==0&&Map[x1[5]][y1[5]]==0){Map1[x1[5]][y1[5]]+=5+3*Hrong(x1[5]-1,y1[5],2);}
    if(Emc==3&&Map[x1[5]][y1[5]]==0){Map1[x1[5]][y1[5]]+=50+90*Hrong(x1[5]-1,y1[5],2);}
    if(Emc==4&&Map[x1[5]][y1[5]]==0){Map1[x1[5]][y1[5]]+=500;}
    Emc=0;
    while(Map[x1[6]][y1[6]]==2){    y1[6]--;Emc++;}
    if(Emc==2&&Map[x][y+1]==0&&Map[x1[6]][y1[6]]==0){Map1[x1[6]][y1[6]]+=5+3*Hrong(x1[6],y1[6]-1,2);}
    if(Emc==3&&Map[x1[6]][y1[6]]==0){Map1[x1[6]][y1[6]]+=50+90*Hrong(x1[6],y1[6]-1,2);}
    if(Emc==4&&Map[x1[6]][y1[6]]==0){Map1[x1[6]][y1[6]]+=500;}
    Emc=0;
    while(Map[x1[7]][y1[7]]==2){    y1[7]++;Emc++;}
    if(Emc==2&&Map[x][y-1]==0&&Map[x1[7]][y1[7]]==0){Map1[x1[7]][y1[7]]+=5+3*Hrong(x1[7],y1[7]+1,2);}
    if(Emc==3&&Map[x1[7]][y1[7]]==0){Map1[x1[7]][y1[7]]+=50+90*Hrong(x1[7],y1[7]+1,2);}
    if(Emc==4&&Map[x1[7]][y1[7]]==0){Map1[x1[7]][y1[7]]+=500;}
}
}
void Uturn(){
int x1[10],y1[10];
for(int i=Sum1-1;i>=0;i--){
    int x=Coor1[i].X,y=Coor1[i].Y,Emc=0;
    for(int j=0;j<10;j++){x1[j]=x;y1[j]=y;}
    while(Map[x1[0]][y1[0]]==1){    x1[0]++;y1[0]++;Emc++;}
    if(Emc==2&&Map[x-1][y-1]==0&&Map[x1[0]][y1[0]]==0){Map1[x1[0]][y1[0]]+=5+4*Hrong(x1[0]+1,y1[0]+1,1);}
    if(Emc==3&&Map[x-1][y-1]==0&&Map[x1[0]][y1[0]]==0){Map1[x1[0]][y1[0]]+=45+2*Hrong(x1[0]+1,y1[0]+1,1);}
    if(Emc==4&&Map[x-1][y-1]==2&&Map[x1[0]][y1[0]]==0){Map1[x1[0]][y1[0]]+=55;}
    Emc=0;
    while(Map[x1[1]][y1[1]]==1){    x1[1]--;y1[1]++;Emc++;}
    if(Emc==2&&Map[x+1][y-1]==0&&Map[x1[1]][y1[1]]==0){Map1[x1[1]][y1[1]]+=5+4*Hrong(x1[1]-1,y1[1]+1,1);}
    if(Emc==3&&Map[x+1][y-1]==0&&Map[x1[1]][y1[1]]==0){Map1[x1[1]][y1[1]]+=45+2*Hrong(x1[1]-1,y1[1]+1,1);}
    if(Emc==4&&Map[x+1][y-1]==2&&Map[x1[1]][y1[1]]==0){Map1[x1[1]][y1[1]]+=55;}
    Emc=0;
    while(Map[x1[2]][y1[2]]==1){    x1[2]++;y1[2]--;Emc++;}
    if(Emc==2&&Map[x-1][y+1]==0&&Map[x1[2]][y1[2]]==0){Map1[x1[2]][y1[2]]+=5+4*Hrong(x1[2]+1,y1[2]-1,1);}
    if(Emc==3&&Map[x-1][y+1]==0&&Map[x1[2]][y1[2]]==0){Map1[x1[2]][y1[2]]+=45+2*Hrong(x1[2]+1,y1[2]-1,1);}
    if(Emc==4&&Map[x-1][y+1]==2&&Map[x1[2]][y1[2]]==0){Map1[x1[2]][y1[2]]+=55;}
    Emc=0; 
    while(Map[x1[3]][y1[3]]==1){    x1[3]--;y1[3]--;Emc++;}
    if(Emc==2&&Map[x+1][y+1]==0&&Map[x1[3]][y1[3]]==0){Map1[x1[3]][y1[3]]+=5+4*Hrong(x1[3]-1,y1[3]-1,1);}
    if(Emc==3&&Map[x+1][y+1]==0&&Map[x1[3]][y1[3]]==0){Map1[x1[3]][y1[3]]+=45+2*Hrong(x1[3]-1,y1[3]-1,1);}
    if(Emc==4&&Map[x+1][y+1]==2&&Map[x1[3]][y1[3]]==0){Map1[x1[3]][y1[3]]+=55;}
    Emc=0;
    while(Map[x1[4]][y1[4]]==1){    x1[4]++;Emc++;}
    if(Emc==2&&Map[x-1][y]==0&&Map[x1[4]][y1[4]]==0){Map1[x1[4]][y1[4]]+=5+4*Hrong(x1[4]+1,y1[4],1);}
    if(Emc==3&&Map[x-1][y]==0&&Map[x1[4]][y1[4]]==0){Map1[x1[4]][y1[4]]+=45+2*Hrong(x1[4]+1,y1[4],1);}
    if(Emc==4&&Map[x-1][y]==2&&Map[x1[4]][y1[4]]==0){Map1[x1[4]][y1[4]]+=55;}
    Emc=0;
    while(Map[x1[5]][y1[5]]==1){    x1[5]--;Emc++;}
    if(Emc==2&&Map[x+1][y]==0&&Map[x1[5]][y1[5]]==0){Map1[x1[5]][y1[5]]+=5+4*Hrong(x1[5]-1,y1[5],1);}
    if(Emc==3&&Map[x+1][y]==0&&Map[x1[5]][y1[5]]==0){Map1[x1[5]][y1[5]]+=45+2*Hrong(x1[5]-1,y1[5],1);}
    if(Emc==4&&Map[x+1][y]==2&&Map[x1[5]][y1[5]]==0){Map1[x1[5]][y1[5]]+=55;}
    Emc=0;
    while(Map[x1[6]][y1[6]]==1){    y1[6]--;Emc++;}
    if(Emc==2&&Map[x][y+1]==0&&Map[x1[6]][y1[6]]==0){Map1[x1[6]][y1[6]]+=5+4*Hrong(x1[6],y1[6]-1,1);}
    if(Emc==3&&Map[x][y+1]==0&&Map[x1[6]][y1[6]]==0){Map1[x1[6]][y1[6]]+=45+2*Hrong(x1[6],y1[6]-1,1);}
    if(Emc==4&&Map[x][y+1]==2&&Map[x1[6]][y1[6]]==0){Map1[x1[6]][y1[6]]+=55;}
    Emc=0;
    while(Map[x1[7]][y1[7]]==1){    y1[7]++;Emc++;}
    if(Emc==2&&Map[x][y-1]==0&&Map[x1[7]][y1[7]]==0){Map1[x1[7]][y1[7]]+=5+4*Hrong(x1[7],y1[7]+1,1);}
    if(Emc==3&&Map[x][y-1]==0&&Map[x1[7]][y1[7]]==0){Map1[x1[7]][y1[7]]+=45+2*Hrong(x1[7],y1[7]+1,1);}
    if(Emc==4&&Map[x][y-1]==2&&Map[x1[7]][y1[7]]==0){Map1[x1[7]][y1[7]]+=55;}
}
} 
void ESET(){
for(int i=2;i<23;i++)
    for(int j=2;j<23;j++){
        if(Map[i][j]==0&&Map[i+1][j]!=0&&Map[i-1][j]==Map[i+1][j]&&(Map[i+2][j]==0||Map[i+2][j]==Map[i+1][j])&&(Map[i-2][j]==0||Map[i-2][j]==Map[i-1][j]))
            Map1[i][j]+=5;
        if(Map[i][j]==0&&Map[i][j+1]!=0&&Map[i][j-1]==Map[i][j+1]&&(Map[i][j+2]==0||Map[i][j+2]==Map[i][j+1])&&(Map[i][j-2]==0||Map[i][j-2]==Map[i][j-1]))
            Map1[i][j]+=5;
        if(Map[i][j]==0&&Map[i+1][j+1]!=0&&Map[i-1][j-1]==Map[i+1][j+1]&&(Map[i+2][j+2]==0||Map[i+2][j+2]==Map[i+1][j+1])&&(Map[i-2][j-2]==0||Map[i-2][j-2]==Map[i-1][j-1]))
            Map1[i][j]+=5;
        if(Map[i][j]==0&&Map[i-1][j+1]!=0&&Map[i+1][j-1]==Map[i-1][j+1]&&(Map[i-2][j+2]==0||Map[i-2][j+2]==Map[i-1][j+1])&&(Map[i+2][j-2]==0||Map[i+2][j-2]==Map[i+1][j-1]))
            Map1[i][j]+=5;
    }
} 
void AI(){
if(Sum1==0){
    Map[12][12]=2;
    Coor2[Sum2].X=12;
    Coor2[Sum2++].Y=12;
    return;
}
for(int i=0;i<25;i++)
    for(int j=0;j<25;j++)
        Map1[i][j]=0;
int x1[10],y1[10],Ax,Ay,Max=0;
ESET();
Uturn();
Nturn();
for(int i=Sum1-1;i>=0;i--){
    int x=Coor1[i].X,y=Coor1[i].Y,Emc[10]={0};
    for(int j=0;j<10;j++){x1[j]=x;y1[j]=y;}
    while(Map[x1[0]][y1[0]]==1){    x1[0]++;y1[0]++;Emc[0]++;}
    while(Map[x1[1]][y1[1]]==1){    x1[1]--;y1[1]++;Emc[1]++;}
    while(Map[x1[2]][y1[2]]==1){    x1[2]++;y1[2]--;Emc[2]++;}
    while(Map[x1[3]][y1[3]]==1){    x1[3]--;y1[3]--;Emc[3]++;}
    while(Map[x1[4]][y1[4]]==1){    x1[4]++;Emc[4]++;}
    while(Map[x1[5]][y1[5]]==1){    x1[5]--;Emc[5]++;}
    while(Map[x1[6]][y1[6]]==1){    y1[6]--;Emc[6]++;}
    while(Map[x1[7]][y1[7]]==1){    y1[7]++;Emc[7]++;}
    for(int j=0;j<8;j++)
        if(Map[x1[j]][y1[j]]==0)    Map1[x1[j]][y1[j]]+=Emc[j]; 
}
for(int i=Sum2-1;i>=0;i--){
    int x=Coor2[i].X,y=Coor2[i].Y,Emc[10]={0};
    for(int j=0;j<10;j++){x1[j]=x;y1[j]=y;}
    while(Map[x1[0]][y1[0]]==2){    x1[0]++;y1[0]++;Emc[0]++;}
    while(Map[x1[1]][y1[1]]==2){    x1[1]--;y1[1]++;Emc[1]++;}
    while(Map[x1[2]][y1[2]]==2){    x1[2]++;y1[2]--;Emc[2]++;}
    while(Map[x1[3]][y1[3]]==2){    x1[3]--;y1[3]--;Emc[3]++;}
    while(Map[x1[4]][y1[4]]==2){    x1[4]++;Emc[4]++;}
    while(Map[x1[5]][y1[5]]==2){    x1[5]--;Emc[5]++;}
    while(Map[x1[6]][y1[6]]==2){    y1[6]--;Emc[6]++;}
    while(Map[x1[7]][y1[7]]==2){    y1[7]++;Emc[7]++;}
    for(int j=0;j<8;j++)
        if(Map[x1[j]][y1[j]]==0)    Map1[x1[j]][y1[j]]+=Emc[j];
}
for(int i=0;i<25;i++)
    for(int j=0;j<25;j++)
        if(Map1[i][j]>Max){
            Max=Map1[i][j];
            Ax=i;
            Ay=j;
        }
Map[Ax][Ay]=2;
Coor2[Sum2].X=Ax;
Coor2[Sum2++].Y=Ay;
return;
}
void Win(){
int x1[10],y1[10],Max1=0,Max2=0;
for(int i=0,e=0;i<Sum1;i++){
    int x=Coor1[i].X,y=Coor1[i].Y;
    for(int j=0;j<10;j++){x1[j]=x;y1[j]=y;}
    while(Map[x1[0]][y1[0]]==1){    x1[0]++;y1[0]++;e++;}
    Max1=max(e,Max1);
    e=0;
    while(Map[x1[1]][y1[1]]==1){    x1[1]--;y1[1]++;e++;}
    Max1=max(e,Max1);
    e=0;
    while(Map[x1[2]][y1[2]]==1){    x1[2]++;y1[2]--;e++;}
    Max1=max(e,Max1);
    e=0;
    while(Map[x1[3]][y1[3]]==1){    x1[3]--;y1[3]--;e++;}
    Max1=max(e,Max1);
    e=0;
    while(Map[x1[4]][y1[4]]==1){    x1[4]++;e++;}
    Max1=max(e,Max1);
    e=0;
    while(Map[x1[5]][y1[5]]==1){    x1[5]--;e++;}
    Max1=max(e,Max1);
    e=0;
    while(Map[x1[6]][y1[6]]==1){    y1[6]--;e++;}
    Max1=max(e,Max1);
    e=0;
    while(Map[x1[7]][y1[7]]==1){    y1[7]++;e++;}
    Max1=max(e,Max1);
    e=0;
    if(Max1>=5){
        cout<<"电脑就是给智障,你赢了!!!"; 
        getchar();
        exit(0);
    }
}
for(int i=0,e=0;i<Sum2;i++){
    int x=Coor2[i].X,y=Coor2[i].Y;
    for(int j=0;j<10;j++){x1[j]=x;y1[j]=y;}
    while(Map[x1[0]][y1[0]]==2){    x1[0]++;y1[0]++;e++;}
    Max2=max(e,Max2);
    e=0;
    while(Map[x1[1]][y1[1]]==2){    x1[1]--;y1[1]++;e++;}
    Max2=max(e,Max2);
    e=0;
    while(Map[x1[2]][y1[2]]==2){    x1[2]++;y1[2]--;e++;}
    Max2=max(e,Max2);
    e=0;
    while(Map[x1[3]][y1[3]]==2){    x1[3]--;y1[3]--;e++;}
    Max2=max(e,Max2);
    e=0;
    while(Map[x1[4]][y1[4]]==2){    x1[4]++;e++;}
    Max2=max(e,Max2);
    e=0;
    while(Map[x1[5]][y1[5]]==2){    x1[5]--;e++;}
    Max2=max(e,Max2);
    e=0;
    while(Map[x1[6]][y1[6]]==2){    y1[6]--;e++;}
    Max2=max(e,Max2);
    e=0;
    while(Map[x1[7]][y1[7]]==2){    y1[7]++;e++;}
    Max2=max(e,Max2);
    e=0;
    if(Max2>=5){
        cout<<"你就是给智障,电脑赢了!!!";
        getchar();
        exit(0); 
    }
}
}
void start(bool a){
char in=0;
int X=12,Y=12;
bool Flag=1;
system("mode con cols=51 lines=27");
if(a){
    while(in!='\n'){
        _Coordinate_(0,0);
        for(int i=0;i<25;i++){
            for(int j=0;j<25;j++){
                if(i==X&&j==Y){cout<<"╳";continue;}
                if(Map[i][j]==0){cout<<"╋";continue;}
            }
            cout<<"\n";
        }
        in=getch();
        if(in=='w') X--;
        if(in=='s') X++;
        if(in=='a') Y--;
        if(in=='d') Y++;
        if(in==' '){Map[X][Y]=1;Coor1[Sum1].X=X;Coor1[Sum1++].Y=Y;break;}
    }
}while(1){
    _Coordinate_(0,0);
    if(Flag)    AI();
    for(int i=0;i<25;i++){
        for(int j=0;j<25;j++){
            if(i==X&&j==Y){cout<<"╳";continue;}
            if(Map[i][j]==2){cout<<"○";continue;}
            if(Map[i][j]==1){cout<<"●";continue;}
            if(Map[i][j]==0){cout<<"╋";continue;}
        }
        cout<<"\n";
    }if(Flag)   Win();
    in=getch();
    Flag=0; 
    if(in=='w'){X--;Flag=0;}
    if(in=='s'){X++;Flag=0;} 
    if(in=='a'){Y--;Flag=0;} 
    if(in=='d'){Y++;Flag=0;} 
    if(in==' '){
        if(Map[X][Y])   Flag=0;
        else{
            Map[X][Y]=1;
            Flag=1;
            Coor1[Sum1].X=X;
            Coor1[Sum1++].Y=Y;
        }
    }
}
}
void manu1(){
_Coordinate_(0,0);
cout<<"■■■■■■■■■■\n";
cout<<"■   1.先手       ■\n";
cout<<"■   2.后手       ■\n"; 
cout<<"■■■■■■■■■■";
while(1){
    char in=getch();
    if(in=='1') start(1);
    if(in=='2') start(0);
}
}
void manu(){
system("cls");
cout<<"■■■■■■■■■■\n";
cout<<"■   abs五子棋    ■\n";
cout<<"■   1.开局       ■\n";
cout<<"■■■■■■■■■■";
while(1){
    char in=getch();
    if(in=='1') manu1();
}
}
int main(){
system("mode con cols=21 lines=5");
No();
manu();
return 0;
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:05:37  更:2021-10-09 16:05:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 3:25:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码