三子棋小遊戲

2021-08-01 12:02:43 字數 4695 閱讀 2065

game.h

#define

_crt_secure_no_warnings

#ifndef __game_h__

#define

__game_h__

#include

#include

#include

#include

#define

rows 3//

行數#define

cols 3//

列數void initboard(char board[rows][cols], int row, int col);

void display(char board[rows][cols], int row, int col);

void playermove(char board[rows][cols], int row, int col);

void computermove(char board[rows][cols], int row, int col);

char iswin(char board[rows][cols], int row, int col);

int  isfull(char board[rows][cols], int row, int col);

#endif __game_h__

game.c

#define

_crt_secure_no_warnings

#include

#include

"game.h"

#include

int isfull(char

board[rows][cols], int

row, int

col)//

判斷輸贏

int i, j;

for (i = 0; i < row; i++)

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

if (board[i][j] = ' ')

return 0;

return 1;

void initboard(char

board[rows][cols], int

row, int

col)   //

初始化棋盤

///*int i = 0;

//int j = 0;

//for (i = 0; i < row; i++) //

//}*/

memset(board, ' ', row*col*sizeof(board[0][0]));

void  display (char

board[rows][cols], int

row, int

col)    //

列印棋盤

int i = 0;

for (i = 0; i < row; i++)

printf(" %c | %c | %c \n", board[i][0], board[i][1],board[i][2]);

if (i < row - 1)

printf("---|---|---\n");

void playermove(char

board[rows][cols], int

row, int

col)    //

玩家開始遊戲

int x = 0;

int y = 0;

while (1)

printf("

請輸入座標:

");scanf ("%d%d", &x, &y);

if (((x >= 1) && (x <= 3)) && ((y >= 1) && (y <= 3)))   //

判斷輸入的座標是否合理

if (board[x - 1][y - 1] == ' ')

board[x - 1][y - 1] = 'x';

break;

else

printf("

座標已被占用

\n");

else

printf("

座標錯誤

\n");

void computermove(char

board[rows][cols], int

row, int

col)   //

電腦遊戲

while (1)

int x = rand() % 3;   //

生成隨機行座標

int y = rand() % 3;    //

生成隨機列座標

if (board[x][y] == ' ')

board[x][y] = '$';

break;

char  iswin(char

board[rows][cols], 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]))  //

連成行for (i = 0; i < col; i++)

if ((board[0][i] == board[1][i]) && (board[1][i] == board[2][i]))      //

連成列return board[0][i];

if ((board[0][0] == board[1][1]) && (board[1][1] == board[2][2]))  //

對角線return board[1][1];

if ((board[0][2] == board[1][1]) && (board[1][1] == board[2][0]))

return board[1][1];

if (isfull(board, row, col) == 1)  //

棋盤若滿,則平局

return

'q';

return

' ';

test.c

#define

_crt_secure_no_warnings

#include

#include

"game.h"

void menu()    //

列印選單

printf("*************************\n");

printf("****1.play   0.exit  ****\n");

printf("*************************\n");

void game()

char board[rows][cols] = ;   //

定義乙個陣列

char ret = 0;

initboard (board, rows, cols);   //

初始化棋盤

display (board, rows, cols);     //

列印棋盤

while (1)      //

玩遊戲的過程

playermove(board, rows, cols);

ret = iswin(board, rows, cols);

if (ret != ' ')    //

判斷棋盤是否被填滿

break;

display(board, rows, cols);

computermove(board, rows, cols);

display(board, rows, cols);

ret = iswin(board, rows, cols);

if (ret != ' ')      //

判斷棋盤是否被填滿

break;

display(board, rows, cols);

if (ret == 'x')

printf("

玩家贏\n");

else

if (ret == '$')

printf("

電腦贏\n");

else

if (ret == 'q')

printf("

平局\n");

void test()

int  input = 0;

srand((unsigned

int)time(null));

do//

選擇是否進行遊戲

menu();

printf("

請選擇:

");scanf("%d", &input);

switch (input)

case 1:  //選擇1

開始遊戲

game();

break;

case 0:   //選擇0

退出遊戲

break;

default:

printf("

選擇錯誤

");   //

其他選擇,輸入錯誤

break;

while (input);

int main()

test();

return 0;

小遊戲 三子棋

c語言 實現最簡單的三子棋 無人工智慧,介面簡單,手動輸入座標x x 如下 環境 vs2015 game.h pragma once ifndef game h define game h include include include include define row 3 define col...

三子棋小遊戲

簡單版的三子棋遊戲並不難,就只是運用二維陣列和呼叫各個函式。現在來分析遊戲的思路,首先在螢幕上列印乙個選擇遊戲的選單,這個簡單,就只需要呼叫乙個函式輸出就可以了,玩家選擇開始遊戲就進入遊戲函式,首先要初始化二維陣列,可以用memset 來進行初始化,然後在螢幕上列印出三子棋的棋盤,這個也簡單,知識簡...

三子棋小遊戲

一 井字雙人對戰遊戲 3子棋遊戲 分析 1.棋盤模擬。因為棋盤上的交叉點正好是3行3列,因此用乙個3行3列的二維陣列即可。資料初始值為0,表示未有妻子落下 值為1表示落下的是1好選手棋子,之位2表示的是2號選手的棋子。2.是否連成一條線檢測。對剛落下的妻子檢查所在的行是否都是同一選手的棋子 同樣再檢...