手机版

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

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

char *p; p=strchr(qx2[kind].qx,'x'); for(k=0;k<=p-qx2[kind].qx;k++) { x-=direction[dirt][0]; y-=direction[dirt][1]; } for(k=0;(unsigned)k<strlen(qx2[kind].qx);k++) { x+=direction[dirt][0]; y+=direction[dirt][1]; if(!inside(x,y)) return false; if(chessboard[x][y].step>0 && chessboard[x][y].color==color) c='2'; else if(chessboard[x][y].step>0) c='1'; else c='0'; if(c=='0' && qx2[kind].qx[k]=='x') continue; if(c!=qx2[kind].qx[k]) return false; } return true; }

int value_qx2(NODE chessboard[][15], int x, int y, int dirt, int color) {// 计算颜色为color的点8个方向上的进攻权值之和 int i; for(i=0;i<qx2_num;i++) if(macth2(chessboard,x,y,dirt,i,color)) return qx2[i].value ; return 0; }

void AI(NODE chessboard[][15], int *x, int *y, int color) {// AI的主要函数,将思考后的结果返回给*x和*y int max=0; // 价值的最大值 int maxi,maxj; // 获得最大值时所对应的坐标 int i,j,k; // 循环控制变量 int probability=1; // 几率参数 int value[15][15]={0}; // 棋盘上各点的价值 int valueattack[15][15]={{0}}; // 棋盘上各点的进攻价值 int valuedefent[15][15]={{0}}; // 棋盘上各点的防守价值 for(i=0;i<15;i++) // 计算棋盘上各点的防守价值 for(j=0;j<15;j++) { if(chessboard[i][j].step>0) continue; for(k=0;k<8;k++) valuedefent[i][j]+=value_qx1(chessboard,i,j,k,color); if(maxi<valuedefent[i][j]) maxi=valuedefent[i][j]; // 记录防守价值的最大值 } for(i=0;i<15;i++) // 计算棋盘上各点的进攻价值 for(j=0;j<15;j++) { if(chessboard[i][j].step>0) continue; for(k=0;k<8;k++)

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