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.是否連成一條線檢測。對剛落下的妻子檢查所在的行是否都是同一選手的棋子 同樣再檢...