亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

c語言版本實現的五子棋

標簽:
C C++
#include <stdio.h>
#include <stdlib.h>

#define N    5

int chessboard[N + 1][N + 1] = { 0 };

int whoseTurn = 0;

void initGame();
void printChessboard();
void playChess();
int judge(int, int);

int main()
{
    initGame();
    while (1)
    {
        ++whoseTurn;
        playChess();
    }
    return 0;
}

void initGame(void)
{
    char c;

    printf("Please input \'y\' to enter the game:");
    c = getchar();
    if ('y' != c && 'Y' != c)
        exit(0);

    system("cls");
    printChessboard();
}

void printChessboard()
{
    int i, j;

    for (i = 0; i <= N; i++)
    {
        for (j = 0; j <= N; j++)
        {
            if (0 == i)
                printf("%3d", j);
            else if (j == 0)
                printf("%3d", i);
            else if (1 == chessboard[i][j])
                printf("  O");
            else if (2 == chessboard[i][j])
                printf("  X");
            else
                printf("  *");
        }
        printf("\n");
    }
}

void playChess(void)
{
    int i, j;

    if (1 == (whoseTurn & 1))
    {
        printf("Turn to player 1, please input the position:");
        scanf_s("%d %d", &i, &j);

        while (chessboard[i][j] != 0)
        {
            printf("This position  has been occupied, please input the position again:");
            scanf_s("%d %d", &i, &j);
        }

        chessboard[i][j] = 1;
    }
    else
    {
        printf("Turn to player 1, please input the position:");
        scanf_s("%d %d", &i, &j);

        while (chessboard[i][j] != 0)
        {
            printf("This position  has been occupied, please input the position again:");
            scanf_s("%d %d", &i, &j);
        }

        chessboard[i][j] = 2;
    }

    system("cls");
    printChessboard();

    if (judge(i, j))
    {
        if (1 == (whoseTurn & 1))
        {
            printf("Winner is player 1!\n");
            exit(0);
        }
        else
        {
            printf("Winner is player 2!\n");
            exit(0);
        }
    }
}

int judge(int x, int y)
{
    int i, j;
    int t = 2 - (whoseTurn & 1);

    for (i = x - 4, j = y; i <= x; i++)
    {
        if (i >= 1 && i <= N - 4 && t == chessboard[i][j] && t == chessboard[i + 1][j] && t == chessboard[i + 2][j] && t == chessboard[i + 3][j] && t == chessboard[i + 4][j])
            return 1;
    }
    for (i = x, j = y - 4; j <= y; j++)
    {
        if (j >= 1 && j <= N - 4 && t == chessboard[i][j] && t == chessboard[i][j + 1] && t == chessboard[i][j + 2] && t == chessboard[i][j + 3] && t == chessboard[i][j + 4])
            return 1;
    }
    for (i = x - 4, j = y - 4; i <= x, j <= y; i++, j++)
    {
        if (i >= 1 && i <= N - 4 && j >= 1 && j <= N - 4 && t == chessboard[i][j] && t == chessboard[i + 1][j + 1] && t == chessboard[i + 2][j + 2] && t == chessboard[i + 3][j + 3] && t == chessboard[i + 4][j + 4])
            return 1;
    }
    for (i = x + 4, j = y - 4; i >= 1, j <= y; i--, j++)
    {
        if (i >= 1 && i <= N - 4 && j >= 1 && j <= N - 4 && t == chessboard[i][j] && t == chessboard[i - 1][j + 1] && t == chessboard[i - 2][j + 2] && t == chessboard[i - 3][j + 3] && t == chessboard[i - 4][j + 4])
            return 1;
    }

    return 0;
}
點擊查看更多內容
50人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
JAVA開發工程師
手記
粉絲
56
獲贊與收藏
363

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消