1. 配置运行环境
本游戏用到了三个文件
两个源文件:三子棋做法.c ,game.c
一个头文件:game.h
2. 三子棋游戏的初步实现
2.1 建立三子棋分布模块
想要做好游戏,首要任务就是要把模块想好。
先打印一个游戏菜单
void menu() { printf("********************************\n"); printf("********** 1.play ***********\n"); printf("********** 0.exit ***********\n"); printf("********************************\n"); }
玩家选择是否(1\0)是否进入游戏
#include <stdio.h> void menu() { printf("********************************\n"); printf("********** 1.play ***********\n"); printf("********** 0.exit ***********\n"); printf("********************************\n"); } int main() { int input = 0; do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case 1: printf("三子棋\n"); break; case 2: printf("选择错误,请重新选择\n"); break; default: break; } } while (input); return 0; }
2.2 创建一个名为board的二维数组并进行初始化
数组类型为char
char board[ ][ ] = { 0 };
void InitBoard(char board[ROW][COL], int row, int col) { int i = 0; for (i = 0; i < row; i++) { int j = 0; for (j = 0; j < col; j++) { board[i][j] = ' '; } } }
另一种写法,但要包含头文件string.h
memset(&board[0][0], ' ', row * col * sizeof(board[0][0]));
2.3 搭建棋盘
在game.c文件中实现棋盘的搭建功能
错误代码的两种形式
1. 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]); } printf("\n"); } } 2. void DisplayBoard(char board[ROW][COL], int row, int col) { int i = 0; int j = 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 DisplayBoard(char board[ROW][COL], int row, int col) { int i = 0; for (i = 0; i < row; i++) { //打印数据 int j = 0; for (j = 0; j < col; j++) { printf(" %c ", board[i][j]); if(j<col-1) printf("|"); } printf("\n"); //打印分割的行 if (i < row - 1) { for (j = 0; j < col; j++) { printf("---"); if (j < col - 1) printf("|"); } printf("\n"); } } }
该代码的目的是:构建完成打印出的棋盘,大概形状就是一个“井”框架。