zoukankan      html  css  js  c++  java
  • 五子棋实现体验其过程

    
    
      1 #include <stdio.h>
      2 /*
      3 项目:五子棋赢棋判断
      4 思路:1.横向扫描判断是否有连续5颗相连的棋子
      5 2.纵向扫描判断是否有连续5颗相连的棋子
      6 3.扫描主对角线判断是否有连续5颗相连的棋子
      7 4.斜线扫描主对角线上半面是否有连续5颗相连的棋子
      8 5.斜线扫描主对角线下半面是否有连续5颗相连的棋子
      9 6.扫描次对角线判断是否有连续5颗相连的棋子
     10 7.斜线扫描次对角线上半面是否有连续5颗相连的棋子
     11 8.斜线扫描次对角线下半面是否有连续5颗相连的棋子
     12 
     13   9.1代表黑棋。2代表白棋。其他数字0代表未走棋
     14 */
     15 #define M 10     //定义棋盘上下边界,上边界0 下边界10
     16 #define N 10     //定义棋盘左右边界,左边界0 右边界10
     17 
     18 int main(void)
     19 {
     20     int i,j,k,q;
     21     //    k = q = 0;    
     22     //初始化二维数组
     23     int arr[M][N] = {
     24         {0,1,1,0,1,1,0,0,2,0},
     25         {0,2,1,0,0,2,0,0,0,0},
     26         {0,0,2,0,2,0,1,0,0,0},
     27         {0,0,0,2,1,1,0,0,0,0},
     28         {0,0,2,0,2,1,0,0,0,0},
     29         {0,2,0,1,0,2,0,1,0,0},
     30         {0,0,1,0,0,0,0,0,0,0},
     31         {0,0,0,0,0,0,0,1,0,0},
     32         {0,0,0,0,0,0,0,1,0,0},
     33         {0,0,0,0,0,0,0,1,0,0}
     34     };
     35     //1.横向扫描判断是否有连续5颗相连的棋子
     36     for(k = 0,q = 0,i = 0;i<M;i++)
     37     {
     38         for(j = 0;j<N;j++)
     39         {
     40             if(arr[i][j] == 1)
     41                 k++;
     42             else
     43                 k = 0;
     44             if(arr[i][j] == 2)
     45                 q++;
     46             else
     47                 q = 0;
     48             if(k>=5)
     49             {
     50                 printf("黑棋胜利
    ");
     51                 return 0;
     52             }
     53             if(q>=5)
     54             {
     55                 printf("白棋胜利
    ");
     56                 return 0;
     57             }
     58         }
     59         
     60         
     61     }
     62     //2.纵向扫描判断是否有连续5颗相连的棋子
     63     for(j = 0;j<N;j++)
     64     {
     65         k = q = 0;
     66         for(i = 0;i<M;i++)
     67         {
     68             if(arr[i][j] == 1)
     69                 k++;
     70             else
     71                 k = 0;
     72             if(arr[i][j] == 2)
     73                 q++;
     74             else
     75                 q = 0;    
     76             if(k>=5)
     77             {
     78                 printf("黑棋胜利
    ");
     79                 return 0;
     80             }
     81             if(q>=5)
     82             {
     83                 printf("白棋胜利
    ");
     84                 return 0;
     85             }
     86         }
     87         
     88     }
     89     //3.扫描主对角线判断是否有连续5颗相连的棋子
     90     for(k = q = 0,i = 0;i<M;i++)
     91     {
     92         if(arr[i][i] == 1)
     93             k++;
     94         else
     95             k = 0;
     96         if(arr[i][i] == 2)
     97             q++;
     98         else
     99             q = 0;
    100         if(k>=5)
    101         {
    102             printf("黑棋胜利
    ");
    103             return 0;
    104         }
    105         if(q>=5)
    106         {
    107             printf("白棋胜利
    ");
    108             return 0;
    109         }
    110     }
    111     //4.斜线扫描主对角线上半面是否有连续5颗相连的棋子
    112     
    113     for(j = 1;j<N;j++)
    114     {
    115         k = q = 0;
    116         for(i = 0;i<M-j;i++)
    117         {
    118             if(arr[i][i+j] == 1)
    119                 k++;
    120             else
    121                 k = 0;
    122             if(arr[i][i+j] == 2)
    123                 q++;
    124             else
    125                 q = 0;
    126             if(k>=5)
    127             {
    128                 printf("黑棋胜利
    ");
    129                 return 0;
    130             }
    131             if(q>=5)
    132             {
    133                 printf("白棋胜利
    ");
    134                 return 0;
    135             }
    136         }
    137     }
    138     //5.斜线扫描主对角线下半面是否有连续5颗相连的棋子
    139     for(i = 1;i<M;i++)
    140     {
    141         k = q = 0;
    142         for(j = 0;j<N-i;j++)
    143         {
    144             if(arr[j+i][j] == 1)
    145                 k++;
    146             else
    147                 k = 0;
    148             if(arr[j+i][j] == 2)
    149                 q++;
    150             else
    151                 q = 0;
    152             
    153             if(k>=5)
    154             {
    155                 printf("黑棋胜利
    ");
    156                 return 0;
    157             }
    158             if(q>=5)
    159             {
    160                 printf("白棋胜利
    ");
    161                 return 0;
    162             }
    163         }
    164         
    165     }
    166     //6.扫描次对角线判断是否有连续5颗相连的棋子
    167     for(k = q = 0,i = 0;i<M;i++)
    168     {
    169         if(arr[i][9-i] == 1)
    170             k++;
    171         else
    172             k = 0;
    173         if(arr[i][9-i] == 2)
    174             q++;
    175         else
    176             q = 0;
    177         if(k>=5)
    178         {
    179             printf("黑棋胜利
    ");
    180             return 0;
    181         }
    182         if(q>=5)
    183         {
    184             printf("白棋胜利
    ");
    185             return 0;
    186         }
    187     }
    188     
    189     //7.斜线扫描次对角线上半面是否有连续5颗相连的棋子
    190     for(j = N-2;j>=0;j--)
    191     {
    192         k = q = 0;
    193         for(i = 0;i<M-(N-j-1);i++)
    194         {
    195             if(arr[i][j-i] == 1)
    196                 k++;
    197             else
    198                 k = 0;
    199             if(arr[i][j-i] == 2)
    200                 q++;
    201             else
    202                 q = 0;
    203             
    204             if(k>=5)
    205             {
    206                 printf("黑棋胜利
    ");
    207                 return 0;
    208             }
    209             if(q>=5)
    210             {
    211                 printf("白棋胜利
    ");
    212                 return 0;
    213             }
    214         }
    215         
    216     }
    217     //8.斜线扫描次对角线下半面是否有连续5颗相连的棋子
    218     
    219     for(i = 1;i<M;i++)
    220     {
    221         k = q = 0;
    222         for(j = N-1;j>=i;j--)
    223         {
    224             if(arr[N-j+i-1][j] == 1)
    225                 k++;
    226             else
    227                 k = 0;
    228             if(arr[N-j+i-1][j] == 2)
    229                 q++;
    230             else
    231                 q = 0;
    232             
    233             if(k>=5)
    234             {
    235                 printf("黑棋胜利
    ");
    236                 return 0;
    237             }
    238             if(q>=5)
    239             {
    240                 printf("白棋胜利
    ");
    241                 return 0;
    242             }
    243         }
    244         
    245     }
    246     
    247     return 0;
    248 }
  • 相关阅读:
    mongostat
    mongodb的游标方法
    mongodb升级
    mongodb的白名单
    mongodb的副本集方法
    mongodb的collection方法
    mongodb的db方法
    mongoexport
    mongoimport
    mongodb分片集群管理
  • 原文地址:https://www.cnblogs.com/wangchaomahan/p/9582494.html
Copyright © 2011-2022 走看看