c语言-三子棋小游戏

此三子棋小游戏运用数组知识,只实现了简单功能。
头文件game.h

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define ROW 3
#define COL 3

void InitBoard(char board[ROW][COL], int row, int col, char set);
void DisplayBoard(char board[ROW][COL], int row,int col);
void PlayGame(char board[ROW][COL], int row, int col);

源文件game.c

#define _CRT_SECURE_NO_WARNINGS 1

#include "game.h"
void InitBoard(char board[ROW][COL], int row, int col, char set){
	memset(board, set, row*col*sizeof(board[0][0]));
}
void DisplayBoard(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++){
			printf("%c", board[i][j]); 
			if (j != COL - 1){
				printf("  |");
			}
			}
		printf("\n");
		if (i != ROW - 1){
			printf("---+---+---");
			printf("\n");
		}
	}
}
void PlayGame(char board[ROW][COL], int row, int col){
	int i = 0;
	int j = 0;
	int m = 0;
	int n = 0;
	while (1){
		int count = 0;
		while (1){
			printf("请输入放置棋子的坐标(如:a,b):>");
			scanf("%d,%d", &i, &j);
			if (board[i - 1][j - 1] != ' '){
				printf("此坐标已被棋子占用!请重新输入!\n");
			}
			if (i<1 || i>3 || j<1 || j>3){
				printf("坐标输入错误,请重新输入!\n");
			}
			else{
				break;
			}
		}
		printf("玩家走:\n");
		printf("\n");
		board[i - 1][j - 1] = 'X';
		DisplayBoard(board, ROW, COL);
		if ((board[0][0] == board[0][1] && board[0][1] == board[0][2] && board[0][2] == 'X')
			|| (board[1][0] == board[1][1] && board[1][1] == board[1][2] && board[1][2] == 'X')
			|| (board[2][0] == board[2][1] && board[2][1] == board[2][2] && board[2][2] == 'X')
			|| (board[0][0] == board[1][0] && board[1][0] == board[2][0] && board[2][0] == 'X')
			|| (board[0][1] == board[1][1] && board[1][1] == board[2][1] && board[2][1] == 'X')
			|| (board[0][2] == board[1][2] && board[1][2] == board[2][2] && board[2][2] == 'X')
			|| (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[2][2] == 'X')
			|| (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[2][0] == 'X')){
			printf("恭喜你,你赢了!\n");
			break;
		}
		for (m = 0; m < ROW; m++){
			for (n = 0; n < COL; n++){
				if (board[m][n] == ' '){
					count++;
				}
			}
		}
		if (count == 0){
			printf("平局!");
			break;
		}
		while (1){
			i = rand() % 3;
			j = rand() % 3;
			if (board[i][j] == ' '){
				break;
			}
		}
		board[i][j] = '*';
		printf("电脑走:>\n");
		printf("\n");
		DisplayBoard(board, ROW, COL);
		if ((board[0][0] == board[0][1] && board[0][1] == board[0][2] && board[0][2] == '*')
			|| (board[1][0] == board[1][1] && board[1][1] == board[1][2] && board[1][2] == '*')
			|| (board[2][0] == board[2][1] && board[2][1] == board[2][2] && board[2][2] == '*')
			|| (board[0][0] == board[1][0] && board[1][0] == board[2][0] && board[2][0] == '*')
			|| (board[0][1] == board[1][1] && board[1][1] == board[2][1] && board[2][1] == '*')
			|| (board[0][2] == board[1][2] && board[1][2] == board[2][2] && board[2][2] == '*')
			|| (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[2][2] == '*')
			|| (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[2][0] == '*')){
			printf("很遗憾,电脑赢了!\n");
			break;
		}
	}
}

测试部分
源文件test.c

/*
date:2018/11/22
author:Better_Me1
program:The Third Son Of Chess Games
compiler:Visual Studio 2013
*/

/*测试部分*/
#include "game.h"

void menu(){
	printf("************ 三子棋小游戏  ************\n");
	printf("******  1.进入游戏  2.退出游戏  ******\n");
	printf("**************************************\n");
}
void game(){
	char chess[ROW][COL] = { ' ' };
	InitBoard(chess, ROW, COL, ' ');//初始化
	DisplayBoard(chess, ROW, COL);//打印棋盘
	PlayGame(chess, ROW, COL);//玩游戏
}
void test(){
	int input = 0;
	while (input!=2){
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input){
		case 1:
			game();
			break;
		case 2:
			printf("退出游戏!\n");
			break;
		default:
			printf("输入有误,请重新选择!\n");
			break;
		}
	}
}
void main(){
	test();
	system("pause");
}

运行效果:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述