玩三子棋游戏的步骤如下:
创建棋盘
使用一个3x3的二维数组来表示棋盘,数组的每个元素初始化为0,表示空位。
打印棋盘
在游戏开始前,打印出棋盘,以便玩家和电脑下棋。
玩家下棋
玩家输入一个坐标(行和列),在该位置放置一个‘ * ’表示玩家的棋子。
电脑下棋
电脑随机生成一个坐标,在该位置放置一个‘ ’表示电脑的棋子。
判断输赢
检查棋盘上是否有玩家的三个棋子连成一条线(横向、纵向或对角线)。
如果有,则玩家获胜;如果没有,则继续游戏。
循环游戏
玩家和电脑轮流下棋,直到有玩家获胜或棋盘填满且没有玩家获胜(平局)。
结束游戏
询问玩家是否继续游戏或退出游戏。
game.h
```c
pragma once
include
define ROW 3
define COL 3
void InitBoard(char board[ROW][COL], int row, int col);
void ShowBoard(char board[ROW][COL], int row, int col);
int PlayerMove(char board[ROW][COL], int row, int col);
int IsWin(char board[ROW][COL], int row, int col, char player);
void ComputerMove(char board[ROW][COL], int row, int col);
```
game.c
```c
include "game.h"
include include void InitBoard(char board[ROW][COL], int row, int col) { for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { board[i][j] = ' '; } } } void ShowBoard(char board[ROW][COL], int row, int col) { for (int i = 0; i < ROW; i++) { for (int j = 0; j < COL; j++) { printf("%c ", board[i][j]); } printf("\n"); } } int PlayerMove(char board[ROW][COL], int row, int col) { int x, y; printf("请输入行和列(0-2):"); scanf("%d %d", &x, &y); if (x >= 0 && x < ROW && y >= 0 && y < COL && board[x][y] == ' ') { board[x][y] = ' * '; return 1; } return 0; } int IsWin(char board[ROW][COL], int row, int col, char player) { // 检查横向、纵向和对角线 for (int i = 0; i < ROW; i++) { if (board[i] == player && board[i] == player && board[i] == player) return 1; if (board[i] == player && board[i] == player && board[i] == player) return 1; } if (board == player && board == player && board == player) return 1; if (board == player && board == player && board == player) return 1; return 0; } void ComputerMove(char board[ROW][COL], int row, int col) { int x, y; do { x = rand() % ROW; y = rand() % COL; } while (board[x][y] != ' '); board[x][y] = ''; } ``` main.c