オセロな日々・・・ メンバー リーダー・・佐藤 嶺樹 プログラマー・・・田島 佑輔 エキストラ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; }}
© Copyright 2025 ExpyDoc