欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于C語言實現(xiàn)簡易三子棋游戲

 更新時間:2022年01月14日 12:16:15   作者:獨行劍俠  
這篇文章主要為大家詳細介紹了基于C語言實現(xiàn)簡易三子棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下<BR>

用C語言寫三子棋的具體代碼,供大家參考,具體內(nèi)容如下

1、頭文件

#define _CRT_SECURE_NO_WARNINGS

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

//函數(shù)定義
//棋盤初始化
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、游戲函數(shù)

#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.雙方都不贏,棋盤還有位置繼續(xù)下棋返回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、游戲?qū)崿F(xiàn)

#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("電腦勝利,繼續(xù)加油喲!\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;
}

效果圖片

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C語言中 printf 函數(shù)輸出格式

    C語言中 printf 函數(shù)輸出格式

    這篇文章主要介紹了C語言中 printf 函數(shù)簡介,通過實例代碼給大家介紹Printf輸出格式的相關知識,需要的朋友可以參考下
    2021-08-08
  • 概率的問題:使用遞歸與多次試驗模擬的分析

    概率的問題:使用遞歸與多次試驗模擬的分析

    以下對概率的問題:使用了遞歸和多次試驗模擬。需要的朋友參考下
    2013-05-05
  • 詳解C++數(shù)組和數(shù)組名問題(指針、解引用)

    詳解C++數(shù)組和數(shù)組名問題(指針、解引用)

    這篇文章主要介紹了詳解C++數(shù)組和數(shù)組名問題(指針、解引用),指針的實質(zhì)就是個變量,它跟普通變量沒有任何本質(zhì)區(qū)別,指針本身是一個對象,同時指針無需在定義的時候賦值,具體內(nèi)容詳情跟隨小編一起看看吧
    2021-09-09
  • 淺談VC++中的內(nèi)聯(lián)

    淺談VC++中的內(nèi)聯(lián)

    在 Visual C++ 中使用內(nèi)聯(lián)匯編 一、內(nèi)聯(lián)匯編的優(yōu)缺點 因為在Visual C++中使用內(nèi)聯(lián)匯編不需要額外的編譯器和聯(lián)接器,且可以處理Visual C++ 中不能處理的一些事情,而且可以使用在 C/C++中的變量,所以非常方便。
    2015-07-07
  • C++控制臺實現(xiàn)簡單注冊登錄

    C++控制臺實現(xiàn)簡單注冊登錄

    這篇文章主要為大家詳細介紹了C++控制臺實現(xiàn)簡單注冊登錄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C語言 分支語句詳解分析

    C語言 分支語句詳解分析

    分支結(jié)構(gòu)的執(zhí)行是依據(jù)一定的條件選擇執(zhí)行路徑,而不是嚴格按照語句出現(xiàn)的物理順序。分支結(jié)構(gòu)的程序設計方法的關鍵在于構(gòu)造合適的分支條件和分析程序流程,根據(jù)不同的程序流程選擇適當?shù)姆种дZ句
    2021-10-10
  • C++模板Template詳解及其作用介紹

    C++模板Template詳解及其作用介紹

    這篇文章主要介紹了C++中模板(Template)的詳解及其作用介紹,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C++實現(xiàn)商品管理程序

    C++實現(xiàn)商品管理程序

    這篇文章主要為大家詳細介紹了C++實現(xiàn)商品管理程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 利用Matlab制作抖音同款含褶皺面料圖

    利用Matlab制作抖音同款含褶皺面料圖

    這篇文章主要介紹了如何利用Matlab制作抖音的同款含褶皺面料圖,文中的示例代碼講解詳細,對我們學習Matlab有一定幫助,需要的可以參考一下
    2022-03-03
  • 數(shù)據(jù)結(jié)構(gòu)之紅黑樹詳解

    數(shù)據(jù)結(jié)構(gòu)之紅黑樹詳解

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)之紅黑樹詳解,紅黑樹是一種自平衡二叉查找樹,它的統(tǒng)計性能要好于平衡二叉樹(AVL樹),因此,紅黑樹在很多地方都有應用,需要的朋友可以參考下
    2014-08-08

最新評論