N子棋的实现首先要搭好游戏的整个框架:
整个流程:
一、对菜单的掌控:
打印菜单(这里使用的是do-while循环可以保证菜单至少能够打印一次)
具体实现如下:
①选择退出,就直接结束程序
②选择错误,返回循环继续选择
③选择游戏,进入执行游戏的代码块
二、进入游戏
①对长度为N的二维数组进行遍历,并初始化值
②打印棋盘:在这里一行分为两部分,上半部分打印"|",下半部分打印"|---",另外要注意每一行,每一列打印的个数,设置循环条件来进行控制。
实现结果如下:
③玩家下棋----打印下棋后的棋盘----判断输赢
④电脑下棋----打印下棋后的棋盘----判断输赢
电脑下棋我们获取的是随机值,即用时间戳的随机生成电脑下棋的坐标。
以上就是代码的整个框架,具体的实现请看下图的代码
我在这里实现的下棋规则就是:棋盘始终是一个N方阵,如果N大于5,就设置连成5子获得胜利,反之,如果小于5,连成N/2 + 1就可以获得胜利
test.c的代码
#define _CRT_SECURE_NO_WARNINGS 1
#include "game.h" //引用自己定义的头文件用""
//游戏的菜单,无论是否执行都要打印一次
void menu() {
printf("-------------------------------------\n");
printf("------- 1.play 0.exit -------\n");
printf("-------------------------------------\n");
}
void game() {
//在头文件中定义棋盘的大小
char board[ROW][COL] = {0};
//定义一个变量判断来判断游戏是否结束
char ret;
//初始化棋盘
InitBoard(board,ROW,COL);
//打印棋盘
DisplayBoard(board, ROW, COL);
//下棋(循环)
while (1) {
//玩家先下棋(是对数组的操作) 打印棋盘的样子 判断输赢
PlayerMove(board, ROW, COL);
DisplayBoard(board, ROW, COL);//玩家走一步就打印棋盘的样子
ret = IsWin(board,ROW,COL); //判断游戏是否结束
if (ret !=