资源描述:
《双人对战五子棋单机游戏》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第1章双人对战五子棋单机游戏益智游戏作为人类社会发展和创新的必然产物,已经被越来越多的人们所重视它寓教于乐,以轻松愉快的方式让人们在娱乐中学习,在学习中娱乐,在欢乐中得到思维能力的训练我国目前正处在素质教育改革的风头浪尖,益智游戏因其特殊性便成为了非常行之有效的辅助工具,其发展前景良好市场相当广阔。1.设计题目使用C语言及VC绘图库,在VC环境下,设计一个双人五子棋对战单机游戏,双方各执黑白一子,黑白双方轮流落子,直到某一方首先在棋盘的横线、纵线或斜线上形成连续五子,则该方就算获胜,游戏过程可以悔棋一步;要求友好的图形化界面、方
2、便操作。2.功能设计要求根据五子棋游戏规则,项目设计有以下几点要求:1.输出游戏规则并由用户决定是否遵守并开局;2.要求动态画出棋盘大小;3.画棋子并确定其颜色;4.提示下棋规则;5.玩家轮流下棋;6.判断谁先落棋;7.允许且只允许悔棋一步;8.判断每局游戏输赢,显示每局游戏的获胜者及分数;9.判断是否进行下一局;10.判最终赢家(三局两胜)。3.详细设计1.3.1功能模块图根据功能设计要求,双人对战五子棋参考功能模块图如下所示:图11双人对战功能模块图1.1.1数据结构本项目涉及到的主要数据是存放棋局的二维数组,棋盘大小可以
3、改变,利用宏定义实现如下:#defineN10intchess[N][N]={0};/*初值为0*/chess的初值为0,chess[i][j]值为1表示该处落的是白子;chess[i][j]值为2,表示该处落的是黑子。白棋子率先在一条直线上值都为1,白棋子赢;黑棋子率先一条直线上值都为2,黑子赢。当完成当前局,开始下一局时,chess重新赋值为0。1.1.2系统流程图根据系统功能设计要求,系统参考流程图如下所示:图12双人对战单机游戏系统流程图1.1.1主要函数及算法的设计与实现1.判断是否五子相连函数函数原型:⑴intGa
4、me_Over1(inta[10][10],intchess_symbol)/*判断五子相连是否是"—"形或者"
5、"形(事实上"-"与"
6、"关于""对称)*/⑵intGame_Over2(inta[10][10],intchess_symbol)/*判断五子相连是否是""形*/⑶intGame_Over3(inta[10][10],intchess_symbol)/*判断五子相连是否是"/"形*/功能:判断某一方是否有5个棋子在一条直线上,分别有“—”,“
7、”,“/”,“”四种情况。参数:存方棋盘信息的参数a;判断是不是四
8、种直线“—”,“
9、”,“/”,“”中的一种chess_symbol。返回值:如果判断的确是某一方五子相连,则返回1,否则返回0。要求:棋盘是用二维数组来存放的,利用双重循环遍历整个二维数组。参考函数如下:intGame_Over1(inta[10][10],intchess_symbol)/*"—"形或者"
10、"形(事实上"-"与"
11、"关于""对称)*/{inti,j,k,l,r;for(i=0;i12、ess_symbol)/*"-"形*/l++;if(a[j][i]==chess_symbol)/*"
13、"形*/r++;}if(l==5
14、
15、r==5)/*连续的个棋子在一条直线上时,游戏结束*/return1;}return0;}intGame_Over2(inta[10][10],intchess_symbol)/*""形*/{inti,j,k,m,LeftDown,RightUp;for(m=0;m16、i17、
18、LeftDown==5)return1;}return0;}intGame_Over3(inta[10][10],intchess_symbol)/*"/"形*/{inti,j,k,m,LeftUp,RightDown;for(m=N-1;m>=
19、4;m--)for(k=0;k