目录
一、五子棋的准备工作
我们在写一个项目的时候,首先第一步就是应该规划一个项目应该有哪些文件,然而五子棋的代码逻辑比较简单,这里我就分了三个文件来写:
- game.h(这个文件用来存储头文件和函数的声明),
- game.c(这个文件用来存储具体的实现代码),
- test.c(这个文件用来测试我们的代码)
第二步就是规划一个项目应该有哪些功能或者说有哪些机制,比如说五子棋,他可能就有人机对战,玩家下一步,电脑下一步,判断棋盘有没有一片区域是连成一块的,这些都是我们要考虑到的,并且把他们一个个封装成函数,整个逻辑就可以运行起来,下面是具体要实现的一些功能的函数并且还有相应的头文件,我都放到game.h里面了
#pragma once #include <stdio.h> #include <stdlib.h> #include <time.h> //棋盘的长度和宽度 #define ROW 5 #define COL 5 //初始化 void board_init(char arr[ROW][COL], int row, int col); //打印 void board_display(char arr[ROW][COL], int row, int col); //玩家下棋 void player_move(char arr[ROW][COL], int row, int col); //电脑下棋 computer_move(char arr[ROW][COL], int row, int col); //判断是否赢了 char is_win(char arr[ROW][COL], int row, int col);
二、五子棋的具体实现
1.棋盘
下五子棋,第一步就是要有一个棋盘,我们常见可能有3*3的棋盘或5*5的棋盘,用来下井字棋最合适,我本来以为我写的棋盘可能会和下面这些图一样。


但是没想到自己写的棋盘长这样,其实也还能看。

下面就是具体实现过程:
我们会发现棋盘的每一个格子是由上下两部分组成的,首先是上面部分是由两个空格加上中间的数据区域加上右边的竖杠(|),然后是下面部分是由三个减号(-)加上右边的竖杠(|),但是我们会发现我们数据区域好像一开始也是空格,那是因为在实现打印棋盘的函数之前,我先给所有区域都初始化为空格,为什么要初始化空格呢?首先初始化空格可以帮助我们占一个位置,如果你不初始化,很可能就是随机值,到时候打印出来就会很奇怪,那为什么一定要初始化空格呢?首先空格可以帮助我们占一个位置,就是把右边空格顶过去,如果你初始化为0,就不会帮你占位置,右边的空格就和左边的空格挨在一起,就会很难看,下面是初始化的代码:
//初始化 void board_init(char arr[ROW][COL], int row, int col) { int i = 0; int j = 0; for (i = 0; i < row; i++) { for (j = 0; j < col; j++) { arr[i][j] = ' '; } } }
这样我们很快就分析出,棋盘第一行是数据区域,第二行是分隔线,然后以此类推,每一行都是这样的,那我们就想先用for循环遍历第一行把数据的那一部分先打印出来,然后用第二个for循环把分割线也打印出来&

最低0.47元/天 解锁文章
5620

被折叠的 条评论
为什么被折叠?



