第一范文网 - 专业文章范例文档资料分享平台

(完整版)数据结构毕业课程设计-五子棋

来源:用户分享 时间:2025/7/4 4:13:50 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

'W' )

{ 凡是接受了“上操作”,则Move_X的值减一, if( Currect( Move_X- 1, Move_Y ) ) {

Move_X-= 1; } }

else if( … ) { }

这是接下来的转换操作

ChangeCoordinates( Move_X, Move_Y, &Temp_X, &Temp_Y ); Gotoxy( Temp_X, Temp_Y );

2.5判定

对于每次走棋后,首先应该做的就是判定一否有五个棋子已经连成一线,也是一个简单的搜索过程,由于每次走的点不一定是最外部的点,因此从每次走的点的两头同时搜索,当遇到两端同时结束时,搜索结束。当满足五子时游戏结束。当然,当棋盘被走满时,游戏亦结束。代码如下: bool Legal( int Point ) {

if( Point< 1|| Point> MAX 2+ 1 ) return false; else

return true; }

搜索45度角是否为满足ChessBoard.MINBOX 以X正轴为参考轴

if( !Flag ) {

Count= 1;

for( int i1= X- 1, j1= Y+ 1, i2= X+ 1, j2= Y- 1 ; Legal( i1 )&& Legal( j1 )|| Legal( i2 )&& Legal( j2 ) ; i1--, j1++, i2++, j2-- ) {

int LastCount= Count;

if( Legal( i1 )&& Legal( j1 )&& ChessBoard.Status[i1][j1]== Ply )

{

Count++; }

if( Legal( i2 )&& Legal( j2 )&& ChessBoard.Status[i2][j2]== Ply )

{

Count++; }

if( LastCount== Count ) break;

if( Count== ChessBoard.MINBOX )

{

Flag= 1;

return true; } } }

2.6 悔棋的实现

虽说下棋悔棋是一种不道义的行为,但是如果双方约定好了,未尝不

可。在没写悔棋之前,只是记录了“上一次”的位置,声明了Last_X, Last_Y; 当然既然要求悔棋,那么直接调用栈顶元素,即可定位上次走棋的位置。那么悔棋呢,取出“上一次”的位置,判定位置(不同的位置对应不同的填充图形类型)在二维数组中撤销走棋时所赋予的 Ply 值(玩家一走时,其值为

1,玩家二走时,其值为

2),重新将

ChessBoard.Status[ Last_X ][ Last_Y ] 赋为0。代码如下: int GetFillType( int X, int Y ) {

if( X== 1 ) {

if( Y== 1 ) return 0; else if( Y== 16 ) return 2; else

return 1; }

else if( X== 16 ) {

if( Y== 1 ) return 6; else if( Y== 16 )

(完整版)数据结构毕业课程设计-五子棋.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c7m7gz6nraw5s23r4b01m9s4tl8lgrm00e6q_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top