三子棋和扫雷是很多人小时候喜欢的娱乐项目,在学习过简单的数组以及函数知识后,就可以利用这些知识写出简易的三子棋和扫雷游戏了。
同时,这两个小项目的实现代码量相对较大,因此使用了模块化的思想,将主函数,功能函数以及函数与头文件的声明放在不同的模块内,使得代码结构更加规范,可读性更强。
接下来我将分两个部分分别介绍这两个游戏的实现。
三子棋
(一)整体思路
创建一个3*3的字符数组,先存上“ ”,等待输出。然后让玩家选定要走的位置,将玩家所选的位置上放上*号,再让电脑在其他的格子落子,同时每次下子后就进行一次检测,当检测到有三个连在一起的棋子时,游戏结束。
(二)主函数部分
#include"game_control.h"//自定义头文件的文件名
int main()
{
int key = 1;
int a = 0;
//循环,保证游戏可以反复游玩
while (key)
{
menu();
scanf_s("%d", &a);
//实现选择
switch (a)
{
case 1:
game();
break;
case 2:
key = 0;
break;
default:
printf("选点正常的!!!!");
break;
}
}
return 0;
}
(三)功能函数部分
#include"game_control.h"
//打印菜单
void menu()
{
printf("**************************\n");
printf("********* 1.play *********\n");
printf("********* 2.exit *********\n");
printf("**************************\n");
}
//游戏的流程
void game()
{
char board[ROW][COL] = { 0 };
InitBoard(board, ROW, COL);
CreateBoard(board, ROW, COL);
char ret = 0;
while (1)
{
PlayerMove(board, ROW, COL);
CreateBoard(board, ROW, COL);
ret = IsWin(board, ROW, COL);
if (ret != 'C')
break;
ComputerMove(board, ROW, COL);
CreateBoard(board, ROW, COL);
ret = IsWin(board, ROW, COL);
if (ret != 'C')
break;
}
if (ret == '*')
printf("不过是赢个电脑而已,有啥了不起的\n");
else if (ret == '#')
printf("电脑都下不赢,建议投胎\n");
else
printf("我猜你是故意下平的,不然你也太菜了\n");
//查询作者的精神状态.jpg
}
//初始化棋盘
void