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

时间:2025-04-20

valueattack[i][j]+=value_qx2(chessboard,i,j,k,(color+1) % 2); if(maxj<valuedefent[i][j])

maxj=valuedefent[i][j]; // 记录进攻价值的最大值 } if(rand()%(maxi+maxj+1)>maxi){ // 如果防守价值的最大值比较低 attacktrend=1; // AI优先进攻 defenttrend=1; }else{ // 相反 attacktrend=1; // AI优先防守 defenttrend=2; } for(i=0;i<15;i++) // 根据各点的进攻和防守价值 for(j=0;j<15;j++){ // 计算最终价值 value[i][j]=valuedefent[i][j]*defenttrend+valueattack[i][j]*attacktrend; if(max<value[i][j]){ max=value[i][j]; // 记录价值的最大值 maxi=i; // 以及相应的坐标 maxj=j; probability=1;} else if(max==value[i][j]){ // 如果出现相同价值的最大点 if(rand()%(probability+1)<probability) // 随机决定选取哪一个 probability++; /* 由于前面的点容易被淘汰,所以相应提高前面的点的被选择的几率 */ else{ probability=1; // 选择后面的点,则几率权值回复 max=value[i][j]; // 记录 maxi=i; maxj=j;} } } *x=maxi; // 返回价值最大的点 *y=maxj; }

//-----------------------主要部分------------------------------------

bool vshuman; //对手是否是人

void Vs(bool human) {//对局主要函数 int i,j; int color=1; // 黑棋先走 int lastx,lasty; // 光标的上一个位置 int computer; // 电脑执黑还是执白 NODE chessboard[15][15]={{0,0}}; // 棋盘 if(!human){ // 对手是电脑 showsubmenu(); // 选择谁是先手

《面向对象程序设计》(12).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219