网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
06月06日漏签0天
c语言吧 关注:798,833贴子:4,355,696
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 2回复贴,共1页
<<返回c语言吧
>0< 加载中...

试着做一个简单的五子棋 (自己跟自己下的)

  • 取消只看楼主
  • 收藏

  • 回复
  • 吃饭睡觉打豆豆
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
程序可以运行 ,可以下棋 但是 到了判定胜利的时候一直没法判定,
我原来想的是,落子的地方与 上下,左右,左上右下 ,左下右上 依次递归比较 如果相同,计数器 count就+1
到最后如果count的值》=5 那么就赢了,但是我运行试着检测count的值 但是一直没有改变 我找不到哪里错了,希望哪位大大能帮忙看看,谢谢。
代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define A "┏"
#define B "┣"
#define C "┗"
#define D "┳"
#define E "╋"
#define F "┻"
#define G "┓"
#define H "┫"
#define M "┛"
#define N "○"
#define I "●"
int count=1;
int i=0;
char arr[20][20][4];
int winner(int a,int b);
void out(char (*p)[20][4])
{
     int i=0,j=0;
     for (i=5;i<15;i++)
     {
         for (j=6;j<15;j++)
         {
             printf("%s",*(*(p+i)+j));
         }
         printf("\n");
     }
}
int winner(int a,int b)
{
     count=1;
     while(arr[a][b]==I||arr[a][b]==N)
     {
         if(arr[a][b]==arr[a][b+1]||arr[a][b]==arr[a][b-1])//行
         {
             while(arr[a][b]==arr[a][b+1])
             {
                count++;
                if(arr[a][b]==arr[a][b+2])
                 {
                     count++;
                 if(arr[a][b]==arr[a][b+2])
                 {
                     count++;
                     if(arr[a][b]==arr[a][b+3])
                     {
                         count++;
                         if(arr[a][b]==arr[a][b+4])



  • 吃饭睡觉打豆豆
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
                           count++;
                     }
                 }
             }
             while(arr[a][b]==arr[a][b-1])
             {
                 count++;
                 if(arr[a][b]==arr[a][b-2])
                 {
                     count++;
                     if(arr[a][b]==arr[a][b-3])
                     {
                         count++;
                         if(arr[a][b]==arr[a][b-4])
                         count++;
                     }
                 }
             }
             while(count>=5)
               return 100;
             count=1;
         }
}
int main()
{
     int a,b;
     int i,j;
     int c=0;
     char (*p)[20][4];
     p=arr;
     for(i=0;i<20;i++)
     {
         for (j=0;j<20;j++)
         {
             strcpy(arr[i][j],E);
         }



2025-06-06 08:47:33
广告
  • 吃饭睡觉打豆豆
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
     }
     i=5;
     for(j=6;j<14;j++)
     {
         strcpy(arr[i][j],D);
     }
     i=14;
     for(j=6;j<14;j++)
     {
         strcpy(arr[i][j],F);
     }
     for (i = 6;i<14;i++)
     {
         strcpy(arr[i][6],B);
         strcpy(arr[i][14],H);
     }
     strcpy(arr[5][6],A);
     strcpy(arr[5][14],G);
     strcpy(arr[14][6],C);
     strcpy(arr[14][14],M);
     out(p);
     while(1)
     {
         printf("白子走,请输入行,列:");
         scanf("%d,%d",&a,&b);
         strcpy(arr[a+4][b+5],N);
         out(p);
while(1)
     {
         printf("白子走,请输入行,列:");
         scanf("%d,%d",&a,&b);
         strcpy(arr[a+4][b+5],N);
         out(p);
         c=winner(a,b);
         if(c==100)
         {
             printf("白子胜");
             exit(0);
         }
         printf("黑子走,请输入行,列:");
         scanf("%d,%d",&a,&b);
         strcpy(arr[a+4][b+5],I);
         out(p);
         c=winner(a+4,b+5);
         if(c==100)
         {
             printf("黑子胜");
             exit(0);
         }
     }
     return 0;
}
只粘贴了行的检测代码,因为写的太繁琐了,本来享用递归写的~但是没写出来,还出了老多错误


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 2回复贴,共1页
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示