三子棋是黑白棋的一种。三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙、井字棋等。将正方形对角线连起来,绝对两边顺次摆上三个单方棋子,只有将本人的三个棋子走成一条线,对方就算输了。然而,有很多时候会呈现和棋的状况。咱们学习了c语言,当初咱们尝试本人用C语言写一个三子棋小游戏玩玩吧!

三子棋棋盘图案:

游戏开始抉择:

抉择1:开始游戏

抉择0:退出游戏

当抉择开始游戏时,你与电脑开始对弈

当咱们抉择的坐标为(2,2)

电脑它抉择的坐标为(1,3)

对弈的后果只有3种:

玩家赢:

电脑赢:

平 局:

小伙伴们能够本人去尝试一下啦!!!

看看你与你的电脑谁的棋艺更高!!!

难度级别能够本人调:

棋盘格子的多少能够由本人来定

#define ROW 3  #define COL 3  //这里的行和列有本人来设定

源码:

kt.c (文件名)

#include "game.h" void menu(){    printf("***********************\n");    printf("****1.play  0.exit*****\n");    printf("***********************\n");} void game(){    char ret = 0;    char board[ROW][COL] = { 0 };    InitBoard(board, ROW, COL);    DisplayBoard(board, ROW, COL);    while (1)    {        PlayerMove(board, ROW, COL);        DisplayBoard(board, ROW, COL);        ret = IsWin(board, ROW, COL);        if (ret != 'C'){            break;        }        ComputerMove(board, ROW, COL);        DisplayBoard(board, ROW, COL);        ret = IsWin(board, ROW, COL);        if (ret != 'C'){            break;        }    }    if (ret == '*'){        printf("玩家赢\n");    }    else if (ret == '#'){        printf("电脑赢\n");    }    else{        printf("平局\n");    }} void test(){    int input = 0;    srand((unsigned int)time(NULL));    do{        menu();        printf("请抉择:>");        scanf("%d", &input);        switch (input)        {        case 1:            game();            break;        case 0:            printf("退出游戏\n");            break;        default:            printf("抉择谬误,请从新抉择!\n");            break;        }    } while (input);} int main(){    test();    return 0;}

game.c (文件名)

#include "game.h" void InitBoard(char board[ROW][COL], int row, int col){    int i = 0;    int j = 0;    for (i = 0; i < row; i++){        for (j = 0; j < col; j++){            board[i][j] = ' ';        }    }} void DisplayBoard(char board[ROW][COL], int row, int col){    int i = 0;    for (i = 0; i < row; i++){        int j = 0;        for (j = 0; j < col; j++){            printf(" %c ", board[i][j]);            if (j < col-1)                printf("|");        }        printf("\n");        if (i < row - 1){            for (j = 0; j < col; j++){                printf("---");                if (j < col-1)                    printf("|");            }            printf("\n");        }            }} void PlayerMove(char board[ROW][COL], int row, int col){    int x = 0;    int y = 0;    printf("玩家走:\n");    while (1){        printf("请输出要下的坐标:");        scanf("%d%d", &x, &y);        if (x >= 1 && x <= row && y >= 1 && y <= col){            if (board[x - 1][y - 1] == ' '){                board[x - 1][y - 1] = '*';                break;            }            else{                printf("该坐标被占用\n");            }        }        else{            printf("坐标非法,请从新输出!\n");        }    }} void ComputerMove(char board[ROW][COL], int row, int col){    int x = 0;    int y = 0;    printf("电脑走:\n");    while (1){        x = rand() % row;        y = rand() % col;        if (board[x][y] == ' '){            board[x][y] = '#';            break;        }    }} int IsFull(char board[ROW][COL],int row,int col){ //返回1示意棋盘满了,返回0示意棋盘没有满    int i = 0;    int j = 0;    for (i = 0; i < row; i++){        for (j = 0; j < col; j++){            if (board[i][j] == ' '){                return 0;            }        }    }                return 1;}char IsWin(char board[ROW][COL], int row, int col){    int i = 0;    for (i = 0; i < row; i++){        if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != ' '){            return board[i][0];        }    }    for (i = 0; i < col; i++){        if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != ' '){            return board[1][i];        }    }    if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' '){        return board[1][1];    }    if (board[2][0] == board[1][1] && board[1][1] == board[0][2] && board[1][1] != ' '){        return board[1][1];    }    if (1 == IsFull(board, ROW, COL)){        return 'Q';    }    return 'C';}

game.h(文件名)

#define ROW 3  //这里能够本人抉择大小,来减少难度#define COL 3 #include<stdio.h>#include<stdlib.h>#include<time.h> void InitBoard(char board[ROW][COL],int row,int col);void DisplayBoard(char board[ROW][COL],int row,int col);void PlayerMove(char board[ROW][COL], int row, int col);void ComputerMove(char board[ROW][COL], int row, int col);char IsWin(char board[ROW][COL], int row, int col);