[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 22:06 / Filesize : 112 KB / Number-of Response : 443
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語で素晴らしいオセロを作らないか?



1 名前:デフォルトの名無しさん mailto:sage [04/06/23 17:34]
素晴らしいものだぞ

267 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 10:04:41 ]
>>266
258ではないが検索しても見つからんぞ
URL教えて栗

268 名前:266 mailto:sage [2006/08/22(火) 23:55:19 ]
>>267
ゴメン、確かに見つからない。
漏れのディスクのバックアップ中からも見つからないからどこから入手したか判らないや。
#何度かディスクを飛ばしているから、ロストした可能性が高いと言えば高いのだが。

269 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 03:56:10 ]
使うとよさそうな技法のキーワード
・BitBoard
・MTD(f)
・Mobility
・パターン
・パリティ
・ブック
・Move Odering
・MPC
・WLD Solve

270 名前:デフォルトの名無しさん [2006/11/09(木) 02:43:45 ]
>>269
揚げ足取りじゃないけどMove Orderingね。

読んで参考になるソース
www.radagast.se/othello/zebra.html
othellogateway.com/ntest/Ntest/index.htm

271 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 22:38:02 ]
どなたかこちらで一緒にオセロiアプリを一緒に作りませんか?
pc8.2ch.net/test/read.cgi/tech/1165049332/
興味があれば是非。

272 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 23:03:33 ]
一緒にがかぶってた

273 名前:デフォルトの名無しさん mailto:age [2007/02/02(金) 20:59:24 ]
pc10.2ch.net/test/read.cgi/tech/1169413998/

274 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 01:20:51 ]
オセロ奥深杉wwwwwwwww
Thellの強、強+に勝てねーwwww

275 名前:デフォルトの名無しさん [2007/02/21(水) 22:23:05 ]
C++でつくってみますた。
開発環境はVC6。
ソース綺麗にするつもり無いです。

ここの
kasamatusan.sakura.ne.jp/
1MB
ichi76063.zip
zipパスは「mu」



276 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:33:14 ]
途中で打てなくなる事があるが。

277 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:35:14 ]
>>276
まじすか。打てる場所がなくなったんじゃなくて?

278 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:35:58 ]
ちなみにルールでは初期配置はこれで黒が先手。
○●
●○


279 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:37:05 ]
打てる場所はある。
盤上に打てる場所のマークもある。
しかし入力を受け付けないようだ。

280 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:40:35 ]
半角で x△y(△=半角スペース)の書式で入力しないとバグります。

281 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:40:59 ]
あれ?同じ進行を打ったら今度はちゃんと石が返った。

282 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 06:21:37 ]
自分もオセロプログラム作っててそこそこ強くなったから
ここで公開しようかなと思ったけどC言語じゃなかった。

283 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 12:35:16 ]
作ったプログラムを対戦させたらおもしろいかも(・∀・)

284 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 10:04:27 ]
保守

285 名前:デフォルトの名無しさん [2007/04/26(木) 18:26:26 ]
あげあげ



286 名前:デフォルトの名無しさん [2007/06/17(日) 15:10:35 ]
あげ

287 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 16:45:33 ]
素晴らしいをもう一度定義しなおすんだ

288 名前:デフォルトの名無しさん [2007/07/02(月) 00:46:08 ]
あげ

289 名前:デフォルトの名無しさん [2007/07/20(金) 20:24:53 ]
あげ

290 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:18:26 ]
239さんの再うpしてほしい

291 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 18:49:34 ]
239さんの再うpしてほしい

292 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 01:11:55 ]
誰かうpしてくれ

293 名前:デフォルトの名無しさん [2007/08/18(土) 15:00:33 ]
/

294 名前:デフォルトの名無しさん [2007/08/18(土) 17:16:41 ]
だれかうp

295 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 17:18:28 ]
もっと強いのうpしようか?



296 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 17:20:48 ]
wktk

297 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 17:28:16 ]
どぞー
radagast.se/othello/zebra.tar.gz
GCCやMinGWでコンパイルできる
VC++だと少し書き換えが必要
あとzlibが必要
動かすには↓に同梱されてるbook.binとcoeffs2.binが必要
radagast.se/othello/wz424.exe

298 名前:デフォルトの名無しさん [2007/08/19(日) 15:49:08 ]
コンパイル出来んぞー!
gccだけでなく、gmakeも必要じゃん。
しかも「dir.hが無い」って言われた。
ANSIやISO規格にそんなん無いだろ。
もしかしてWin?

ちゃんとしたPOSIX規格の環境でmake
通るようにしる!


299 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 09:13:43 ]
>>298
ビルド環境を書いたら?


300 名前:デフォルトの名無しさん [2007/09/17(月) 05:12:20 ]
誰か>>297を使えた人居る?

301 名前:デフォルトの名無しさん mailto:age [2007/09/17(月) 07:20:15 ]
www.freewebs.com/photoradio/?0/880143

302 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 20:59:44 ]
>>300
居る


303 名前:デフォルトの名無しさん [2007/09/18(火) 07:55:56 ]
どうだった?
強い?

304 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 12:54:09 ]
>>303
≒wzebra

305 名前:デフォルトの名無しさん [2007/09/30(日) 09:43:07 ]
ほっしゅん



306 名前:デフォルトの名無しさん [2007/11/07(水) 19:48:53 ]
最強のプログラムは何?

307 名前:デフォルトの名無しさん [2007/11/18(日) 04:06:30 ]
>>306
総合力ではSaioだな。

上位の面子は2年程前(>>212)とほとんど変わってないな。

308 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 12:46:09 ]
1 すばらしいオセロとは最強のオセロなのか?
最強のオセロプログラムは人間では全く歯が立たないのでNO

309 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 20:12:18 ]
>>26
の改正版の再うpして頂けませんか?どなたか持っていませんかね

310 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 15:49:18 ]
お前らがうpしてくれないからオレが最初から作ってみるから協力するんだぜ

311 名前:デフォルトの名無しさん [2007/11/27(火) 16:38:34 ]
>>310
すまんね 俺も>>26は持ってないんだ
協力するよ

312 名前:デフォルトの名無しさん [2007/11/27(火) 16:58:39 ]
どうせなら64bitCPU最適化版を作らないか
64bit×2のbit boardで

313 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 05:32:01 ]
>>312
64bitのbit boardなら既にMMXで実現されてないか?

314 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 10:20:45 ]
だとしたらそれが何か?

315 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 15:16:01 ]
土日になったら作り始めるから、おまいら頼みますよ。
入門書卒業の専門情報処理科だから綺麗な物は作れないけど



316 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 15:25:00 ]
>>315
最低でも人間の世界チャンピオン以上を目指すなら協力するよ

317 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 15:57:12 ]
>>315
おー、頑張れ。

318 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 16:08:03 ]
>>315
老若男女誰でも楽しめる、ほのぼのとしたオセロを作り上げてほしい

319 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:24:55 ]
>>316
頑張ります。中級者レベルになってみせますので僕に力を
>>317
はい
>>318
最強と最弱のLv設定を出来るようにしてみたいですね
とりあえずは先手は決まってる状態から作ってみて完成出来たら
それぞれ機能を追加して行くというのが理想です。

やってみたら難しくネット上のソース読んでるだけで一日が終わってる・・・
>>26
┏━┯━┯━┯━┯━┯━┯━┯━┓
1┃  │  │  │  │  │  │  │  ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
2┃  │  │  │  │  │  │  │  ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
3┃  │  │  │  │  │  │  │  ┃

これ表示したかったけれど、盤の操作する関数が難しくなりそうなので
オレにはLvが高すぎる気がしてきた

320 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 09:03:54 ]
>>319
難しくはならないよ
まず長さ91もしくは100のint配列を用意して各マスの状態は空き:0、黒:1、白:2、壁:3で表す
この配列の表す盤面を画面にプリントする関数を作れ

321 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:32:47 ]
>>320
少しづつ出来てきたのでそれをうpするので、応用すれば表示出きるかYES/NOで
暇なときでいいですので答えて頂けませんか。
引き続き勉強行ってきます。

レス有難うございます

322 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:44:39 ]
ほい
がんばれ

323 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 02:59:21 ]
な、、何か・・・何か>>26と違うんだ・・・

すばらしいオセロの表示
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5387.txt

324 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 04:35:27 ]
そりゃ違うだろ

for(x=1; x < 9; x++){
state = getStone(pBoard,x,y);
switch (state) {
case NONE: stone = '.';break;
case BLACK: stone = 'B';break;
case WHITE: stone = 'W';break;
default: stone = 'E';
}
printf("%c",stone);
printf(" │");
}


for(x=1; x < 9; x++){
state = getStone(pBoard,x,y);
switch (state) {
case NONE: printf(" "); break;
case BLACK: printf("●");break;
case WHITE: printf("○");break;
default: printf("変");
}
printf(" │");
}

325 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 08:15:41 ]
>>324
盤の表示だけは完成しました。あとは動きそうかな?程度に完成したあと
AI等実装していってみます。レス有難うございました。



326 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 10:34:47 ]
盤は壁無しでやったのか
壁を省いた理由は何かあるの?

327 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 10:39:01 ]
initBoardとgetStoneもちょっとおかしいな

328 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 12:33:39 ]
>>326
気になって調べたのですが、壁があると着手状態のなんたらがやりやすい
みたいなのがあったので壁作る事にしました。

>>327
確認できた限りでは初期化の仕方間違ってる気がしたので壁ありで直しました
getStoneに関しては日本語の意味の間違いに気づき修正を

一通り出来たので次の工程にもう行くぜ!
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5389.txt

329 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 13:55:13 ]
>>328
5389.txtを見ての感想
Boardの配列[10][10]という宣言では添え字は[0〜9][0〜9]を指定します。
紙に書くと判り易いと思いますが、座標ズレが発生しています。

330 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 14:09:58 ]
>>329
ばーか。

>>328
折角壁のスペースを確保しているのに、壁を無視して配置している希ガス。

331 名前:329 mailto:sage [2007/12/03(月) 14:22:10 ]
>>328
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5390.txt

332 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 14:29:39 ]
>>328
ほらよ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5391.txt

333 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 15:57:19 ]
縦軸も横軸も数字になってるけど、普通は片方を
アルファベットにするもんだよ。

334 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 16:21:13 ]
BOARDSIZEをdefineしてるのに10は決め打ちという不思議

335 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 17:07:43 ]
>>329-331
こんなにミス、無駄がある現実・・・
配列を全部書くとイメージが凄いしやすいんですね。>>331のtxt頂きました有難うございます。
>>332のstaticとか縁の無い関数でしたが今少し使い道が分かった気がしました。
配列の初期化の方法でこういう方法がありましたかw参考になりました。
指摘コメントまで有難うございました。

>>333
列をアルファベットにするのが一般的っぽいので書き直す事にします
>>334
そこも直した方がいいみたいですね。ですがBOARDSIZEにしたら逆に見た目で
判断しずらくなったので長ったらしくなるまで少しの間数字にしておこうか迷う



336 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 17:55:31 ]
>>335
オセロの派生版を作る野望がホンの微かでもないなら、8の決め打ちでもいいんじゃね?
BOARDSIZEを7にしたらどうせ同じルールじゃできなくなるわけだし。

337 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:49:59 ]
>>335
最近は進んでるかい?

338 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 02:48:51 ]
すいません、PCが壊れてしまい修理してました…。やっと戻ってきて再開できそうです。
派生盤等は現状で自分には考えられませんので決め打ちにしてみます。
PC戻ってきてもOCN規制で2chに書き込めず携帯から2ch発見しましたw
やれなかった分追い込みます。

339 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 03:14:44 ]
プログラム初心者だが俺も作ってみようかな

340 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 03:18:28 ]
がんばれ
協力するよ

341 名前:339 mailto:othello [2007/12/15(土) 08:44:36 ]
332を参考にして交互に打てるのを作ってみました。
www.vipper.org/vip691346.txt.html

かなり時間かかった。
とりあえず寝よう。。。

342 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 09:33:49 ]
お疲れさん

343 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 10:24:16 ]
>>341
勝手にアドバイスさせてもらうと、
isPlaceable() 内のdx, dyを
dx[] = {-1, 0, 1, -1, 1, -1, 0, 1};
dy[] = {-1, -1, -1, 0, 0, 1, 1, 1};
とすると、ループで書ける(x+dx[i]*count の形で表せる)のですっきりするよ。
同様にplace() も簡潔に書けると思う。

344 名前:339 mailto:sage [2007/12/18(火) 00:58:47 ]
>>343
なんとかループに直すことができました。
あと、とりあえずランダムに打つAIをのっけてみました。

www.vipper.org/vip693247.txt.html

次は適当な評価関数を作ってMinMax法を実装してみようと思います。

345 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 01:03:45 ]
>>344
盤面はどうやって戻すつもり?



346 名前:339 mailto:sage [2007/12/18(火) 01:48:53 ]
>>345
差分(打った場所、引っくり返した場所)を取っておこうかと思うのですが
はたしてこのままでいけるのかどうか実はよくわかってないです・・・

347 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 14:21:20 ]
俺も大昔プログラミングの勉強する時にオセロを作ったよ。
作りこんでいくと遊び感覚でプログラミングの基本が勉強できるから良い課題だと思う。
中級を目指すなら、そのうち以下くらいは挑戦してみては? (今は意味不明かもしれんが・・・)

ポインタ→各種関数へのデータの引渡し
構造体→各種状態の保存
共用体→汎用関数からのステータス
ツリー構造→着手進行から高速サーチ可能なBook
再帰呼び出し→MinMax探索(αβ探索)
線形リスト→探索関数内での空マス保持リスト
ハッシュテーブル→探索局面の置換表
ソート→Move Ordering

F/W開発するハードエンジニアには、

ビット操作(含むMMX)→ビットボードによる高速化
同時実行率の高いコードの作成→処理の高速化
CPUキャッシュヒット率の高いコードの作成→処理の高速化

なんかも面白いと思う。

モンテカルロ法とか使って囲碁のプログラム書くのも良いけど、
基本の勉強にはオセロの方が色んな意味でわかり易い。

348 名前:デフォルトの名無しさん [2007/12/23(日) 14:31:25 ]
むりやり勉強とオセロを結びつけなくて良いよ

349 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 14:39:26 ]
ど素人乙

350 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 17:29:24 ]
モンテカルロ法はマルチスレッドの入門にいいかも

351 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 04:18:33 ]
ニューラルネットワーク→葉局面評価関数

352 名前:デフォルトの名無しさん [2008/01/16(水) 03:59:48 ]
オセロ作るのにスタックを用いてるソース等見るのですが
スタックのがいいのですかね?

353 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 04:06:50 ]
すいませんageてしまった

354 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 05:47:39 ]
>>352
スタックを用いるといいのは盤面をintか何かの配列で表現するとき。
bit boardで表現するときは盤面全体をコピーしたほうがいいからスタックは不要。

355 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 06:04:20 ]
>>354
配列で表現してみた方が自分にはイメージしやすいので、スタックを考慮して考えてみる事にします
レスありがとうございました!



356 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 02:47:48 ]
論理的にしらみつぶしで先読みするタイプのものではなく
実際に対戦してみて経験を積むようなプログラムって
どのように書けばよいのでしょうか

357 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 05:09:44 ]
>>356
強化学習が当てはまるけど
それぞれ独立した手法で通常は併用されるもの

358 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 05:40:58 ]
強化学習はの実装はこれがわかりやすい
www.vector.co.jp/soft/winnt/game/se415793.html

359 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 10:03:16 ]
宣伝乙

360 名前:デフォルトの名無しさん [2008/01/21(月) 01:25:32 ]
Cプログラマ必須テキスト!

mori.eco.to/


361 名前:デフォルトの名無しさん [2008/01/23(水) 00:02:55 ]
強化学習面白いな
確かHeraklesも使ってるんだっけ

362 名前:デフォルトの名無しさん [2008/01/27(日) 06:19:42 ]
AIを実装しようと挑戦中なのですが、MiniMax法について質問させて頂きます。

先手、後手ともに最善の手を取った場合を数手先読みし最善の場所を
決めるのがMiniMax法ですよね?
いざ実装してみようと試みたのですが最善手を評価する際のMAXとMIN
を以下のようにしたのですが、このようなやり方はダメな例ですか?

まずBord[10][10]というメインとなるボードと、それとは別に8*8の盤面にあらかじめ
数値を入れた盤面 (この数値の差分から数手先の最善手を決める) を用意しようと
考えています。

363 名前:362 mailto:sage [2008/01/27(日) 06:37:24 ]
すいません何言ってるか分からないですよね。とりあえず>>362の方法で作ってみます
その上でどうか尋ねてみます。

364 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:43:00 ]
MinMax法やばす・・・難しすぎるんだけど
とりあえずMiniMax法を作る上でのコツか何かありませんか

365 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 10:44:34 ]
NegMax の方が実装は楽だが,minmax が作れないんじゃ一緒だろうねぇ.肝の部分は再帰使って数行で書けるんだけど.
プログラム例が載ってる本でも買えば?



366 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 10:45:23 ]
int minmax (int min, int max)
{
for (i = 0; i < n; i++) {
move (i);
v = -minmax (-max, -min);
undo ();
if (v > max)
return v;
if (v > min)
min = v;
}
return min;
}

今30秒くらいで書いたけど基本はこれだけだと思う

367 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:30:57 ]
>>365
ネット上の読み物で出来たらいいんですが、買うことを考えるべきですかね・・・
>>366みてみるとundoとかいう機能を作りずらい作りになってしまっている予感です
ネット上の拾いものからその行程が出来ないか試してみます
参考例ありがとうございました






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<112KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef