10
オオオオオオ・・・ メメメメ メメメメ メメ メメ ・・ メメメメメメ メメ メメ ・・・ メメメメメ メメ メメ ・・・ メメメメメ メメ メメ ・・・ メメメメメ メメ ・・・

オセロな日々・・・

Embed Size (px)

DESCRIPTION

オセロな日々・・・. メンバー リーダー・・佐藤 嶺樹 プログラマー・・・田島 佑輔 エキストラ1・・・中島 健護 エキストラ2・・・嶋村 剛士 エキストラ3・・・山谷 悠. 我々のオセロ作成は 慣れないプログラミング言語 Java との戦いとなった・・・. 中島は 常に的確な指示でリーダーを リードした. プログラマー田島は 連日の徹夜作業に追われた・・・. しまむら. みねき. さんや. 次々と倒れゆく仲間たち. プログラミングの道のり - PowerPoint PPT Presentation

Citation preview

Page 1: オセロな日々・・・

オセロな日々・・・

メンバーリーダー・・佐藤 嶺樹

プログラマー・・・田島 佑輔エキストラ1・・・中島 健護エキストラ2・・・嶋村 剛士エキストラ3・・・山谷 悠

Page 2: オセロな日々・・・

我々のオセロ作成は慣れないプログラミング言語Java との戦いとなった・・・

Page 3: オセロな日々・・・

中島は常に的確な指示でリーダーをリードした

Page 4: オセロな日々・・・

プログラマー田島は連日の徹夜作業に追われた・・・

Page 5: オセロな日々・・・

次々と倒れゆく仲間たち

みねきさんや

しまむら

Page 6: オセロな日々・・・

プログラミングの道のり

 今回は java による、オセロのプログラミングに挑戦した。ただし、 java に関してはほぼ、未知の領域なので、どこかからオセロのソースコードを取ってきて、それを改造することにした。と言う訳で、今回は牧瀬 芳太郎さんのオセロのページ( http://homepage3.nifty.com/ymakise/java/OthelloApplet/ )からソースコードを頂いた。改造した思考ルーチンは ManyReversePlayerである。

Page 7: オセロな日々・・・

最小・最大プログラム(抜粋、一部省略)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;

Page 8: オセロな日々・・・

“ 隅っこでの枚数補正プログラム”追加後(抜粋、一部省略)

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

・・・次ページに続く

Page 9: オセロな日々・・・

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

             ・・・省略・・・次ページに続く

Page 10: オセロな日々・・・

/* コマが 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; }}