三子棋小游戏 C

        快要期末考试了,这几天因为疫情封在宿舍,闲来无聊,编一个三子棋玩一玩,全当复习考试了。

话不多说,上程序

#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
int main()
{
int i;
select:printf("---------请输入模式0: game  or  1: quit---------\n----------");
scanf("%d",&i);
while(i!=0&&i!=1)
{
    printf("出错了,请重新输入\n"); 
    scanf("%d",&i);
}
   while(i==0)
  {   int f1,f2;
    again:srand((unsigned)time(0));
    f1=rand()%6+1;
    for(int k=10;k<20;)
    {
          k++;
    }
    f2=rand()%6+1;
    //printf("%d %d",f1,f2);
    if(f1>f2){
        printf("-----------------%d %d-----------------\n",f1,f2);
        printf("---------------玩家1先手---------------\n");
    }
    else if(f1<f2)
    {
    printf("-----------------%d %d-----------------\n",f1,f2);
    printf("---------------玩家2先手---------------\n");
     } 
    else if(f1==f2)
    {
        goto again;
    }
        printf("--------------游戏 开始--------------\n");
    char a='&';
    char b='*';
    char pl[6][12]={"   |   |   ","---|---|---","   |   |   ","---|---|---","   |   |   "};
    for(int i=0;i<6;i++)
    puts(pl[i]);    
    //
    int row,line,k=0;    
    int flag1=0,flag2=0,flag=0,left=9;
    while(flag==0&&left>0)
    { 
    back:printf("请输入 行 和 列 \n");
      scanf("%d %d",&row,&line);
      //k++;
      if(row==1)
      row=0;
      else if(row==3)
      row=4;
      if(line==2)
      line=5;
      else if(line==3)
      line=9;
      if(pl[row][line]!=' ')
      {
          printf("出错了\n");
          goto back;
      }
      k++;left--;
      char mk;
      if(k%2==1)
      {
          mk=a;
       pl[row][line]=mk;
       for(int q=0;q<5;q+=2)
       {
           if(pl[q][1]==mk&&pl[q][5]==mk&&pl[q][9]==mk)
           flag1=1;
       }
       for(int p=1;p<10;p+=4)
       {
           if(pl[0][p]==mk&&pl[2][p]==mk&&pl[4][p]==mk)
           flag1=1;
       }
       if(pl[0][1]==mk&&pl[2][5]==mk&&pl[4][9]==mk||pl[0][9]==mk&&pl[2][5]==mk&&pl[4][1]==mk)
       flag1=1;     
      }
      else if(k%2==0)
      {
          mk=b;
       pl[row][line]=mk;
       for(int q=0;q<5;q+=2)
       {
           if(pl[q][1]==mk&&pl[q][5]==mk&&pl[q][9]==mk)
           flag2=1;
       }
       for(int p=1;p<10;p+=4)
       {
           if(pl[0][p]==mk&&pl[2][p]==mk&&pl[4][p]==mk)
           flag2=1;
       }
       if(pl[0][1]==mk&&pl[2][5]==mk&&pl[4][9]==mk||pl[0][9]==mk&&pl[2][5]==mk&&pl[4][1]==mk)
       flag2=1;
      }
      for(int i=0;i<6;i++)
      puts(pl[i]);
      if(flag1==1)
      printf("玩家1获胜\n");
      else if(flag2==1)
      printf("玩家2获胜\n"); 
      flag=flag1+flag2;
      if(flag==0&&left==0)
      printf("平局");    
    }    
    goto select;
 }


return 0;        
 } 

有兴趣的小伙伴可以动手试一试,很简单哦~~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值