三子棋

#ifndef __GAME_H__
#define __GAME_H__


void game();
void CheckerBoard(char arr[3][3]);
void PrintArr(char arr[3][3]);
void Computer(char arr[3][3]);
void Player(char arr[3][3]);
void IsWin(char arr[3][3]);
void Determine(char arr[3][3]);

#endif//__GAME_H__



#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include"game.h"


//棋盘初始化函数
void CheckerBoard(char arr[3][3])
{
    int m = 0;
    int n = 0;
    for(m=0;m<3;m++)
    {                               
        for(n=0;n<3;n++)
        {
            arr[m][n] = ' ';     
        }                                                               
    }                                 
}                                      

//打印棋盘函数
void PrintArr(char arr[3][3])
{
    int i = 0; 
    for(i=0;i<3;i++)           
    {                                        
        printf(" %c | %c | %c \n",arr[i][0],arr[i][1],arr[i][2]); 
        if(i != 2)
        {
            printf("---|---|---\n");
        }
    } 
}                                            

//电脑下棋函数
void Computer(char arr[3][3])
{
    int n = 0;
    int m = 0;
    srand((unsigned int)time(NULL));
    n = rand()%3;
    m = rand()%3;
    while(arr[m][n] != ' ')
    {
        n = rand()%3;
        m = rand()%3;
    }
    arr[m][n] = '*';

}

//玩家下棋函数
void Player(char arr[3][3])
{
    int x = 0;
    int y = 0;

    while(1)
    {
        printf("请输入坐标\n");
        scanf("%d%d",&x,&y);
        if(x>=1 && x<=3 && y>=1 && y<=3 && arr[x-1][y-1] == ' ')
        {
            arr[x-1][y-1] = '#';
            break;
        }
        else
        {
            printf("输入错误\n");
        }
    }
//start:
//  printf("请输入坐标\n");
//    scanf("%d%d",&x,&y);
//
//  if((x>3)||(y>3)||(0 == x)||(0 == y)||(arr[x-1][y-1] != ' '))
//  {
//      printf("输入错误\n");
//      goto start;
//
//  }
//  else
//  {
//      arr[x-1][y-1] = '#';
//      
//  }

}


//判断棋盘满和是否平局的 函数

void Determine(char arr[3][3])
{
    int i = 0;
    int j = 0;
    int count = 0;

    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            if(arr[i][j] != ' ')
            {
                count++;
            }               
        }
    }
    //printf("count = %d\n", count);
    if(9 == count)
    {
        printf("平局\n");
        printf("棋盘满了\n");
        exit(0);
    }
}


//判断谁赢的函数
void IsWin(char arr[3][3])
{
    if(arr[0][0]==arr[0][1] && arr[0][1]==arr[0][2] && arr[0][0]=='*'||
       arr[1][0]==arr[1][1] && arr[1][1]==arr[1][2] && arr[1][0]=='*'||
       arr[2][0]==arr[2][1] && arr[2][1]==arr[2][2] && arr[2][0]=='*'||
       arr[0][0]==arr[1][0] && arr[1][0]==arr[2][0] && arr[0][0]=='*'||
       arr[0][1]==arr[1][1] && arr[1][1]==arr[2][1] && arr[0][1]=='*'||
       arr[0][2]==arr[1][2] && arr[1][2]==arr[2][2] && arr[0][2]=='*'||
       arr[0][0]==arr[1][1] && arr[1][1]==arr[2][2] && arr[0][0]=='*'||
       arr[0][2]==arr[1][1] && arr[1][1]==arr[2][0] && arr[0][2]=='*')
    {     
       printf("电脑赢\n");
       exit(0);
    }



     if(arr[0][0]==arr[0][1] && arr[0][1]==arr[0][2] && arr[0][0]=='#'||
        arr[1][0]==arr[1][1] && arr[1][1]==arr[1][2] && arr[1][0]=='#'||
        arr[2][0]==arr[2][1] && arr[2][1]==arr[2][2] && arr[2][0]=='#'||
        arr[0][0]==arr[1][0] && arr[1][0]==arr[2][0] && arr[0][0]=='#'||
        arr[0][1]==arr[1][1] && arr[1][1]==arr[2][1] && arr[0][1]=='#'||
        arr[0][2]==arr[1][2] && arr[1][2]==arr[2][2] && arr[0][2]=='#'||
        arr[0][0]==arr[1][1] && arr[1][1]==arr[2][2] && arr[0][0]=='#'||
        arr[0][2]==arr[1][1] && arr[1][1]==arr[2][0] && arr[0][2]=='#')
     {
         printf("玩家赢\n");
         exit(0);
     }


}


void game()
{
    int line = 3;
    int row = 3;
    char board[3][3] = {0};

    CheckerBoard(board);//设置棋盘函数
    //PrintArr(board);//打印棋盘
    printf("电脑先走\n");
    while(1)
    {   printf("电脑走\n");
        Computer(board);
        PrintArr(board);
        IsWin(board);
        Determine(board);

        printf("玩家走\n");
        Player(board);
        PrintArr(board);
        IsWin(board);
        Determine(board);
    }
}




#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include"game.h"

enum
{
    PLAY,
    EXIT,
};


void menu()
{
    printf("*************************\n");
    printf("****1.play     0.exit****\n");
    printf("*************************\n");
}

int main()
{
    int input;
    do
    {
        menu();
        printf("请选择\n");
        scanf("%d",&input);
        switch(input)
        {
        case 0:
            break;
        case 1:
            game();
            break;
        default:
            printf("选择错误\n");
            break;
        }
    }
    while(input)
     ;
return 0;
}

这里写图片描述

这里写图片描述

这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值