五子棋人机对战源代码.docVIP

  • 22
  • 0
  • 约2.15万字
  • 约 37页
  • 2023-03-30 发布于浙江
  • 举报
五子棋人机对战源代码 #include stdafx.h #include FiveStone.h #include FiveKernel.h #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// FiveKernel::FiveKernel() { const char * readstring[9]={ 长连,五,活四,冲四,活三,冲三,活二, 可能为五,不可能为五 }; int ItemNum; FILE * f; //read opentable file f=fopen(openlib.txt,r); fscanf(f,%3x\n, ItemNum); int j; for (int i=0;iItemNum;i++){ fscanf(f, %3x: %8x\n, j, OpenTable[i]); }; fclose(f); //read valuetable file f=fopen(valuelib.txt,r); char str1[5], str2[10], str[2][11]; for (i=0;i3281;i++){ ValueTable[i][0]=0; ValueTable[i][1]=0; } for (i=0;i6561;i++){ fscanf(f, %s %s %s %s\n\n, str1, str2, str[0], str[1]); for (j=0;j2;j++){ for (int k=0;k9;k++){ if (strcmp(str[j],readstring[k])==0){ if (i=3280){ ValueTable[i][j]+=(k+1)*16; //k+1 because value can not be 0 } if (i=3280){ ValueTable[6560-i][j]+=(k+1); } break; } } } } fclose(f); Result=rsNotPlayed; } FiveKernel::~FiveKernel() { } bool FiveKernel::NewGame(HARDLEVEL hardlevel, RULE rule) { if (Result==rsNotOut){ if (IDYES!=MessageBox(GetActiveWindow(), Are you sure to cancel the curre nt game?,New game,MB_YESNO)){ return false; } } HardLevel=hardlevel; Rule=rule; HandLimit=(rule!=rlNormal); Result=rsNotOut; int i,j; //initialize Board for (i=0;i16;i++){ for (j=0;j16;j++){ Board[i][j]=vlCanBeFive*16+vlCanBeFive; } } StepNum=0; Turn=tnBlackTurn; return true; } bool FiveKernel::InputChess(POS pos) { if ((_ValidPos(pos))((Board[pos.x][pos.y]4)=1)(Result==rsNotOut)){ BYTE value=(Turn==tnBlackTurn)?((Board[pos.x][pos.y]4)) :((Board[pos.x][pos.y]0x0f)); if (value==vlHandLimit){ MessageBox(GetActiveWindow(), Invalid chess!,Hand limit,MB_OK); return false; } _GoAStep(pos); return true; }else return false; } bool FiveKernel::Ou

文档评论(0)

1亿VIP精品文档

相关文档