簡單的三子棋程式

2021-09-23 14:17:25 字數 2950 閱讀 3220

一.題目分析

簡單三子棋是指棋盤為3*3,玩家與電腦之間對決的遊戲。其中『0』代表電腦落子,『x』:玩家落子。

基本思路:

1.列印地圖(列印乙個「#」字狀的棋盤)

2.電腦落子(隨機落子)

3.玩家落子(通過輸入座標的方式)

4判斷遊戲結果

二.程式**

game.**件

#ifndef  _game_h__

#define _game_h__

#include#include#include#include#define row 3

#define col 3

void play_game();

void init(char map[row][col], int row, int col); //地圖3*3的矩陣;

void display(char map[row][col], int row, int col); //輸出地圖

void player_move(char map[row][col], int row, int col); //玩家移動函式

void computer_move(char map[row][col], int row, int col);//電腦移動函式

char is_full(char map[row][col], int row, int col);//棋盤是否已滿

char is_win(char map[row][col], int row, int col);//判斷遊戲結果

#endif

game.c檔案

#include"game.h"

//初始化地圖,用9個空格

void init(char map[row][col], int row, int col)

//顯示函式,向螢幕列印地圖

void display(char map[row][col], int row, int col)

printf("\n");

if (i < row - 1)

printf("\n");

} }}//玩家落子,通過座標的形式

void player_move(char map[row][col], int row, int col)

else

printf("該座標已被占用,請重新輸入:");

} else

printf("輸入有誤,請重新輸入;");

}}void computer_move(char map[row][col], int row, int col)

else if (map[x][y] == ' ')//判斷是否為空格,如果是直接落子,否則重新生成隨機座標座標

}}char is_full(char map[row][col], int row, int col)

} if (count == 0)

return '1';

}char is_win(char map[row][col], int row, int col)

//判斷每一列的col個是否相等

for (j = 0; j < col; j++)

//判斷主對角線

if (map[0][0] == map[1][1] && map[1][1] == map[2][2] && map[2][2] != ' ')

return map[1][1];

//判斷次對角線

if (map[0][2] == map[1][1] && map[1][1] == map[2][0] && map[1][1] != ' ')

return map[1][1];

//判斷平局

if (ret =='1')

}

test.c檔案

#define _crt_secure_no_warnings 2

#include"game.h"

void menu() //設計乙個選單介面,使遊戲更富有可視性

void play_game()

; init(map, row, col);

//display(map, row, col);

while (1)

else if (ret == '0')

else if (ret == 'p')

else

;player_move(map, row, col);

system("cls");

display(map, row, col);

ret=is_win(map, row, col);

//printf("%c\n", ret);

if (ret == 'x')

if (ret == '0')

if (ret == 'p')

}}int main()

; int input = 0;

srand((unsigned)time(null));

do //遊戲至少要玩一局,因此在開始使用乙個do…while迴圈顯得更加合理

} while (input);

system("pause");

return 0;

}

遊戲思路:

遊戲結果總共有三種情況,輸,贏,平局,輸和贏判斷乙個就夠了,玩家或電腦每次落子後我們遍歷整個陣列,看橫三或豎三或斜三是不是同一種字元,如果是則根據字元給出相應的遊戲結果,否則遊戲繼續!

前面我們判斷了棋盤滿的情況,當棋盤滿了且雙方都沒有贏就說明遊戲平局。遊戲結束!

三.總結感悟

通過多次梳理遊戲的思路,讓我在解決三子棋遊戲的規則和考慮問題的方式更為全面,通過編寫程式的過程讓我逐漸有了一些編寫這種稍長**的完整性和邏輯性思考問題的訣竅。尤其是程式中判斷遊戲的幾種可能出現的情況,讓我又有了新的收穫。

簡單三子棋

c8 簡單三子棋 使用二維陣列 建立乙個棋盤,每乙個元素都是乙個char x 表示玩家落子 o 表示電腦落子 表示未落子 define crt secure no warnings include include include int menu define max row 3 define ma...

三子棋程式

標頭檔案game.h ifndef game h define game h include include include exit or srand include memset or include define row 3 define col 3 void game endif 原始檔ga...

簡單三子棋遊戲

通過二維陣列實現簡單的三子棋。玩家通過輸入棋盤座標進行下棋,電腦隨機生成自己的棋子。通過do while迴圈和switch case實現遊戲選單。int main while input return 0 將二維陣列全部致為空格,玩家下的棋子用x表示,電腦的棋子用o表示,即將二維陣列中的值改變為相應...