中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

基于C語言實現三子棋游戲的代碼怎么寫

發布時間:2022-07-16 09:26:42 來源:億速云 閱讀:117 作者:iii 欄目:開發技術

這篇“基于C語言實現三子棋游戲的代碼怎么寫”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“基于C語言實現三子棋游戲的代碼怎么寫”文章吧。

1.創建文件 

test.c (游戲的測試邏輯)game.c(游戲的實現邏輯)gane.h(游戲實現函數的聲明)

game.c 和game.h屬于游戲實現 test.c屬于游戲測試

test.c 源文件(源文件添加)——game.c 源文件(源文件添加)——game.h(頭文件添加)

三個文件 

2.首先在test.c文件寫一個主函數,主函數里面有一個測試函數,測試函數里面寫菜單、進入游戲、退出游戲

代碼展示:

void menu()
{
    printf("***************************\n");
    printf("********  1.play   ********\n");
    printf("********  0.exit   ********\n");
    printf("***************************\n");
}
 
void test()
{
    int input = 0;
    do
    {
        menu();
        printf("請選擇:->");
        scanf("%d", &input);
        switch (input)
        {
        case 1:
            printf("三子棋\n");
            break;
        case 0:
            printf("退出游戲\n");
            break;
        default:
            printf("選擇錯誤\n");
            break;
        }
    } while (input);
}
 
#include <stdio.h>
int main()
{
    test();
    return 0;
}

注意:

(1)一般用do while (游戲可能會玩很多次,最少一次)

(2)先打印一個菜單

(3)switch語句,要記得break,要記得default

接下來 把printf("三子棋\n")  改成 game(); 然后開始寫游戲部分。 

3.三子棋代碼

思路:(\n 不要忘記寫)

(1)棋盤用數組

(2)假設玩家走用' * ',電腦走用' # ',所以用字符類型的數組(3*3的)

row 中文意思是行 column 中文意思是列   init 英文最初的簡寫

引用自己寫的文件 把#include < >改成 #include " "

(3)棋盤初始化

函數的聲明在頭文件里

(4)打印棋盤 (打印數據、分割行),把數據行和分割行看做一大部分,最后一部分沒有分割行而已。

(5)玩家下棋,打印棋盤,電腦下棋,打印棋盤。

(6)每下一步棋后,會有四種結果 玩家贏,電腦贏,平局,繼續玩 。所以要進行判斷。

玩家贏 &lsquo;*&rsquo;,電腦贏&lsquo;#&rsquo;,平局&lsquo;Q&rsquo;,繼續 &lsquo;C&rsquo;

game.h 部分代碼展示

#pragma once
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
 
#define ROW 3
#define COL 3
 
//初始化棋盤
void Initboard(char board[ROW][COL], int row, int col);//define 定義的ROW,COL是常量,而這里的row,col都是變量,所以不能替代
void Displayboard(char board[ROW][COL], int row, int col);//打印棋盤
void player_move(char board[ROW][COL], int row, int col);//玩家下棋
void computer_move(char board[ROW][COL], int row, int col);//電腦下棋
 
char is_win(char board[ROW][COL], int row, int col);//判斷輸贏以及平局和繼續玩

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;
    int j = 0;
    for (i = 0; i < row; i++)
    {
        //打印數據
        //printf(" %c | %c | %c \n", board[i][0], board[i][1], board[i][2]);//固定的數字0,1,2 會把棋盤給固定住,所以不能這樣寫
        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");
        }
    }
    
}
 
int is_full(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++)
        {
            if (board[i][j] == ' ')
            {
                return 0;
            }
        }
    }
    return 1;
}
 
void player_move(char board[ROW][COL], int row, int col)
{
    int x = 0;
    int y = 0;
    printf("請輸入坐標:->");
    while (1)
    {
        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 computer_move(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;
        }
    }
}
//判斷每一步棋后是輸贏,還是平局,還是繼續玩
char is_win(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[0][i] != ' ')
        {
            return board[0][i];
        }
    }
    if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != ' ')
    {
        return board[0][0];
    }
    if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ')
    {
        return board[1][1];
    }
    int a = is_full(board, row, col);
    if (1 == a)
    {
        return 'Q';
    }
    return 'C';
}

test.c 部分代碼展示

#include "game.h"
 
void menu()
{
    printf("***************************\n");
    printf("********  1.play   ********\n");
    printf("********  0.exit   ********\n");
    printf("***************************\n");
}
 
void game()
{
    char board[ROW][COL] = { 0 };
    Initboard(board, ROW, COL);//棋盤初始化,內容為空格
    Displayboard(board, ROW, COL);//打印棋盤
    char ret = 0;
    //下棋
    while (1)
    {
        player_move(board, ROW, COL);
        Displayboard(board, ROW, COL);
        ret = is_win(board, ROW, COL);
        if (ret != 'C')
        {
            break;
        }
        computer_move(board, ROW, COL);
        Displayboard(board, ROW, COL);
        ret = is_win(board, ROW, COL);
        if (ret != 'C')
        {
            break;
        }
    }
    if (ret == '*')
    {
        printf("恭喜你,取得勝利!\n");
    }
    else if (ret == 'Q')
    {
        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;
}

基于C語言實現三子棋游戲的代碼怎么寫

以上就是關于“基于C語言實現三子棋游戲的代碼怎么寫”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

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

AI

东兰县| 青河县| 福鼎市| 林口县| 曲水县| 武威市| 禄丰县| 镇巴县| 巴里| 周口市| 邹城市| 绥德县| 洛宁县| 车致| 南澳县| 隆化县| 六枝特区| 弥勒县| 桃园市| 彭阳县| 福建省| 比如县| 吉木萨尔县| 梧州市| 青田县| 治县。| 绥芬河市| 改则县| 瑞丽市| 图木舒克市| 天祝| 金川县| 阿坝县| 广丰县| 曲阳县| 兰州市| 图木舒克市| 建德市| 汉阴县| 泗阳县| 冕宁县|