📄 ai.cpp
字号:
for(y=0; y<FIVE_Y-5; y++){
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y+1]==nSide &&
m_nboard[x+2][y+2]==FIVE_NULL &&
m_nboard[x+3][y+3]==nSide &&
m_nboard[x+4][y+4]==nSide &&
m_nboard[x+5][y+5]==FIVE_NULL){
m_nVals[x+2][y+2]+=m_nValuesSetting[7];
m_nVals[x ][y ]+=m_nValuesSetting[8];
m_nVals[x+5][y+5]+=m_nValuesSetting[8];
}
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y+1]==nSide &&
m_nboard[x+2][y+2]==nSide &&
m_nboard[x+3][y+3]==FIVE_NULL &&
m_nboard[x+4][y+4]==nSide &&
m_nboard[x+5][y+5]==FIVE_NULL){
m_nVals[x+3][y+3]+=m_nValuesSetting[7];
m_nVals[x ][y ]+=m_nValuesSetting[8];
m_nVals[x+5][y+5]+=m_nValuesSetting[8];
}
}
}
void AI::Think06(char nSide)
{//@*@**500 value9
int x,y;
//_*_**500 |
for(x=0; x<FIVE_X; x++)
for(y=0; y<FIVE_Y-4; y++){
if( m_nboard[x][y ]==FIVE_NULL &&
m_nboard[x][y+1]==nSide &&
m_nboard[x][y+2]==FIVE_NULL &&
m_nboard[x][y+3]==nSide &&
m_nboard[x][y+4]==nSide ){
m_nVals[x][y ]+=m_nValuesSetting[9];
m_nVals[x][y+2]+=m_nValuesSetting[9];
}
if( m_nboard[x][y ]==nSide &&
m_nboard[x][y+1]==nSide &&
m_nboard[x][y+2]==FIVE_NULL &&
m_nboard[x][y+3]==nSide &&
m_nboard[x][y+4]==FIVE_NULL){
m_nVals[x][y+2]+=m_nValuesSetting[9];
m_nVals[x][y+4]+=m_nValuesSetting[9];
}
}
//_*_**500 --
for(y=0; y<FIVE_Y; y++)
for(x=0; x<FIVE_X-4; x++){
if( m_nboard[x ][y]==FIVE_NULL &&
m_nboard[x+1][y]==nSide &&
m_nboard[x+2][y]==FIVE_NULL &&
m_nboard[x+3][y]==nSide &&
m_nboard[x+4][y]==nSide ){
m_nVals[x ][y]+=m_nValuesSetting[9];
m_nVals[x+2][y]+=m_nValuesSetting[9];
}
if( m_nboard[x ][y]==nSide &&
m_nboard[x+1][y]==nSide &&
m_nboard[x+2][y]==FIVE_NULL &&
m_nboard[x+3][y]==nSide &&
m_nboard[x+4][y]==FIVE_NULL ){
m_nVals[x+2][y]+=m_nValuesSetting[9];
m_nVals[x+4][y]+=m_nValuesSetting[9];
}
}
//_*_**500 /
for(x=0; x<FIVE_X-4; x++)
for(y=4; y<FIVE_Y; y++){
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y-1]==nSide &&
m_nboard[x+2][y-2]==FIVE_NULL &&
m_nboard[x+3][y-3]==nSide &&
m_nboard[x+4][y-4]==nSide ){
m_nVals[x ][y ]+=m_nValuesSetting[9];
m_nVals[x+2][y-2]+=m_nValuesSetting[9];
}
if( m_nboard[x ][y ]==nSide &&
m_nboard[x+1][y-1]==nSide &&
m_nboard[x+2][y-2]==FIVE_NULL &&
m_nboard[x+3][y-3]==nSide &&
m_nboard[x+4][y-4]==FIVE_NULL ){
m_nVals[x+2][y-2]+=m_nValuesSetting[9];
m_nVals[x+4][y-4]+=m_nValuesSetting[9];
}
}
//_*_**500 \
for(x=0; x<FIVE_X-4; x++)
for(y=0; y<FIVE_Y-4; y++){
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y+1]==nSide &&
m_nboard[x+2][y+2]==FIVE_NULL &&
m_nboard[x+3][y+3]==nSide &&
m_nboard[x+4][y+4]==nSide ){
m_nVals[x ][y ]+=m_nValuesSetting[9];
m_nVals[x+2][y+2]+=m_nValuesSetting[9];
}
if( m_nboard[x ][y ]==nSide &&
m_nboard[x+1][y+1]==nSide &&
m_nboard[x+2][y+2]==FIVE_NULL &&
m_nboard[x+3][y+3]==nSide &&
m_nboard[x+4][y+4]==FIVE_NULL ){
m_nVals[x+2][y+2]+=m_nValuesSetting[9];
m_nVals[x+4][y+4]+=m_nValuesSetting[9];
}
}
}
void AI::Think07(char nSide)
{//@**@*1500 value10
int x,y;
//_**_*1500 |
for(x=0; x<FIVE_X; x++)
for(y=0; y<FIVE_Y-4; y++){
if( m_nboard[x][y ]==FIVE_NULL &&
m_nboard[x][y+1]==nSide &&
m_nboard[x][y+2]==nSide &&
m_nboard[x][y+3]==FIVE_NULL &&
m_nboard[x][y+4]==nSide ){
m_nVals[x][y ]+=m_nValuesSetting[10];
m_nVals[x][y+3]+=m_nValuesSetting[10];
}
if( m_nboard[x][y ]==nSide &&
m_nboard[x][y+1]==FIVE_NULL &&
m_nboard[x][y+2]==nSide &&
m_nboard[x][y+3]==nSide &&
m_nboard[x][y+4]==FIVE_NULL ){
m_nVals[x][y+1]+=m_nValuesSetting[10];
m_nVals[x][y+4]+=m_nValuesSetting[10];
}
}
//_**_*1500 --
for(y=0; y<FIVE_Y; y++)
for(x=0; x<FIVE_X-4; x++){
if( m_nboard[x ][y]==FIVE_NULL &&
m_nboard[x+1][y]==nSide &&
m_nboard[x+2][y]==nSide &&
m_nboard[x+3][y]==FIVE_NULL &&
m_nboard[x+4][y]==nSide ){
m_nVals[x ][y]+=m_nValuesSetting[10];
m_nVals[x+3][y]+=m_nValuesSetting[10];
}
if( m_nboard[x ][y]==nSide &&
m_nboard[x+1][y]==FIVE_NULL &&
m_nboard[x+2][y]==nSide &&
m_nboard[x+3][y]==nSide &&
m_nboard[x+4][y]==FIVE_NULL ){
m_nVals[x+1][y]+=m_nValuesSetting[10];
m_nVals[x+4][y]+=m_nValuesSetting[10];
}
}
//_**_*1500 /
for(x=0; x<FIVE_X-4; x++)
for(y=4; y<FIVE_Y; y++){
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y-1]==nSide &&
m_nboard[x+2][y-2]==nSide &&
m_nboard[x+3][y-3]==FIVE_NULL &&
m_nboard[x+4][y-4]==nSide ){
m_nVals[x ][y ]+=m_nValuesSetting[10];
m_nVals[x+3][y-3]+=m_nValuesSetting[10];
}
if( m_nboard[x ][y ]==nSide &&
m_nboard[x+1][y-1]==FIVE_NULL &&
m_nboard[x+2][y-2]==nSide &&
m_nboard[x+3][y-3]==nSide &&
m_nboard[x+4][y-4]==FIVE_NULL ){
m_nVals[x+1][y-1]+=m_nValuesSetting[10];
m_nVals[x+4][y-4]+=m_nValuesSetting[10];
}
}
//_**_*1500 \
for(x=0; x<FIVE_X-4; x++)
for(y=0; y<FIVE_Y-4; y++){
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y+1]==nSide &&
m_nboard[x+2][y+2]==nSide &&
m_nboard[x+3][y+3]==FIVE_NULL &&
m_nboard[x+4][y+4]==nSide ){
m_nVals[x ][y ]+=m_nValuesSetting[10];
m_nVals[x+3][y+3]+=m_nValuesSetting[10];
}
if( m_nboard[x ][y ]==nSide &&
m_nboard[x+1][y+1]==FIVE_NULL &&
m_nboard[x+2][y+2]==nSide &&
m_nboard[x+3][y+3]==nSide &&
m_nboard[x+4][y+4]==FIVE_NULL ){
m_nVals[x+1][y+1]+=m_nValuesSetting[10];
m_nVals[x+4][y+4]+=m_nValuesSetting[10];
}
}
}
void AI::Think08(char nSide)
{//_**@_ 500 value11
//@**_@100 value12
int x,y;
//_**__500 100 |
for(x=0; x<FIVE_X; x++)
for(y=0; y<FIVE_Y-4; y++){
if( m_nboard[x][y ]==FIVE_NULL &&
m_nboard[x][y+1]==nSide &&
m_nboard[x][y+2]==nSide &&
m_nboard[x][y+3]==FIVE_NULL &&
m_nboard[x][y+4]==FIVE_NULL ){
m_nVals[x][y ]+=m_nValuesSetting[12];
m_nVals[x][y+3]+=m_nValuesSetting[11];
m_nVals[x][y+4]+=m_nValuesSetting[12];
}
if( m_nboard[x][y ]==FIVE_NULL &&
m_nboard[x][y+1]==FIVE_NULL &&
m_nboard[x][y+2]==nSide &&
m_nboard[x][y+3]==nSide &&
m_nboard[x][y+4]==FIVE_NULL ){
m_nVals[x][y ]+=m_nValuesSetting[12];
m_nVals[x][y+1]+=m_nValuesSetting[11];
m_nVals[x][y+4]+=m_nValuesSetting[12];
}
}
//_**__500 100 --
for(y=0; y<FIVE_Y; y++)
for(x=0; x<FIVE_X-4; x++){
if( m_nboard[x ][y]==FIVE_NULL &&
m_nboard[x+1][y]==nSide &&
m_nboard[x+2][y]==nSide &&
m_nboard[x+3][y]==FIVE_NULL &&
m_nboard[x+4][y]==FIVE_NULL ){
m_nVals[x ][y]+=m_nValuesSetting[12];
m_nVals[x+3][y]+=m_nValuesSetting[11];
m_nVals[x+4][y]+=m_nValuesSetting[12];
}
if( m_nboard[x ][y]==FIVE_NULL &&
m_nboard[x+1][y]==FIVE_NULL &&
m_nboard[x+2][y]==nSide &&
m_nboard[x+3][y]==nSide &&
m_nboard[x+4][y]==FIVE_NULL ){
m_nVals[x ][y]+=m_nValuesSetting[12];
m_nVals[x+1][y]+=m_nValuesSetting[11];
m_nVals[x+4][y]+=m_nValuesSetting[12];
}
}
//_**__500 100 /
for(x=0; x<FIVE_X-4; x++)
for(y=4; y<FIVE_Y; y++){
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y-1]==nSide &&
m_nboard[x+2][y-2]==nSide &&
m_nboard[x+3][y-3]==FIVE_NULL &&
m_nboard[x+4][y-4]==FIVE_NULL ){
m_nVals[x ][y ]+=m_nValuesSetting[12];
m_nVals[x+3][y-3]+=m_nValuesSetting[11];
m_nVals[x+4][y-4]+=m_nValuesSetting[12];
}
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y-1]==FIVE_NULL &&
m_nboard[x+2][y-2]==nSide &&
m_nboard[x+3][y-3]==nSide &&
m_nboard[x+4][y-4]==FIVE_NULL ){
m_nVals[x ][y ]+=m_nValuesSetting[12];
m_nVals[x+1][y-1]+=m_nValuesSetting[11];
m_nVals[x+4][y-4]+=m_nValuesSetting[12];
}
}
//_**__500 100 \
for(x=0; x<FIVE_X-4; x++)
for(y=0; y<FIVE_Y-4; y++){
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y+1]==nSide &&
m_nboard[x+2][y+2]==nSide &&
m_nboard[x+3][y+3]==FIVE_NULL &&
m_nboard[x+4][y+4]==FIVE_NULL ){
m_nVals[x ][y ]+=m_nValuesSetting[12];
m_nVals[x+3][y+3]+=m_nValuesSetting[11];
m_nVals[x+4][y+4]+=m_nValuesSetting[12];
}
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y+1]==FIVE_NULL &&
m_nboard[x+2][y+2]==nSide &&
m_nboard[x+3][y+3]==nSide &&
m_nboard[x+4][y+4]==FIVE_NULL ){
m_nVals[x ][y ]+=m_nValuesSetting[12];
m_nVals[x+1][y+1]+=m_nValuesSetting[11];
m_nVals[x+4][y+4]+=m_nValuesSetting[12];
}
}
}
void AI::Think09(char nSide)
{//__@**_5000 value13
int x,y;
//_@***_5000 |
for(x=0; x<FIVE_X; x++)
for(y=0; y<FIVE_Y-5; y++){
if( m_nboard[x][y ]==FIVE_NULL &&
m_nboard[x][y+1]==FIVE_NULL &&
m_nboard[x][y+2]==nSide &&
m_nboard[x][y+3]==nSide &&
m_nboard[x][y+4]==nSide &&
m_nboard[x][y+5]==FIVE_NULL)
m_nVals[x][y+1]+=m_nValuesSetting[13];
if( m_nboard[x][y ]==FIVE_NULL &&
m_nboard[x][y+1]==nSide &&
m_nboard[x][y+2]==nSide &&
m_nboard[x][y+3]==nSide &&
m_nboard[x][y+4]==FIVE_NULL &&
m_nboard[x][y+5]==FIVE_NULL)
m_nVals[x][y+4]+=m_nValuesSetting[13];
}
//__***_ 5000 --
for(y=0; y<FIVE_Y; y++)
for(x=0; x<FIVE_X-5; x++){
if( m_nboard[x ][y]==FIVE_NULL &&
m_nboard[x+1][y]==FIVE_NULL &&
m_nboard[x+2][y]==nSide &&
m_nboard[x+3][y]==nSide &&
m_nboard[x+4][y]==nSide &&
m_nboard[x+5][y]==FIVE_NULL )
m_nVals[x+1][y]+=m_nValuesSetting[13];
if( m_nboard[x ][y]==FIVE_NULL &&
m_nboard[x+1][y]==nSide &&
m_nboard[x+2][y]==nSide &&
m_nboard[x+3][y]==nSide &&
m_nboard[x+4][y]==FIVE_NULL &&
m_nboard[x+5][y]==FIVE_NULL)
m_nVals[x+4][y]+=m_nValuesSetting[13];
}
//__***_ 5000 /
for(x=0; x<FIVE_X-5; x++)
for(y=5; y<FIVE_Y; y++){
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y-1]==FIVE_NULL &&
m_nboard[x+2][y-2]==nSide &&
m_nboard[x+3][y-3]==nSide &&
m_nboard[x+4][y-4]==nSide &&
m_nboard[x+5][y-5]==FIVE_NULL)
m_nVals[x+1][y-1]+=m_nValuesSetting[13];
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y-1]==nSide &&
m_nboard[x+2][y-2]==nSide &&
m_nboard[x+3][y-3]==nSide &&
m_nboard[x+4][y-4]==FIVE_NULL &&
m_nboard[x+5][y-5]==FIVE_NULL)
m_nVals[x+4][y-4]+=m_nValuesSetting[13];
}
//__***_ 5000 \
for(x=0; x<FIVE_X-5; x++)
for(y=0; y<FIVE_Y-5; y++){
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y+1]==FIVE_NULL &&
m_nboard[x+2][y+2]==nSide &&
m_nboard[x+3][y+3]==nSide &&
m_nboard[x+4][y+4]==nSide &&
m_nboard[x+5][y+5]==FIVE_NULL)
m_nVals[x+1][y+1]+=m_nValuesSetting[13];
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y+1]==nSide &&
m_nboard[x+2][y+2]==nSide &&
m_nboard[x+3][y+3]==nSide &&
m_nboard[x+4][y+4]==FIVE_NULL &&
m_nboard[x+5][y+5]==FIVE_NULL)
m_nVals[x+4][y+4]+=m_nValuesSetting[13];
}
}
void AI::Think10(char nSide)
{//_*@*_ 500 value14
// @*_*@ 100 value15
int x,y;
//_*@*_ 500 |
for(x=0; x<FIVE_X; x++)
for(y=0; y<FIVE_Y-4; y++){
if( m_nboard[x][y ]==FIVE_NULL &&
m_nboard[x][y+1]==nSide &&
m_nboard[x][y+2]==FIVE_NULL &&
m_nboard[x][y+3]==nSide &&
m_nboard[x][y+4]==FIVE_NULL){
m_nVals[x][y ]+=m_nValuesSetting[15];
m_nVals[x][y+2]+=m_nValuesSetting[14];
m_nVals[x][y+4]+=m_nValuesSetting[15];
}
}
//_*_*_ 500 --
for(y=0; y<FIVE_Y; y++)
for(x=0; x<FIVE_X-4; x++){
if( m_nboard[x ][y]==FIVE_NULL &&
m_nboard[x+1][y]==nSide &&
m_nboard[x+2][y]==FIVE_NULL &&
m_nboard[x+3][y]==nSide &&
m_nboard[x+4][y]==FIVE_NULL ){
m_nVals[x ][y]+=m_nValuesSetting[15];
m_nVals[x+2][y]+=m_nValuesSetting[14];
m_nVals[x+4][y]+=m_nValuesSetting[15];
}
}
//_*_*_ 500 /
for(x=0; x<FIVE_X-4; x++)
for(y=4; y<FIVE_Y; y++){
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y-1]==nSide &&
m_nboard[x+2][y-2]==FIVE_NULL &&
m_nboard[x+3][y-3]==nSide &&
m_nboard[x+4][y-4]==FIVE_NULL ){
m_nVals[x ][y ]+=m_nValuesSetting[15];
m_nVals[x+2][y-2]+=m_nValuesSetting[14];
m_nVals[x+4][y-4]+=m_nValuesSetting[15];
}
}
//_*_*_ 500 \
for(x=0; x<FIVE_X-4; x++)
for(y=0; y<FIVE_Y-4; y++){
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y+1]==nSide &&
m_nboard[x+2][y+2]==FIVE_NULL &&
m_nboard[x+3][y+3]==nSide &&
m_nboard[x+4][y+4]==FIVE_NULL ){
m_nVals[x ][y ]+=m_nValuesSetting[15];
m_nVals[x+2][y+2]+=m_nValuesSetting[14];
m_nVals[x+4][y+4]+=m_nValuesSetting[15];
}
}
}
void AI::Think11(char nSide)
{//@*@30 value16
int x,y;
// _*_ 30 |
for(x=0; x<FIVE_X; x++)
for(y=0; y<FIVE_Y-2; y++){
if( m_nboard[x][y ]==FIVE_NULL &&
m_nboard[x][y+1]==nSide &&
m_nboard[x][y+2]==FIVE_NULL ){
m_nVals[x][y ]+=m_nValuesSetting[16];
m_nVals[x][y+4]+=m_nValuesSetting[16];
}
}
// _*_ 30 --
for(x=0; x<FIVE_X-2; x++)
for(y=0; y<FIVE_Y; y++){
if( m_nboard[x ][y]==FIVE_NULL &&
m_nboard[x+1][y]==nSide &&
m_nboard[x+2][y]==FIVE_NULL){
m_nVals[x ][y]+=m_nValuesSetting[16];
m_nVals[x+2][y]+=m_nValuesSetting[16];
}
}
//_*_ 30 /
for(x=0; x<FIVE_X-2; x++)
for(y=2; y<FIVE_Y; y++){
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y-1]==nSide &&
m_nboard[x+2][y-2]==FIVE_NULL){
m_nVals[x ][y ]+=m_nValuesSetting[16];
m_nVals[x+2][y-2]+=m_nValuesSetting[16];
}
}
// \
//_*_ 30
for(x=0; x<FIVE_X-2; x++)
for(y=0; y<FIVE_Y-2; y++){
if( m_nboard[x ][y ]==FIVE_NULL &&
m_nboard[x+1][y+1]==nSide &&
m_nboard[x+2][y+2]==FIVE_NULL){
m_nVals[x ][y ]+=m_nValuesSetting[16];
m_nVals[x+2][y+2]+=m_nValuesSetting[16];
}
}
}
void AI::Think00(char nSide)
{// @* 6 value17
int x,y;
// _* 6
for(x=1; x<FIVE_X-1; x++)
for(y=1; y<FIVE_Y-1; y++){
if(m_nboard[x][y+1]==nSide )
m_nVals[x][y]+=m_nValuesSetting[17];
if(m_nboard[x][y-1]==nSide )
m_nVals[x][y]+=m_nValuesSetting[17];
if(m_nboard[x+1][y]==nSide )
m_nVals[x][y]+=m_nValuesSetting[17];
if(m_nboard[x-1][y]==nSide )
m_nVals[x][y]+=m_nValuesSetting[17];
}
}
void AI::SetValueSettings(int values[], int n)
{
for(int i=0; i<n; i++)
m_nValuesSetting[i]=values[i];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -