1. 程式人生 > 其它 >c語言三子棋遊戲(每天一個裝杯小技巧,原始碼在末尾)

c語言三子棋遊戲(每天一個裝杯小技巧,原始碼在末尾)

三子棋是黑白棋的一種。三子棋是一種民間傳統遊戲,又叫九宮棋、圈圈叉叉、一條龍、井字棋等。將正方形對角線連起來,相對兩邊依次擺上三個雙方棋子,只要將自己的三個棋子走成一條線,對方就算輸了。但是,有很多時候會出現和棋的情況。我們學習了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);