手机版

《面向对象程序设计》(9)

发布时间:2021-06-07   来源:未知    
字号:

两步前的位置 cursor.y=j; renew(chessboard,i,j); // 重绘棋盘 renew(chessboard,tempx,tempy); // 重绘光标原本所在处 } } }else if(step==2){ //如果下了一步 for(i=0;i<15;i++) //搜索上一步所下的位置 for(j=0;j<15;j++) if(chessboard[i][j].step==step-1){ // 找到上一步 chessboard[i][j].step=0; // 清空棋子标志 renew(chessboard,i,j);} // 重绘棋盘 tempx=cursor.x; // 记录光标位置 tempy=cursor.y; cursor.x=7; // 将光标移回棋盘中央 cursor.y=7; renew(chessboard,i,j); // 重绘棋盘 renew(chessboard,tempx,tempy); // 重绘光标原本所在处 } }

//------------------------------判断部分-------------------------------

bool inside(int x, int y)

{// 如果不在棋盘内返回false,否则返回true if(x<0 || x>14 || y<0 || y>14) return false; return(true); }

int line(NODE chessboard[][15], int dirt, int x, int y, int color)

{// 判断颜色为color的点(x,y),在dirt方向上有多少相连的同色棋子 int i; for(i=0;chessboard[x+direction[dirt][0]][y+direction[dirt][1]].step>0 && chessboard[x+direction[dirt][0]][y+direction[dirt][1]].color==color;i++) { x=x+direction[dirt][0]; y=y+direction[dirt][1]; if(!inside(x,y)) return i; } return i; }

bool win(NODE chessboard[][15], int x, int y, int color) {// 判断是否有人赢棋 if(line(chessboard,0,x,y,color)+line(chessboard,1,x,y,color)>3) return true; if(line(chessboard,2,x,y,color)+line(chessboard,3,x,y,color)>3) return true;

《面向对象程序设计》(9).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)