一、设计目标:
五子棋
二、功能描述:
1. **双方博弈**:玩家通过触摸屏输入落子。
2. **投降功能**:允许玩家当前棋局投降。
3. **胜负判定**:自动检查棋盘上是否形成连续五子的局面。
4. **悔棋功能**:玩家可以悔棋,撤销上一步走法。
三、系统框架:
四、设计方案:
硬件选择
1. **GEC6818嵌入式开发板**:
2.**LCD触摸显示屏屏**:用于显示棋盘和棋子,执行落子功能
软件环境
1. **操作系统**:选择适合GEC6818的Linux操作系统。
2.**编程语言**:使用C语言进行编程,因为C语言具有较好的性能和跨平台特性。
游戏逻辑
1. **棋盘设计**:定义一个9x9的棋盘,用一个二维数组来存储棋盘状态,每个单元格存储黑棋、白棋或空状态。
棋盘设计思想
for (int h = 0; h < 480; h++) //打印棋盘的横线
{
for (int w = 0; w < 496; w++)//打印棋盘的列
{
//为棋盘的每个格子绘制一个像素点,颜色为0xa42d00(一种黄色)
lcd_draw_pixel(w, h, 0xa42d00);
//如果在棋盘的边界位置,则绘制黑色像素点
if (w <= 16)
{
lcd_draw_pixel(w, h, 0x000000);
}
//如果行h是48的倍数,表示到达一个新的横线,则绘制黑色像素点作为分隔线
if (h % 48 == 0)
{
lcd_draw_pixel(w, h, 0x000000);//分隔线为黑色
}
}
}
for (int w = 0; w < 496; w++) // 打印棋盘的竖线
{
for (int h = 0; h < 480; h++)
{
//如果列w是48的倍数加32,表示到达一个新的竖线,则绘制黑色像素点作为分隔线
if ((w + 32) % 48 == 0)
{
lcd_draw_pixel(w, h, 0x000000);
}
}
棋子设计思路:(像素填充)
lcd_init();
//根据传入的字符(b或w)判断是黑棋还是白棋,并相应地绘制棋子
if (arr == 'b')//b代表黑棋,颜色为黑色
{
for (int w = x - 48; w < x + 48; w++)//在棋子的周围绘制一个圆形区域(半径为48像素)为黑色
{
for (int h = y - 48; h < y + 48; h++)
{
if ((w - x) * (w - x) + (h - y) * (h - y) <= 125)//根据圆心和半径判断像素点是否在圆内
{
lcd_draw_pixel(w, h, 0x000000);//在圆内绘制黑色像素点,表示放置了黑棋
*color *= -1;//更新颜色状态,表示已经放置了黑棋,下次放置白棋
}
}
}
}
else if (arr == 'w')//w代表白棋,颜色为白色
{
for (int w = x - 48; w < x + 48; w++)//在棋子的周围绘制一个圆形区域(半径为48像素)为白色
{
for (int h = y - 48; h < y + 48; h++)
{
if ((w - x) * (w - x) + (h - y) * (h - y) <= 125)
{
lcd_draw_pixel(w, h, 0xffffff);
*color *= -1;//更新颜色状态,放置白子,下次放置黑子
}
}
}
}
2**落子逻辑**:玩家触摸棋盘落子,系统检查落子是否有效(如超出棋盘范围、重复落子等)。
3.*胜负判定**:检查当前棋盘状态,判断是否有一方获胜或是否平局。
4.**悔棋功能**:实现悔棋功能,允许玩家撤销一步。
5.**投降功能**:实现投降功能,允许玩家当前棋局投降,记录胜利次数。
6.**和棋功能**:实现和棋功能,允许玩家当前棋局和棋,不记录胜利次数。
图形用户界面
1. **界面设计**:设计直观易用的图形用户界面,包括棋盘、选择界面、退出界面等。
2.**界面元素**:包括棋盘、棋子、游戏状态(如计分器、胜利信息等)。
系统集成
1. **测试**:对每个模块进行单独测试,确保功能正确。
2.**集成**:将所有模块整合到一个系统中,进行整体测试。
3.**优化**:根据测试结果优化性能,修复发现的问题。
五、实现过程:
1. **棋盘数组设计**:定义一个二维数组来表示棋盘,使用合适的数据结构来存储棋子状态。
2. **落子实现**:编写函数处理落子逻辑,包括判断是否越界和是否重复落子。
3. **胜负判定**:在棋盘的横向、纵向、斜向搜索连续五个相同棋子,判断胜负。
4. **触摸屏控制**:使用触摸屏读取事件来获取触摸坐标,并执行相应的落子操作。
5. **界面设计**:设计直观易用的图形界面,使用2D图形界面技术绘制棋盘和棋子。
六、 演示视频:
五子棋