c语言项目-五子棋游戏
- 开发环境:linux虚拟机内,Ubuntu,画板。
- IDE:Sublime-Text
- 编程语言:c语言
- 最终运行环境:arm-6818开发板(800*480)
所用的知识:系统io,数组,指针,内存拷贝,条件判断,循环,函数,枚举,宏定义,结构体,线程,字库
设计意图:运行在arm-6818开发板的一款触摸式五子棋游戏,游戏模式为人人对战。
设计之初:第一次做这样的项目,所以不知道从哪里下手,只有自己摸索,完全是靠着自己脑袋想出来的,代码也是一点点写出来的。
运行样例:
代码历程:
先在main函数里打开开发板的lcd和触摸屏的驱动,棋盘背景图。首先是将棋盘图显示在开发板上,其中用的是循环和memcpy内存拷贝函数。这样一个完整的棋盘图就显示在开发板上了,接下来就是让你点击棋盘时棋子能落到棋盘的点上,刚刚好好,一厘不差。我先是得到棋盘上每个落棋点的坐标,然后根据两点间的距离公式,找到距离你触摸点最近的那个落棋点,然后根据在开发板画圆的特性,在上面画棋子。之后初始化整个棋盘,在此之前定义一个棋盘结构体,里面分别是typedef enum { EMPTY, BLUE, RED } ChessPiece;
,初始化整个棋盘使每个落棋点都置为空(EMPTY),为了阻止在同一位置下了两次棋子,所以在放旗子之前都会进行判断if(board[m][n] == EMPTY)
,为真我才填充棋子。最后就是判断输赢的逻辑,五子棋的判断逻辑无非就是,同一个棋子在其横竖对角线,连续有五个相同颜色的棋子就赢,所以就有了循环遍历每个棋子,分别是横向检查里的向左检查,向右检查;纵向检查里的向上检查和向下检查;主对角线的向左上检查和向右下检查;副对角线的向右上检查和向左下检查;定义一个全局变量记录每个棋子有连续五个的次数,一旦变量大于等于5,该玩家即获胜。最后为背景因为开启一个线程,游戏结束线程取消。总体来说这样一个五子棋游戏难度并不是很大。再接再厉!