//普通版

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define N  8
void display(char (* p)[N])
{
     system("cls");
    int i,j;
    for(i=0; i<N; i++)
    {
        for(j=0; j<N; j++)
        {
            printf("%c\t",p[i][j]);
        }
        printf("\n\n\n");
    }
}
void  downchess(char (* p)[N])
{
    char black='#';
    char white='@';
    char h;
    int i,j,num=0;
    do
    {
        if(num%2==0)
        {
            h=black;
        }
        else
        {
            h=white;
        }
        printf("%c方请输入落子坐标的行和列:",h);
        scanf("%d%d",&i,&j);
        if (p[i][j]!='.')continue;
        p[i][j]=h;
        display(p);
//        if(judje(p,i,j)==1)
//        {
//
//            break;
//        }
        num++;
    }
    while(judje(p,i,j)==0);
       printf("%c方胜利\n",h);
}
int  judje(char (* p)[N],int a,int b)
{
    int sum=0;
    int j=0,i=1;
//判断行向
    for(;;)
    {
        if(p[a][b-j]==p[a][b])
        {
            sum++;
            j++;
        }
        else if(p[a][b+i]==p[a][b])
        {
            sum++;
            i++;
        }
        else
            break;
    }
      if(sum==5)
        return  1;
 //判断纵向
     sum=0;j=0;i=1;
  for(;;)
    {
        if(p[a-j][b]==p[a][b])
        {
            sum++;
            j++;
        }
        else
        if(p[a+i][b]==p[a][b])
        {
            sum++;
            i++;
        }
        else break;
    }
     if(sum==5)
    return  1;
//判断右对角
  sum=0;j=0;i=1;
  for(;;)
    {
        if(p[a-j][b+j]==p[a][b])
        {
            sum++;
            j++;
        }
        else
       if(p[a+i][b-i]==p[a][b])
        {
            sum++;
            i++;
        }
        else break;
    }
     if(sum==5)
    return  1;
    sum=0;j=0;i=1;
 // 判断左对角
  for(;;)
    {
        if(p[a+j][b+j]==p[a][b])
        {
            sum++;
            j++;
        }
        else
       if(p[a-i][b-i]==p[a][b])
        {
            sum++;
            i++;
        }
        else break;
    }
     if(sum==5)
    return  1;
      else return 0;
}
int main()
{
    int i,j;
    char chess[N][N];
    int n=48,k=49;
    for(i=0; i<N; i++)
    {
        for(j=0; j<N; j++)
        {
            if(i==0)
            {
                chess[i][j]=n;
                n++;
            }
            else if(j==0)
            {
                chess[i][j]=k;
                k++;
            }
            else
                chess[i][j]='.';
        }
    }
    display(chess);
    downchess(chess);
    return 0;
}

//可悔棋版

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define N  8
void display(int (* p)[N])
{
     system("cls");
    int i,j;
    char qipan[N][N];
    char black='#';
    char white='@';
    char null='.';

for(i=0; i<N; i++)
    {
        for(j=0; j<N; j++)
        {
        if(p[i][j]%2==0)
                qipan[i][j]=black;
            else  if(p[i][j]%2==1)
                qipan[i][j]=white;
              else qipan[i][j]=null;
        }
}
    for(i=-1; i<N; i++)
    {
        printf("%d\t",i);
    }   printf("\n\n\n");
    for(i=0; i<N; i++)
    {
        printf("%d\t",i);
        for(j=0; j<N; j++)
        {
            printf("%c\t",qipan[i][j]);
        }
        printf("\n\n\n");
    }
}
void  downchess(int (* p)[N])
{
     char h;
     char black='#';
     char white='@';
    int i,j,num=0;

do
    {
        if(num%2==0)
        {
            h=black;
        }
        else
        {
            h=white;
        }
        printf("%c方请输入落子坐标的行和列:",h);
        scanf("%d%d",&i,&j);
        if (p[i][j]!=-1)continue;
        p[i][j]=num;
        display(p);
         int  choose;
       do
         {
            printf("悔棋请按2,继续请按1:");

scanf("%d",&choose);
        switch(choose)
           {
           case  1:     break;
           case  2:
               huiqi(p,num);
               num--;
               display(p);
           default :    break;
           }

}while(choose!=1);
        num++;
    }
    while(judje(p,i,j,num-1)==0);
       printf("%c方胜利\n",h);
}
void  huiqi(int (* p)[N],int num)
{
    int i,j;
    for(i=0;i<N;i++)
        {
            for(j=0;j<N;j++)
    {
        if(p[i][j]==num)
            p[i][j]=-1;
    }
        }

}

int  judje(int (* p)[N],int a,int b,int num)
{
    int sum=0;
    int j=0,i=1;
//判断行向
    for(;;)
    {
        if(p[a][b-j]%2==num%2&&p[a][b-j]!=-1)
        {
            sum++;
            j++;
        }
        else if(p[a][b+i]%2==num%2&&p[a][b+i]!=-1)
        {
            sum++;
            i++;
        }
        else
            break;
    }
      if(sum==5)
        return  1;
 //判断纵向
     sum=0;j=0;i=1;
  for(;;)
    {
        if(p[a-j][b]%2==num%2&&p[a-j][b]!=-1)
        {
            sum++;
            j++;
        }
        else
        if(p[a+i][b]%2==p[a][b]%2&&p[a+i][b]!=-1)
        {
            sum++;
            i++;
        }
        else break;
    }
     if(sum==5)
    return  1;
//判断右对角
  sum=0;j=0;i=1;
  for(;;)
    {
        if(p[a-j][b+j]%2==num%2&&p[a-j][b+j]!=-1)
        {
            sum++;
            j++;
        }
        else
       if(p[a+i][b-i]%2==num%2&&p[a+i][b-i]!=-1)
        {
            sum++;
            i++;
        }
        else break;
    }
     if(sum==5)
    return  1;
    sum=0;j=0;i=1;
 // 判断左对角
  for(;;)
    {
        if(p[a+j][b+j]%2==num%2&&p[a+j][b+j]!=-1)
        {
            sum++;
            j++;
        }
        else
       if(p[a-i][b-i]%2==num%2&&p[a-i][b-i]!=-1)
        {
            sum++;
            i++;
        }
        else break;
    }
     if(sum==5)
    return  1;
      else return 0;
}
int main()
{
    int i,j;
    int  chess[N][N];
    for(i=0; i<N; i++)
    {
        for(j=0; j<N; j++)
        {
                chess[i][j]=-1;
        }
    }
    display(chess);
    downchess(chess);
    return 0;
}

简单的五子棋程序(可悔棋版和普通版)相关推荐

  1. 人工智能实现简单的五子棋程序

    我这个程序在QQ五子棋上实验了一下,结果是黑棋先手全胜,白棋后手的胜率却惨不忍睹,原因有下: 1.五子棋的先手是有优势的,所以职业比赛里都会有禁手来实现公平 2.水平有限,对局面的评估只有一小部分 主 ...

  2. C++实现简单的五子棋程序

    //全部代码12 .26.2017 #include<iostream> #include<stdlib.h> #include<iomanip>     //格式 ...

  3. vc6.0c语言五子棋程序,哪位大虾可以给我个VC6.0下用C语言编的五子棋,要有流程图...

    五子棋 代码 VC6.0 qq_29018467112015-06-14 五子棋 (用C语言编写五子棋游戏) rannianzhixia170392017-04-20 基于easyx图形的五子棋游戏 ...

  4. java人际对战五子棋_系统框图如下 java实现五子棋程序 可以实现人人对战 人机对战 简单功能 悔棋 认输...

    展开全部 一.实验题目 五子棋游戏e69da5e6ba9062616964757a686964616f31333365633835. 二.问题分析 五子棋是双人博弈棋类益智游戏,由围棋演变而来,属纯策 ...

  5. 五子棋对弈程序c语言,五子棋程序纯C语言版.doc

    五子棋程序纯C语言版 五子棋程序纯C语言版 //以前发的代码里因为有C++的一点点代码,现在我把那C++的代码改掉.重发出来.//但是这些代码由于编译器的原因,在TC下仍无法运行.请使用VC.#inc ...

  6. Java版五子棋程序

    一.实验题目 五子棋游戏. 二.问题分析 五子棋是双人博弈棋类益智游戏,由围棋演变而来,属纯策略型.棋盘通常15*15,即15行,15列,共225个交叉点,即棋子落点:棋子由黑白两色组成,黑棋123颗 ...

  7. 小程序源码:大红喜庆版UI猜灯谜又叫猜字谜-多玩法安装简单

    大家好给大家带来一款UI比较喜庆的猜灯谜小程序 大家看演示图的时候当然也是可以看得到那界面是多么的喜庆 而且新的一年也很快就来了,所以种种的界面可能都比较往喜庆方面去变吧 这款小程序搭建是免服务器和域 ...

  8. 用c语言做一个五子棋程序,C语言制作简单五子棋游戏

    原标题:C语言制作简单五子棋游戏 C语言制作简单的五子棋游戏 学习C语言的人很多,但是用C语言很少,而用来为自己所用,来做游戏的人就更少了,很多人都是跟着学校学习,学校讲到哪就坐到哪,但是以后却还是不 ...

  9. C#版及nodejs版的com端口监听程序

    感受: 写监听程序的感受:原来有些事情并不是想象的那么难,难和简单就只在一个点上,一个点突破了,后面就豁然开朗了.所以有些问题,不能死闷,要先思考,然后查资料,然后问有经验的人. 最近写一个com端口 ...

最新文章

  1. android 融云会话列表,为什么切换账号之后会话列表不刷新,还显示上一个帐号的内容?...
  2. Spring Boot 多模块与 Maven 私有仓库
  3. CentOS下的rm命令改造成移动文件至回收站
  4. 顺序队列,循环队列,链队列
  5. 燕山大学数字通信计算机仿真代码,燕山大学数字通信计算机仿真课程设计模板.doc...
  6. 配置openldap_openldap环境搭建+集成JIRA服务
  7. 《Javascript高级程序设计》读书笔记(1-3章)
  8. 程序员如何避免身体被掏空?
  9. MediaBuffer使用要点
  10. 曲线救国:提高github下载速度到2MB/s
  11. UG软件模具设计时常用命令以及UG软件默认的快捷键
  12. 盖世无双之国产数据库风云榜-2022年02月
  13. win10服务器网页打不开怎么办,win10系统ie浏览器有些网页打不开怎么回事
  14. 摩尔庄园服务器显示不出,摩尔庄园电脑为什么玩不了 摩尔庄园电脑玩不了解决方案...
  15. py实战绘制人口金字塔图
  16. 2001-2022年全国各城市风速数据(逐日、逐月、逐年)
  17. 网格平滑基础算法总结
  18. 人类简史 10 金钱的味道
  19. 使用vue,实现前端导入excel数据
  20. letswave教程:脑电数据图形绘制、批处理以及脚本生成

热门文章

  1. 一个性价比超高的英语口语平台
  2. 【Git】版本控制管理(第二版) 前言 第一章 第二章
  3. 人类赋予人工智能伦理,生物进化方向的突破是关键【南科大发言】
  4. 移动互联网感言(董烨/Joven.Dong)
  5. 机器学习的数学基础(2):赋范空间、内积空间、完备空间与希尔伯特空间
  6. 高校房产管理系统中周转房有哪些管理功能和范围
  7. 根据经纬度查询地名,
  8. 游戏经典题目之十字激光炮
  9. 计算机学硕考公更好还是专硕,专硕 VS 学硕 你适合读哪种?
  10. 激励人生10张英文励志海报