双人对战五子棋单机游戏.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
双人对战五子棋单机游戏

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

文档评论(0)

cgtk187 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档