#include <stdlib.h>
 #include <stdio.h>
 #include <time.h>
 #include <windows.h>int map[110],bu[1000];
 char str[4][20];
 struct node
 {
     int q,w;
     char name[20];
 }a[3];
 void f()
 {
     int n,m;
     strcpy(str[1],"戴高乐");
     strcpy(str[2],"艾森豪威尔");
     strcpy(str[3],"麦克阿瑟");
     strcpy(str[4],"巴顿");
     printf("★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n");
     printf("//                                                      //\n");
     printf("//                                                      //\n");
     printf("//                                                      //\n");
     printf("//                 骑  士  飞  行  棋                   //\n");
     printf("//                                                      //\n");
     printf("//                                                      //\n");
     printf("//                                                      //\n");
     printf("//                                                      //\n");
     printf("★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\n\n\n");
     printf("~~~~~~~~~~~~~~~~~~~~~两  人  对  战~~~~~~~~~~~~~~~~~~~~~~~\n\n");
     printf("请选择角色: 1.戴高乐  2.艾森豪威尔  3.麦克阿瑟  4.巴顿\n");
     printf("请玩家1选择角色:");
     scanf("%d",&n);
     strcpy(a[1].name,str[n]);
     printf("玩家1选择了%s\n\n",a[1].name);
     printf("请玩家2选择角色:");
     scanf("%d",&m);
     while(n == m)
     {
         printf("对不起,玩家选择人物重复,请重新选择\n");
         printf("请玩家2选择角色:");
         scanf("%d",&m);
     }
     strcpy(a[2].name,str[m]);
     printf("玩家2选择了%s\n\n",a[2].name);
     printf("人物选择完毕,游戏开始......\n\n");
 }
 void dice( )
 {
     int i;
     for(i=0;i<100;i++)
     {
          map[i] = 1;
         if(i == 6 || i == 14 || i == 18 || i == 34 || i == 39 || i == 51 || i == 65 || i == 81 || i == 95)
         {
             map[i] = 5;
         }
         else if(i == 10 || i == 28 || i == 61 || i == 94)
         {
             map[i] = 2;
         }
         else if(i == 7 || i == 24 || i == 41 || i == 56 || i == 72 || i == 84)
         {
             map[i] = 4;
         }
         else if(i == 26 || i == 21 || i == 46 || i == 64 || i == 75 || i == 89 || i == 91 )
         {
             map[i] = 3;
         }    }
}
void dice1( )
 {
     int i;
     srand( (unsigned)time( NULL ) );
       for(i=0;i<500;i++)
        {
            bu[i] = (rand()%6)+1;
        }
 }void ditu()
 {
     int i,j;
     printf("起点\n");
     for(i=1;i<=30;i++)
     {
         if(map[i] == 1)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("∷");
             }
         }
         else if(map[i] == 2)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("■");
             }
         }
         else if(map[i] == 3)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("●");
             }
         }
         else if(map[i] == 4)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("◎");
             }
         }
         else
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("★");
             }
         }
     }    for(i=31;i<=35;i++)
     {
          printf("\n");
         for(j=0;j<58;j++)
         {
                 printf(" ");
         }
             if(map[i] == 1)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                  printf("∷");
             }
         }
         else if(map[i] == 2)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("■");
             }
         }
         else if(map[i] == 3)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                  printf("●");
             }
         }
         else if(map[i] == 4)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("◎");
             }
         }
         else
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("★");
             }
         }    }
     printf("\n");
     for(i=65;i>=36;i--)
     {
         if(map[i] == 1)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("∷");
             }
         }
         else if(map[i] == 2)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("■");
             }
         }
         else if(map[i] == 3)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("●");
             }
         }
         else if(map[i] == 4)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("◎");
             }
         }
         else
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                  printf("★");
             }
         }
     }
     for(i=66;i<=71;i++)
     {
         printf("\n");
         if(map[i] == 1)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("∷");
             }
         }
         else if(map[i] == 2)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("■");
             }
         }
         else if(map[i] == 3)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                  printf("●");
             }
         }
         else if(map[i] == 4)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("◎");
             }
         }
         else
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("★");
             }
         }
     }
     for(i=72;i<=100;i++)
     {
         if(map[i] == 1)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("∷");
             }
         }
         else if(map[i] == 2)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("■");
             }
         }
         else if(map[i] == 3)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
                 {
                     printf("●");
                 }
         }
         else if(map[i] == 4)
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                  printf("◎");
             }
         }
         else
         {
             if(i == a[1].q)
             {
                 printf("11");
             }
             else if(i == a[2].q)
             {
                 printf("22");
             }
             else
             {
                 printf("★");
             }
         }
     }
     printf(" 终点\n");}
int main()
 {
     a[1].q = 0;
     a[1].w = 0;
     a[2].q = 0;
     a[2].w = 0;
     dice();
     dice1();
     ditu();
     printf("\n\n");
     f();
     char str1[3][20],p;
     strcpy(str1[1],"你将会与对方交换位置");
     strcpy(str1[2],"将会轰炸对方,让对方后退6步");
     int k,i= 0;
     int n = 0,m = 0;
     int count1 = 0,count2 = 0;
     while(a[1].q<=99 && a[2].q<=99)
     {
         if(count1 == 2 && a[1].w == 1)
         {
             a[1].w = 0;
         }
         if(count2 ==2 && a[2].w == 1)
         {
             a[2].w = 0;
         }
         int x =0,y = 0;
         if(a[1].w == 0)
         {
             printf("请玩家 %s掷骰子\n\n",a[1].name);
             k = bu[i++];
             printf("玩家 %s掷骰子的点数是%d\n\n",a[1].name,k);
             a[1].q = a[1].q + k;
             n = a[1].q;
             if(map[n] == 2)
             {
                 printf("运气不佳,被跳过,下局自动跳过\n\n");
                 a[1].w = 1;
                 count1 = 0;            }
             else if(map[n] == 3)
             {
                 printf("恭喜进入时空隧道,前进10步\n\n");
                 a[1].q = a[1].q + 10;            }
             else if(map[n] == 4)
             {
                 printf("恭喜进入幸运转盘,现说明规则\n\n");
                 printf("选择 1 你将会与对方交换位置\n\n");
                 printf("选择 2 将会轰炸对方,让对方后退6步\n\n");
                 printf("现在你的位置为%d    对方的位置为%d\n\n",a[1].q,a[2].q);
                 printf("请输入你的选择:");
                 scanf("%d",&x);
                 printf("玩家%s选择了第%d种方法\n\n",str1[x],x);
                 if(x == 1)
                 {
                     y = a[2].q;
                     a[2].q = a[1].q;
                     a[1].q = y;
                 }
                 else
                 {
                     a[2].q = a[2].q - 6;
                     if(a[2].q<0)
                     {
                         a[2].q = 0;
                     }
                 }
             }
             else if(map[n] == 5)
             {
                 printf("人品不佳,踩到地雷后退6步\n\n");
                 a[1].q = a[1].q - 6;
                 if(a[1].q<0)
                 {
                     a[1].q = 0;
                 }
             }
             ditu();
             printf("玩家%s的位置是第%d位\n\n",a[1].name,a[1].q);
             getchar();        }
         if(a[1].q>100)
         {
             break;
         }
         printf("玩家%s回合结束,摁任意键继续游戏\n",a[1].name);
             p = getchar();
         if(a[2].w == 0)
         {
             printf("请玩家 %s掷骰子\n\n",a[2].name);
             k = bu[i++];
             printf("玩家 %s掷骰子的点数是%d\n\n",a[2].name,k);
             a[2].q = a[2].q + k;
             m = a[2].q;
             if(map[m] == 2)
             {
                 printf("运气不佳,被跳过,下局自动跳过\n\n");
                 a[2].w = 1;
                 count2 = 0;            }
             else if(map[m] == 3)
             {
                 printf("恭喜进入时空隧道,前进10步\n\n");
                 a[2].q = a[2].q + 10;            }
             else if(map[m] == 4)
             {
                 printf("恭喜进入幸运转盘,现说明规则\n\n");
                 printf("选择 1 你将会与对方交换位置\n\n");
                 printf("选择 2 将会轰炸对方,让对方后退6步\n\n");
                 printf("现在你的位置为%d    对方的位置为%d\n\n",a[2].q,a[1].q);
                 printf("请输入你的选择:");
                 scanf("%d",&x);
                 printf("玩家%s选择了第%d种方法\n\n",str1[x],x);
                 if(x == 1)
                 {
                     y = a[1].q;
                     a[1].q = a[2].q;
                     a[2].q = y;
                 }
                 else
                 {
                     a[1].q = a[1].q - 6;
                     if(a[1].q<0)
                     {
                         a[1].q = 0;
                     }
                 }
             }
             else if(map[m] == 5)
             {
                 printf("人品不佳,踩到地雷后退6步\n\n");
                 a[2].q = a[2].q - 6;
                 if(a[2].q <0)
                 {
                     a[2].q = 0;
                 }
             }
             ditu();
             printf("玩家%s的位置是第%d位\n\n",a[2].name,a[2].q);
             getchar();        }
         if(a[2].q>100)
         {
             break;
         }
         printf("玩家%s回合结束,摁任意键继续游戏\n",a[2].name);
             p = getchar();
        count1++;
        count2++;
     }
     if(a[1].q>a[2].q)
     {
         printf("恭喜玩家 %s 赢得胜利\n",a[1].name);
     }
     else
     {
         printf("恭喜玩家 %s 赢得胜利\n",a[2].name);
     }
     return 0;
 }