栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言井字棋的程序

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言井字棋的程序

   最近,闲来无事,编了个井字棋程序。希望与各位交流交流。(我的程序可能比较难读,望见谅。)

#include
#include
#include
#define ROW 10
#define COL 10
void menu();
void print ();
void youxi();
void print1 (int ptr[][COL+1],int n);
int judge (int ptr[][COL+1],int n);
void judgement (int ptr [][COL+1],int n);
int main () {
    int m;
    menu();
    scanf ("%d",&m);
    while (m!=2) {
        youxi ();
        menu ();
        scanf ("%d",&m);
    }
    printf ("欢迎再来玩五子棋!再见!");
    return 0;
}
void menu () {
    printf ("**************************n");
    printf ("欢迎与人工智障玩游戏,请选择菜单:n");
    printf ("1) 开始游戏    2) 退出游戏n");
    printf ("**************************n");
    printf ("请输入你的选择:");
}
void print () {
    int i,j;
    printf ("    1   2   3   4   5   6   7   8   9   10n");
    for (i=1; i<=2*ROW+1; i++) {
        if (i%2) {
            printf ("  +");
            for (j=1; j<=COL; j++) {printf ("---+");}
        } else {
            printf ("%2d",i/2);
            printf ("|");
            for (j=1; j<=COL; j++) {printf ("   |");}
        }
        printf ("n");
    }
}
void youxi() {
    int i,j,m,n,k;
    int a[ROW+1][COL+1];
    i=0; k=0+rand()%2;
    for (i=0;i<=ROW;i++){
        for (j=0;j<=COL;j++){
            a[i][j]=0;
        }
    }
     {
        print ();
        printf ("这次你是先手。n"); 
        do {
        printf ("请输入你的坐标(row col):");
        scanf ("%d %d",&m,&n);
        a[m][n]=1;
        i++;
        //print1 (a,ROW+1);
        if (judge (a,ROW+1)) break;
        if (i==100) {printf ("你的水平和人工智障差不多!n");break;}
        judgement (a,ROW+1);
        i++;
        //printf ("电脑走棋如下:n"); 
        print1 (a,ROW+1);
        if (judge (a,ROW+1)) break;
        if (i==100) {printf ("你的水平和人工智障差不多!n");break;}
    } while (1);
    }
}

void print1 (int ptr[][COL+1],int n) {
    int i,j;
    printf ("    1   2   3   4   5   6   7   8   9   10n");
    for (i=1; i<=2*ROW+1; i++) {
        if (i%2) {printf ("  +");
            for (j=1; j<=COL; j++) {printf ("---+");}
        } else {
            printf ("%2d",i/2);
            printf ("|");
            for (j=1; j<=COL; j++) {
                if (ptr [i/2][j]==1) {printf (" x |");}
                else if (ptr [i/2][j]==6) {printf (" ●|");} 
                    else printf ("   |");
            }
        }
        printf ("n");
    }
}
void judgement (int ptr [][COL+1],int n) {
    int i,j,k,l,s;
    int x,y; 
    for (k=0;k<=5;k++){
    for (l=0;l<=5;l++){
    for (i=1; i<=5; i++) {
        s=0;
        for (j=1; j<=5; j++) {s+=ptr [k+i][j+l];}
        if (s==4||s==24) {
            if (l<=3){
            for (j+5; j>0; j--) {
                if (ptr [i+k][j+l]==0) {ptr [k+i][l+j]=6;goto help;}
            }}
            else {for (j=1; j<6; j++) {
                if (ptr [i+k][j+l]==0) {ptr [k+i][l+j]=6;goto help;}
            }
            }
        } 
    }
    for (j=1; j<=5; j++) {
        s=0;
        for (i=1; i<=5; i++) {s+=ptr [k+i][j+l];}
        if (s==4||s==24) {
            if (k>=3){
            for (i=1; i<=5; i++) {
                if (ptr [i+k][j+l]==0) {ptr [i+k][j+l]=6;goto help;}
            }}
            else {
            for (i=5; i>0; i--) {
                if (ptr [i+k][j+l]==0) {ptr [i+k][j+l]=6;goto help;}
            }}
        }
    }
    s=0;
    for (i=1; i<=5; i++) {s+=ptr [k+i][l+i];}
    if (s==4||s==24) {
        if (k>=3){
        for (i=1; i<=5; i++) {
            if (ptr [i+k][i+l]==0) {ptr [i+k][i+l]=6;goto help;}
        }}
        else {
        for (i=5; i>0; i--) {
            if (ptr [i+k][i+l]==0) {ptr [i+k][i+l]=6;goto help;}
        }
        }
    }
    s=0;
    for (i=1; i<=5; i++) {s+=ptr [k+i][l+6-i];}
    if (s==4||s==24) {
        if (k>=3){
        for (i=1; i<=5; i++) {
            if (ptr [k+i][l+6-i]==0) {ptr [k+i][l+6-i]=6;goto help;}
        }}
        else {
            for (i=5; i>0; i++) {
            if (ptr [k+i][l+6-i]==0) {ptr [k+i][l+6-i]=6;goto help;}
        }
        }
    }
}}
for (k=0;k<=5;k++){
    for (l=0;l<=5;l++){
    for (i=1; i<=5; i++) {
        s=0;
        for (j=1; j<=5; j++) {s+=ptr [k+i][j+l];}
        if (s==3||s==18) {
            if (l>=3){
            for (j=1; j<=5; j++) {
                if (ptr [i+k][j+l]==0&&(ptr [i+k][j+l-1]==1||ptr [i+k][j+l+1]==1)) {ptr [k+i][l+j]=6;goto help;}
            }}
            else {
                for (j=5; j>0; j--) {
                if (ptr [i+k][j+l]==0&&(ptr [i+k][j+l-1]==1||ptr [i+k][j+l+1]==1)) {ptr [k+i][l+j]=6;goto help;}
            }
            }
        }
    }
    for (j=1; j<=5; j++) {
        s=0;
        for (i=1; i<=5; i++) {s+=ptr [k+i][j+l];}
        if (s==3||s==18) {
            if (k>=3){
                for (i=1; i<=5; i++) {
                if (ptr [i+k][j+l]==0&&(ptr [i+k-1][j+l]==1||ptr [i+k+1][j+l]==1)) {ptr [i+k][j+l]=6;goto help;}
            }}
            else {
                for (i=5; i>0; i--) {
                if (ptr [i+k][j+l]==0&&(ptr [i+k-1][j+l]==1||ptr [i+k+1][j+l]==1)) {ptr [i+k][j+l]=6;goto help;}
            }
            }
        }
    }
    s=0;
    for (i=1; i<=5; i++) {s+=ptr [k+i][l+i];}
    if (s==3||s==18) {
        if (k>=3){
        for (i=1; i<=5; i++) {
            if (ptr [i+k][i+l]==0&&(ptr [i+k-1][i+l-1]==1||ptr [i+k+1][i+l+1]==1)) {ptr [i+k][i+l]=6;goto help;}
        }}
        else {
            for (i=5; i>0; i--) {
            if (ptr [i+k][i+l]==0&&(ptr [i+k-1][i+l-1]==1||ptr [i+k+1][i+l+1]==1)) {ptr [i+k][i+l]=6;goto help;}
        }
        }
    }
    s=0;
    for (i=1; i<=5; i++) {s+=ptr [k+i][l+6-i];}
    if (s==3||s==18) {
        if (k>=3){
        for (i=1; i<=5; i++) {
            if (ptr [k+i][l+6-i]==0&&(ptr [i+k-1][l+6-i+1]==1||ptr [i+k+1][l+6-i-1]==1)) {ptr [k+i][l+6-i]=6;goto help;}
        }}
        else {
            for (i=5; i>0; i--) {
            if (ptr [k+i][l+6-i]==0&&(ptr [i+k-1][l+6-i+1]==1||ptr [i+k+1][l+6-i-1]==1)) {ptr [k+i][l+6-i]=6;goto help;}
        }
        }
    }
}}
for (k=0;k<=5;k++){
    for (l=0;l<=5;l++){
    for (i=1; i<=5; i++) {
        s=0;
        for (j=1; j<=5; j++) {s+=ptr [k+i][j+l];}
        if (s==2) {
            if (l>=3){
            for (j=1; j<=5; j++) {
                if (ptr [i+k][j+l]==0&&(ptr [i+k][j+l-1]==1||ptr [i+k][j+l+1]==1)) {ptr [k+i][l+j]=6;goto help;}
            }}
            else {
                for (j=5; j>0; j--) {
                if (ptr [i+k][j+l]==0&&(ptr [i+k][j+l-1]==1||ptr [i+k][j+l+1]==1)) {ptr [k+i][l+j]=6;goto help;}
            }
            }
        }
    }
    for (j=1; j<=5; j++) {
        s=0;
        for (i=1; i<=5; i++) {s+=ptr [k+i][j+l];}
        if (s==2) {
            if (k>=3){
            for (i=1; i<=5; i++) {
                if (ptr [i+k][j+l]==0&&(ptr [i+k-1][j+l]==1||ptr [i+k+1][j+l]==1)) {ptr [i+k][j+l]=6;goto help;}
            }}
            else {for (i=5; i>0; i--) {
                if (ptr [i+k][j+l]==0&&(ptr [i+k-1][j+l]==1||ptr [i+k+1][j+l]==1)) {ptr [i+k][j+l]=6;goto help;}
            }
            }
        }
    }
    s=0;
    for (i=1; i<=5; i++) {s+=ptr [k+i][l+i];}
    if (s==2) {
        if (k>=3){
        for (i=1; i<=5; i++) {
            if (ptr [i+k][i+l]==0&&(ptr [i+k-1][i+l-1]==1||ptr [i+k+1][i+l+1]==1)) {ptr [i+k][i+l]=6;goto help;}
        }}
        else {
            for (i=5; i>0; i++) {
            if (ptr [i+k][i+l]==0&&(ptr [i+k-1][i+l-1]==1||ptr [i+k+1][i+l+1]==1)) {ptr [i+k][i+l]=6;goto help;}
        }
        }
    }
    s=0;
    for (i=1; i<=5; i++) {s+=ptr [k+i][l+6-i];}
    if (s==2) {
        if (k>2){
        for (i=1; i<=5; i++) {
            if (ptr [k+i][l+6-i]==0&&(ptr [i+k-1][l+6-i+1]==1||ptr [i+k+1][l+6-i-1]==1)) {ptr [k+i][l+6-i]=6;goto help;}
        }}
        else {
        for (i=5; i>0; i--) {
            if (ptr [k+i][l+6-i]==0&&(ptr [i+k-1][l+6-i+1]==1||ptr [i+k+1][l+6-i-1]==1)) {ptr [k+i][l+6-i]=6;goto help;}
        }    
        }
    }
}}    
    
    
    if (ptr [5][5]==0) {ptr [5][5]=6;goto help;}
    else if (ptr [5][6]==0) {ptr [5][6]=6;goto help;}
    else if (ptr [6][5]==0) {ptr [6][5]=6;goto help;}
    else if (ptr [6][6]==0) {ptr [6][6]=6;goto help;}
        x=1+rand()%10;y=1+rand()%10;
        while (ptr [x][y]!=0) {x=1+rand()%10;y=1+rand()%10;}
        ptr [x][y]=6;
help:;
}
int judge (int ptr[][COL+1],int n) {
    int i,j,k,l,s,exit;
    exit=0;
    for (k=0;k<=5;k++){
    for (l=0;l<=5;l++){
    for (i=1; i<=5; i++) {
        s=0;
        for (j=1; j<=5; j++) {s+=ptr [i+k][j+l];}
        if (s==5) {exit = 1;goto help;} 
        else if (s==30) {exit = 6;goto help;}}
    for (j=1; j<=5; j++) {
        s=0;
        for (i=1; i<=5; i++) {s+=ptr [k+i][l+j];}
        if (s==5){exit = 1;goto help;}
        else if (s==30) {exit = 6;goto help;}
    }
    s=0;
    for (i=1; i<=5; i++) {s+=ptr [k+i][l+i];}
    if (s==5) {exit = 1;goto help;} 
    else if(s==30) {exit = 6;goto help;}
    s=0;
    for (i=1; i<=5; i++) {s+=ptr [k+i][l+6-i];}
    if (s==5) {exit = 1;goto help;} 
    else if(s==30) {exit = 6;goto help;}}}
    exit = 0;
help:    if (exit==1) {printf ("我好不容易心动一次,你却让我输的这么彻底,焯!n"); return 1;} 
        else if (exit==6) {printf ("你怎么这么菜,人工智障都打不过。n");return 1;}
            else return 0;    
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/847140.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号