三子棋

三子棋的实现
今天我们来说说,一个简单的三子棋小游戏怎样用C语言代码来实现;
三子棋要实现的功能:
1.轮流下棋。
2.判断胜负。
3.判断是否和棋。
具体的代码逻辑:
1.甲落子。
2.判断是否甲胜利。
3.判断是否为和棋。
4.电脑落子。
5.判断是否电脑胜利。
6.判断是否为和棋。
一直重复上述过程,直到一方胜利或者和棋跳出循环,而且每次有一方落子,都得更新棋盘。
并打印出来。我是用一个二维的字符数组来写这个小游戏的,代码如下:

#define ROW 3 
#define COL 3
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<string.h>
char arr[ROW][COL];
void computer(){
 int row = 0;
 int col = 0;
 while (2){
  srand((unsigned)time(0));
     row = rand() % 3;
  col = rand() % 3;
  if (arr[row][col] == 'o'|| arr[row][col] == 'x'){
   continue;
  }
  if (arr[row][col] == ' '){
   arr[row][col] = 'o';
   for (int i = 0; i < 3; i++){
    for (int j = 0; j < 3; j++){
     printf(" | ");
     printf("%c", arr[i][j]);
    }
    printf(" |");
    printf("\n");
    if (i < 2){
     printf(" -------------");
    }
    printf("\n");
   }
   printf("\n");
   break;
  }
 }
}

这是电脑的落子,由随机数产生随机的落子位置。

void man(){
 int row = 0;
 int col = 0;
 while (2){
  printf("请输入坐标,中间用空格隔开:\n");
  scanf("%d %d", &row, &col);
  if (row> 2 || col > 2 || row < 0 || col < 0){
   printf("输入不合法:\n");
   continue;
  }
  else if (arr[row][col] == 'o' || arr[row][col] == 'x'){
   printf("该位置已经落子:\n");
   continue;
  }
  else if (arr[row][col] == ' '){
   arr[row][col] = 'x';
   }
   break;
  }
 }

这是玩家的落子代码

void game(){
 int num1 = 0;
 int num2 = 0;
 for (int i = 0; i < 3; i++){
  for (int j = 0; j < 3; j++){
    arr[i][j] =' ';
   printf("%c", arr[i][j]);
  }
  printf("\n");
}                          
 while (2){
  man();
  if ((arr[0][0]==arr[0][1]&&arr[0][0]==arr[0][2]&&arr[0][0] == 'x') || (arr[1][0] == arr[1][1]&&arr[1][0] == arr[1][2]&&arr[1][0] == 'x') 
   || (arr[2][0] == arr[2][1]&&arr[2][0] == arr[2][2]&&arr[2][0] == 'x' )|| (arr[0][0] == arr[1][0]&&arr[0][0] == arr[2][0]&&arr[0][0] == 'x') || 
   (arr[0][1] == arr[1][1] &&arr[0][1]== arr[2][1]&&arr[0][1] == 'x') || (arr[0][2] == arr[1][2]&&arr[0][2] == arr[2][2]&&arr[0][2] == 'x' )||( arr[0][0] == arr[1][1]&&arr[0][0] == arr[2][2]&&arr[0][0] == 'x') || ( arr[0][2] == arr[1][1]&&arr[0][2] == arr[2][0] &&arr[0][2]== 'x')){
  printf("游戏结束,你赢了!\n");
  for (int i = 0; i < 3; i++){
   for (int j = 0; j < 3; j++){
    printf(" | ");
    printf("%c", arr[i][j]);
   }
   printf(" |");
   printf("\n");
   if (i < 2){
    printf(" -------------");
   }
   printf("\n");
  }
  break;
 }
  for (int i = 0; i < 3; i++){
   for (int j = 0; j < 3; j++){
    if (arr[i][j] == 'x' || arr[i][j] == 'y'){
     num1++;
    }
   }
  }
  if (num1 == 9){
   printf("和棋\n");
   break;
  }
  computer();
  if ((arr[0][0] == arr[0][1] && arr[0][0] == arr[0][2] && arr[0][0] == 'o') || (arr[1][0] == arr[1][1] && arr[1][0] == arr[1][2] && arr[1][0] == 'o')
   || (arr[2][0] == arr[2][1] && arr[2][0] == arr[2][2] && arr[2][0] == 'o') || (arr[0][0] == arr[1][0] && arr[0][0] == arr[2][0] && arr[0][0] == 'o') ||
   (arr[0][1] == arr[1][1] && arr[0][1] == arr[2][1] && arr[0][1] == 'o') || (arr[0][2] == arr[1][2] && arr[0][2] == arr[2][2] && arr[0][2] == 'o') || (arr[0][0] == arr[1][1] && arr[0][0] == arr[2][2] && arr[0][0] == 'o') || (arr[0][2] == arr[1][1] && arr[0][2] == arr[2][0] && arr[0][2] == 'o')){
   printf("游戏结束,电脑赢!\n");
   for (int i = 0; i < 3; i++){
    for (int j = 0; j < 3; j++){
     printf(" | ");
     printf("%c", arr[i][j]);
    }
    printf(" |");
    printf("\n");
    if (i < 2){
     printf(" -------------");
    }
    printf("\n");
   }
   break;
  }
   for (int i = 0; i < 3; i++){
    for (int j = 0; j < 3; j++){
     if (arr[i][j] == 'x' || arr[i][j] == 'y'){
      num2++;
     }
    }
  }
   if (num2 == 9){
    printf("和棋\n");
    break;
   }
 }
}

这是游戏是否结束的逻辑判断,胜负以及和棋的判断。
这就是一个简单的三子棋小游戏哈哈哈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值