2004年05月

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;
}

at 23:19|PermalinkComments(1)mixiチェック StaBu 

うふふ

うれしいなぁ!
このところ帰宅時間がどんどん早くなってきています。
明日は東京出張ですが・・・ちょっと余裕!
でも、今月末には嵐が来るかも・・・

at 23:13|PermalinkComments(0)mixiチェック 日記 

2004年05月30日

minmax.c

今日は検索の基本minmax.cです。
αβを実行する前に、minmaxで有望な手を検索の順番の前に出す為に使っています。


/***************************************
オセロミニマックス処理
*****************************************/

#include "Othello.h"

extern short depth;
extern short ManC;
extern Board temp;

short MinMax( short level, Board *b )
{
short m;
List *p;

if( level ) {
if( (m=Search(b)) == 0 ) { // End Check
temp = *b;
temp.color *= -1;
if( Search( &temp ) == 0 ) return SetMatch( b ); // End Process
}
}
if( level == depth ) return SetValue( b, m ); // Depth Check & Process
for(;;) {
*(b+1) = *b; // Move Create
Move( b+1 ); // Move Process
b->p->value = MinMax( level+1, b+1 ); // MinMax
b->p++; // Next Pass
if( b->p->move == End ) { // List End Check
p = b->p = b->list;
m = b->p->value;
if( b->color == ManC ) { // Min Process
for(;;) {
if( b->p->move == End ) break;
if( b->p->value < m ) {
m = b->p->value;
p = b->p;
}
b->p++;
}
}
else { // Max Process
for(;;) {
if( b->p->move == End ) break;
if( b->p->value > m ) {
m = b->p->value;
p = b->p;
}
b->p++;
}
}
break;
}
}
b->p = p;
return m; // Return MinMax Value
}

at 22:40|PermalinkComments(0)mixiチェック StaBu 

雨の予報なのに

024fd8b8.JPG

雨の予報を裏切り一日天気持ったみたいです。
シーツは乾くわお出かけまで出来るはで、ちょっと得した気分の一日でした。
公園をぶらぶらしていると、グライダーが飛んでいました。近くの川原から飛んでいるようでした。社会人のクラブがあるんでしょうか?!天気が曇ってきたのと、距離が結構あって上手く撮れなかったのが残念です。ピラタスB4の様な機影でした。僕が知っているのはASK-13とピラタスB4でした。
晩御飯は丸源で餃子セットにしました。
こちらの醤油は記憶のままでした。
休日の晩御飯はラーメンか回転寿司が定番となっています。
時間が出来たので違うお店も開拓したいですね。。。

at 22:26|PermalinkComments(0)mixiチェック 日記 

2004年05月29日

man.c

/***************************************
オセロ人間処理
*****************************************/

#include "othello.h"

extern short ch;

short Man(int pos, Board * b)
{
//TODO この下にコードを追加してください
List *p;

p = b->list;
if( p->move == End ) return p->move;
for(;;) {
if( p->move == End ) break;
if( p->move == pos ) {
b->p = p;
break;
}
p++;
}
if( p->move == End ) return -100;
SetStandardMove( ch, p->move );
return p->move;
}

at 16:49|PermalinkComments(0)mixiチェック StaBu