2004年05月31日
Move.c
手を打ってから駒を反す関数です。
それに伴ってちょっとした処理もやっています。
元気は出てきたのですが、細かいコメントはもうちょっと先にさせてください。
#include "Othello.h"
extern char SearchList[1024];
short Move( Board *b )
{
char *p;
short i, j, k, pos, c;
i = b->p->move;
c = b->color;
b->color = c * (-1);
k = 0;
if( i < 0 ) return k;
p = SearchList;
pos = 0;
while( *p != End ) {
if( (i == *p) && (j=*((b->dir)+(*p))) ) {
if( ( pos >= 0 && pos < 72 && (j&0x01) ) ||
( pos >= 72 && pos < 144 && (j&0x02) ) ||
( pos >= 144 && pos < 216 && (j&0x04) ) ||
( pos >= 216 && pos < 288 && (j&0x08) ) ||
( pos >= 288 && pos < 357 && (j&0x10) ) ||
( pos >= 357 && pos < 426 && (j&0x20) ) ||
( pos >= 426 && pos < 495 && (j&0x40) ) ||
( pos >= 495 && pos < 565 && (j&0x80) ) ) {
p++;
pos++;
while( *((b->board)+(*p)) != c ) {
*((b->board)+(*p)) = c;
k++;
p++;
pos++;
}
}
}
p++;
pos++;
}
*((b->board) + i) = c;
return k;
}
それに伴ってちょっとした処理もやっています。
元気は出てきたのですが、細かいコメントはもうちょっと先にさせてください。
#include "Othello.h"
extern char SearchList[1024];
short Move( Board *b )
{
char *p;
short i, j, k, pos, c;
i = b->p->move;
c = b->color;
b->color = c * (-1);
k = 0;
if( i < 0 ) return k;
p = SearchList;
pos = 0;
while( *p != End ) {
if( (i == *p) && (j=*((b->dir)+(*p))) ) {
if( ( pos >= 0 && pos < 72 && (j&0x01) ) ||
( pos >= 72 && pos < 144 && (j&0x02) ) ||
( pos >= 144 && pos < 216 && (j&0x04) ) ||
( pos >= 216 && pos < 288 && (j&0x08) ) ||
( pos >= 288 && pos < 357 && (j&0x10) ) ||
( pos >= 357 && pos < 426 && (j&0x20) ) ||
( pos >= 426 && pos < 495 && (j&0x40) ) ||
( pos >= 495 && pos < 565 && (j&0x80) ) ) {
p++;
pos++;
while( *((b->board)+(*p)) != c ) {
*((b->board)+(*p)) = c;
k++;
p++;
pos++;
}
}
}
p++;
pos++;
}
*((b->board) + i) = c;
return k;
}
この記事へのコメント
1. Posted by click through the following website page 2014年06月04日 22:21
electronic hookah 智力遊戯:Move.c