作为编程菜鸟的我,用C语言实现三子棋小游戏,有些小兴奋,特来献分享一波。
本文从设计目的,实现要求,具体步骤,代码编写,实现效果及反思回顾5个方面来描述我辛酸的编写历程。
一、设计目的:
用C语言(VS-2010)实现玩家与电脑的三子棋对战,并输出对战结果。
二、实现要求:
1.游戏登录界面
2.棋盘与棋子展示方式
3.指示玩家操作
4.异常操作的处理
三、具体步骤
1.首先设计一个简单的游戏进入界面,玩家进行选择是否“玩游戏”,玩,则进入游戏;不玩则退出游戏;非法输入则重新选择。
2.进入游戏后,将棋盘初始化,显示棋盘,然后让玩家选择下棋位置。
3.下棋过程中,玩家每次下一棋子后,都会将下棋后的棋盘重新展示,并判断是否有结束(输,赢,平局)或继续下棋;同样,电脑每次下一棋子后,也会将下棋后的棋盘重新展示,并判断是否有结束(输,赢,平局)或继续下棋。
4.游戏结束后,给到玩家选择,是否继续游戏或退出游戏。
四、代码编写
头文件:
主函数源文件
三子棋游戏源文件
五、实现效果
六、反思改进:
初次编写200多行的代码,预计花费2小时,竟花费了我5个小时,而且我竟没感觉时间飞逝如此之快!!!
出错:
1.这里面最大的坑也是耽误我时间最长的就是自定义函数二维数组arr[ROW][COL]的调用,自定义函数二维数组的形参char arr与实参arr不兼容,但不会影响程序的正常运行;自定义函数二维数组的形参char arr[ROW][COL]与实参arr则没问题。
***函数实参选择arr,是调用数组arr[ROW][COL]的首地址,也是数组的地址;而实参选择arr[ROW][COL],则为数组元素arr[ROW][COL]的地址,不能代表数组。
2.剩下的是一些小坑,主要是条件判断‘==’与赋值号‘=’的错误运用,条件判断中条件判断要用分成单独的一条一条的条件判断句逻辑组合使用,不能直接合并到一起(如2<x<45不能作为条件判断句,应使用2 < x && x < 45);
3.陌生函数的错误使用,srand((unsigened)time()NULL)即随机数发生器的初始化函数 的使用(直接单独作为一条语句使用,误认为它可以赋值给某变量了)。
改进:
棋盘的行数和列数可以进行概括,增加棋盘面积;
将三子棋改造为五子棋,除通过for循环判断是否有五子相连的行列,还可通过for循环判断是否有五子相连的斜向排列(循环的边界条件会产生变化)