オセロな日々

オセロな日々・・・
メンバー
リーダー・・佐藤 嶺樹
プログラマー・・・田島 佑輔
エキストラ1・・・中島 健護
エキストラ2・・・嶋村 剛士
エキストラ3・・・山谷 悠
我々のオセロ作成は
慣れないプログラミング言語
Javaとの戦いとなった・・・
中島は
常に的確な指示でリーダーを
リードした
プログラマー田島は
連日の徹夜作業に追われ
た・・・
しまむら
みねき
さんや
次々と倒れゆく仲間たち
プログラミングの道のり
今回はjavaによる、オセロのプログラミングに挑
戦した。ただし、javaに関してはほぼ、未知の領域
なので、どこかからオセロのソースコードを取って
きて、それを改造することにした。と言う訳で、今
回は牧瀬 芳太郎さんのオセロのページ
(http://homepage3.nifty.com/ymakise/java/Othe
lloApplet/)からソースコードを頂いた。改造した
思考ルーチンはManyReversePlayerである。
最小・最大プログラム(抜粋、一部省略)
int minCount = 60, maxCount = -1, maxX = 0, maxY = 0;
int Empty = board.countPieces(OthelloBoard.EMPTY);
for (int y = 0; y < 8; y++)
for (int x = 0; x < 8; x++)
int count = board.countReversiblePieces(x, y, myColor);
if (Empty > 10)
if (0 < count)
if (count < minCount)
minCount = count;
maxX = x;
maxY = y;
if (Empty <= 10)
if (count > maxCount)
maxCount = count;
maxX = x;
maxY = y;
“隅っこでの枚数補正プログラム”追加後(抜粋、一部省
略)
int minCount = 1000, maxCount = -1, huka1 = 0, huka2 = 0,
maxX = 0, maxY = 0;
int Empty = board.countPieces(OthelloBoard.EMPTY);
for (int y = 0; y < 8; y++)
for (int x = 0; x < 8; x++)
int count = board.countReversiblePieces(x, y, myColor);
・・・次ページに続く
/*4隅を優先してとる*/
if (x == 0) {
if (y == 0){huka1=-100;}
}
if (x == 7) {
if (y == 0){huka1=-100;}
}
・・・省略
/*4隅の周辺は他がとれるならとらない*/
if (x == 1) {
if (y == 0){huka2=100;}
}
if (x == 0) {
if (y == 1){huka2=100;}
}
・・・省略
・・・次ページに続く
/*コマが55個以上置かれるまでその回で出来るだけ少なくとる*/
if (Empty > 10) {
if (0 < count) {
if (count + huka1 + huka2 <= minCount) {
minCount = count + huka1 + huka2;
maxX = x;
maxY = y;}}}
huka1 = 0;
huka2 = 0;
/*コマが55個以上置かれたときその回で出来るだけ多くとる*/
if (Empty <= 10) {
if (count > maxCount) {
maxCount = count;
maxX = x;
maxY = y; }}