五子棋游戏 1.设计目的 (1)加深对面向对象程序基本的理解和掌握。 (2)熟练掌握基本流程图的绘制。 (3)能够在调试程序中快速发现并排除程序中的错误。 (4)提高面向对象程序语言解决实际中的问题的能力。 进一步培养结构化程序设计的思想,加深对高级系统语言基本语言要素和控制结构的理解,针对C++语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。 此课程设计着眼于知识的运用,把平常学的知识运用到课程实践中来,本身就是考察我们知识运用能力。要求熟悉运用一些编程软件,对我们所学的理论知识进一步的深化。 2.功能描述 (1)输出棋盘界面 (2)玩家轮流下棋 (3)判断键盘输入的坐标位置 (4)判断是否在同一位置下棋 (5)判断赢家 (6)结束游戏 由两个玩家分别下棋,按任意键开始游戏,显示棋盘,用户通过输入横纵坐标的位置下棋,当某一个玩家五子相连,则赢。 界面要求:初始状态——显示棋盘,并显示两个玩家的操作键及初始玩家名称;游戏进行状态——动态显示棋盘,不同玩家的棋子用不同符号显示,屏幕上显示当前玩家号,结束时显示赢家名称。
3.总体设计 3.1系统流程图 五子棋对弈系统流程图如下: 判断位置是否有棋 找另一位置 白方下子 开始 否 白方下子 是 判断白方是否胜出 否 跳出白棋获胜 判断是否重现开局 否 判断位置是否有棋否 找另一位置 游戏结束 黑方下子 黑方下子 跳出黑棋获胜 是 判断黑方是否胜出 图 1程序总体图
游戏开始 白(黑)方下子 某方在水平方向是否大于4 否 是 白(黑)方获胜 是 某方在垂直方向 是否大于4 否 白(黑)方获胜 进入选择是否重新开局框 白(黑)方获胜 是 某方在正对角线方向是否大于4 否 某方在反对角线方向是否大于4 否 黑(白)方下子 图2算法流程图 是 白(黑)方获胜 3.2详细设计 3.2.1 本系统的主要结构和类结构 (1)五子棋功能实现的主要结构函数 void getpointxy(); //白棋出子函数 void getpointmn(); //黑棋出子函数 void showqipan(); //实现20行20列正方形界面输出 void print(); //输出下一棋盘界面及计数 bool IsxyWin(); //白棋获胜 bool IsmnWin(); //黑棋获胜 void menu();//显示开始菜单界面 (2)五子棋类的结构 class five
{ int x,y,m,n,num_xy,num_mn; char qipan[20][20]; //定义20行20列的数组 public: five(int X = 0,int Y =0,int M = 0,int N = 0,int Num_xy = 0,int Num_mn = 0) //构造函数初始化 { x = X; y = Y; m = M; n = N; num_xy = Num_xy; num_mn = Num_mn; for(int i = 0 ; i < 20 ; i ++) //输出20行20列的棋盘界面 { for(int j = 0 ;j < 20 ; j ++) qipan[i][j] = '.'; } } 3.2.2功能模块 (1)图形显示模块:程序开始运行时,显示给出的一个界面任意键继续,包括对数据成员的赋值和成员函数的初始化还有通过for循环实现对20行20列坐标的定义。源代码如下: class five { int x,y,m,n,num_xy,num_mn; char qipan[20][20]; //定义20行20列的数组 public: five(int X = 0,int Y =0,int M = 0,int N = 0,int Num_xy = 0,int Num_mn = 0) //构造函数初始化 { x = X; y = Y; m = M; n = N; num_xy = Num_xy; num_mn = Num_mn; for(int i = 0 ; i < 20 ; i ++) //输出20行20列的棋盘界面 { for(int j = 0 ;j < 20 ; j ++) qipan[i][j] = '.'; } } void getpointxy(); //白棋出子及计数 void getpointmn(); //黑棋出子及计数 void showqipan(); //实现20行20列正方形界面输出 void print(); //输出下一棋盘界面 bool IsxyWin(); //白棋获胜
相关推荐: