亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用C語言實現簡易三子棋游戲

發布時間:2022-01-14 14:14:22 來源:億速云 閱讀:158 作者:iii 欄目:開發技術

今天小編給大家分享一下如何用C語言實現簡易三子棋游戲的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

1、頭文件

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h>
//標識符定義
#define ROW 3
#define COL 3

//函數定義
//棋盤初始化
void init_board(char board[ROW][COL], int row, int col);
//打印棋盤
void display_board(char board[ROW][COL], int row, int col);
//玩家下棋
void player_game(char board[ROW][COL], int row, int col);
//電腦下棋
void comeputer_game(char board[ROW][COL], int row, int col);
//判斷輸贏
char is_win(char board[ROW][COL], int row, int col);

2、游戲函數

#include "game.h"

//棋盤初始化
void init_board(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 display_board(char board[ROW][COL], int row, int col) {
    int i = 0;
    int j = 0;
    int k = 0;
    for (i = 0; i < ROW; i++) {
        for (j = 0; j < COL; j++) {
            printf(" %c ",board[i][j]);
            if (j < COL - 1) {
                printf("|");
            }
        }
        printf("\n");
        if (i < ROW - 1) {
            for (k = 0; k < COL; k++) {
                printf("---");
                if (k < COL - 1) {
                    printf("|");
                }
            }                
        }
        printf("\n");
    }
}

//玩家下棋
void player_game(char board[ROW][COL], int row, int col) {
    int x = 0;
    int y = 0;
    while (1)
    {
        printf("請輸入你要落子的坐標>:");
        scanf("%d %d", &x, &y);
        if (x <= row && y <= col && x >= 1 && y >= 1) {
            if (board[x - 1][y - 1] == ' ') {
                board[x - 1][y - 1] = '*';
                break;
            }
            else {
                printf("你輸入的坐標被占用!\n");
            }
        }
        else {
            printf("你輸入的坐標有誤,請重新輸入!\n");
        }
    }    
}

//電腦下棋
void comeputer_game(char board[ROW][COL], int row, int col) {
    while (1) {
        int x = rand() % row;
        int y = rand() % col;
        if (board[x][y] == ' ') {
            board[x][y] = '#';
            break;
        }
    }    
}

//判斷輸贏
//1.玩家贏返回*
//2.電腦贏返回#
//3.雙方都不贏,棋盤沒有位置平局返回p
//4.雙方都不贏,棋盤還有位置繼續下棋返回c
char is_win(char board[ROW][COL], int row, int col) {
    int x = 0;
    int y = 0;     
    //判斷行
    for (x = 0; x < row; x++) {
        if (board[x][0] == board[x][1] && board[x][1] == board[x][2] && board[x][1] != ' ') {
            return board[x][1];
        }        
    }
    //判斷列
    for (y = 0; y < col; y++) {
        if (board[0][y] == board[1][y] && board[1][y] == board[2][y] && board[1][y] != ' ') {
            return board[1][y];
        }        
    }
    //判斷對角線
    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[1][2] && board[1][1] != ' ') {
        return board[1][1];
    }
    //判斷棋盤是否有空位
    for (x = 0; x < row; x++) {
        for (y = 0; y < col; y++) {
            if (board[x][y] == ' ') {
                return 'c';
            }
        }
    }
    return 'p';
}

3、游戲實現

#include "game.h"

//打印菜單
void menu() {
    printf("***************************\n");
    printf("********* 三 子 棋 ********\n");
    printf("********* 1. play  ********\n");
    printf("********* 0. exit  ********\n");
    printf("***************************\n");
}

void game() {
    char win = 0;
    //定義棋盤存儲
    char board[ROW][COL];
    //棋盤初始化
    init_board(board, ROW, COL);
    //打印棋盤
    display_board(board, ROW, COL);
    while (1) {
        //玩家下棋
        player_game(board, ROW, COL);
        display_board(board, ROW, COL);
        //判斷輸贏
        win = is_win(board, ROW, COL);
        if (win != 'c') {
            break;
        }
        //電腦下棋
        comeputer_game(board, ROW, COL);
        display_board(board, ROW, COL);
        //判斷輸贏
        win = is_win(board, ROW, COL);
        if (win != 'c') {
            break;
        }
    }
    if (win == '*') {
        printf("恭喜玩家勝利!\n");
        display_board(board, ROW, COL);
        system("pause");
    }
    else if (win == '#') {
        printf("電腦勝利,繼續加油喲!\n");
        display_board(board, ROW, COL);
        system("pause");
    }
    else {
        printf("平局\n");
        display_board(board, ROW, COL);
        system("pause");
    }

}  

int main(void) {
    
    int num = 0;
    srand((unsigned)time(NULL));
    do {
        //打印菜單
        menu();
        //選擇菜單
        printf("請選擇菜單>:");
        scanf("%d", &num);
        switch (num)
        {
        case 0:
            break;
        case 1:
            game();
            break;
        default:
            printf("你的選擇錯誤,請重新選擇!\n");
            system("pause");
            system("cls");
            break;
        }

    } while (num);
    

    system("pause");
    return 0;
}

效果圖片

如何用C語言實現簡易三子棋游戲

以上就是“如何用C語言實現簡易三子棋游戲”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长垣县| 清丰县| 孟村| 清苑县| 深泽县| 色达县| 都匀市| 朝阳县| 太湖县| 桑植县| 清水县| 鄂托克前旗| 盐城市| 大冶市| 长武县| 博客| 嘉荫县| 洪湖市| 常德市| 固原市| 维西| 阿图什市| 扎赉特旗| 满城县| 忻州市| 保康县| 盱眙县| 宁都县| 化隆| 武冈市| 介休市| 永靖县| 瑞安市| 楚雄市| 聂荣县| 泰和县| 当雄县| 昂仁县| 辽中县| 红原县| 卢龙县|