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

このエントリーをはてなブックマークに追加
素晴らしいものだぞ

(●3○) エェー
3デフォルトの名無しさん:04/06/23 17:37
>>1は2進数だけで作成されたデータです。
まだ未完成なので放置してください。
中島&松島?
そういえばオセロチャンピオンがスパコンとやってまったく歯が立たなかった
ときの一言

オセロチャンピオン「神のような強さだった!」
6デフォルトの名無しさん:04/06/23 17:45
オセロは2進数で出来ています。
●=0
○=1
>>1 がつくったらいいんじゃないか?
>>1
オリバーパーカーとオーソンウェルズのどっちに近いのをつくるのかね?
>>5
枝刈りとかケチな事言わずに
全手検索くらいしそうだもんな。
終末まで予見するのは神かも試練。
10デフォルトの名無しさん:04/06/23 18:11
This is kusosure!!
●●○○●
●○○●●
●●○○●
○●○●○
●●○○●
>>6
まだ置いてないとこはどう表現するんだ?
11でも10101010でもすきなのをどうぞ。
>>6には1ビットとは書いてない。
オセロ板のデータ構造はどうするんだ。
状態は3つか。 白、黒、空。
>>14
もう一つ、盤面外というのもあった方がいいかも。
はみ出るの

     ('A`)(゚∀゚)
     (゚∀゚)('A`)

----------------------------

     ('A`)(゚∀゚)
     (゚∀゚)('A`)(゚∀゚)

----------------------------

     ('A`)(゚∀゚)
     ('A`)('A`)('A`)
>16
4444444444
4000000004
4000000004
4000000004
4000210004
4000120004
4000000004
4000000004
4000000004
4444444444

とかすると挟む判定がやりやすいのだ
>>18
その都度判断するのはめんどくさいんで、テーブルでやるのが良し。
15年ほど前、森田オセロのソースコードが書籍になったことがあったな。
http://pc.2ch.net/tech/kako/984/984182993.html

337 名前:トリッキーの1 投稿日:2001/08/21(火) 23:55

面白い題材が上がっていたので復帰します(笑) 7行オセロ、人間対無能AIです。

#include <stdio.h>
int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};void k(){if(m[p]==0)
for(i=0;i<8;i++){for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;if(c&&m[v]==t){a+=c;v=
p;if(d)do m[v]=t,v+=r[i];while(m[v]!=t);}}}char*h="・○●\n";int main(){for(i=
1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;for(;;a=d=0){for(p=9;p<82;++
p)k(),printf("%.2s",&h[m[p]*2]);if(a)for(d=a=s=p=8;a==8;k())t-2?(scanf("%d %d"
,&p,&i),p+=i*9):++p;else if(s)s=0,printf("pass");else break;t=3-t;}return 0;}

もはやインデントを揃えた位では元のコードが読めなくなってしまっていますが、
もしコメント付き変数名まとものバージョンを欲しい方がいれば上げます。

338 名前:トリッキーの1投稿日:2001/08/21(火) 23:58

人間の入力は、「X軸 Y軸」と半角で入力します。
置けない場所を指定した場合は再度入力してください。
X=55などの変な入力をチェックしていないので、即クラッシュします。
両者置けなくなったらプログラム終了です。自分で数えてください。
もっとも、このコンピュータは激弱ですので負けようがないとおもいますが(笑
22デフォルトの名無しさん:04/07/08 19:38
>>21
是非頂きたいものです。
#include<stdio.h>
int p,t,a,d,c,v,i,m[90]={ 0 },s,r[]={-10,-9,-8,-1,1,8,9,10};

void k()
{
if(m[p]==0)
for(i=0;i<8;i++)
{
for(c=0,v=p+r[i]; m[v]==3-t; v+=r[i])
c++;
if(c&&m[v]==t)
{
a+=c;
v=p;
if(d)
do
m[v]=t,v+=r[i];
while(m[v]!=t);
}
}
}

char *h="・○●\n";

int main()
{
for(i=1,m[41]=m[49]=2; i<10; m[i++*9]=3)
m[40]=m[50]=t=s=1;
for(;; a=d=0)
{
for(p=9; p<82; ++p)
k (),printf("%.2s",&h[m[p]*2]);
if(a)
for(d=a=s=p=8; a==8; k())
t-2? (scanf("%d %d",&p,&i),p+=i*9):++p;
else if(s)
s=0,printf("pass");
else
break;
t=3-t;
}
return 0;
}
26デフォルトの名無しさん:04/08/21 12:58
ttp://up.isp.2ch.net/up/79ab1d38086e.c
作ってみますた。
画面イメージはこんな感じ↓

   1  2  3  4  5  6  7  8
 ┏━┯━┯━┯━┯━┯━┯━┯━┓
1┃  │  │  │  │  │  │  │  ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
2┃  │  │  │  │  │  │  │  ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
3┃  │  │  │  │  │  │  │  ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
4┃  │  │  │○│●│  │  │  ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
5┃  │  │  │●│○│  │  │  ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
6┃  │  │  │  │  │  │  │  ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
7┃  │  │  │  │  │  │  │  ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
8┃  │  │  │  │  │  │  |  ┃
 ┗━┷━┷━┷━┷━┷━┷━┷━┛

最強ではないけど、結構強い。
初心者が勝てない、中級者が苦戦するレベル
27デフォルトの名無しさん:04/08/21 20:01
>>26
やってみたけど、漏れは勝てなかった。
そのプログラム、結構嫌な手を打ってくるな。
>>26
落とせない...
2928:04/08/21 20:35
落とせた!
3026:04/08/21 20:47
>>27
アルゴリズムは結構単純ですけど、オセロだとそれでも強くなるみたいです。

>>29
どうでしたか?
31デフォルトの名無しさん:04/08/21 20:52
オセロって言うな!!

オセロは商標。

ラッピングテープを指して「サランラップ」
配送屋を見ればどこの配送屋でも「宅急便」
というのと同じくらい恥ずかしいこと。
>>31
ハァ?なにいってんだ?オセロはオセロだろ
どうでもいいよそんなこと
プログラム公開する時には、リバーシにしといた方がいいかもな。
面倒を避けるために。
35デフォルトの名無しさん:04/08/21 21:07
>>31
だったら、紙を金属の芯で止める道具のことをホッチキスと呼ばずにステイプルと呼んで下さい。
オセロの発案者はあくまでオリジナルと言っている。
オセロはオセロであって、リバーシとは別物なのである。
と言ってみるテスト。
37デフォルトの名無しさん:04/08/21 21:32
>>26
全然勝てない。俺は結構強い方で、人とオセロをやって負けたことは無かったんだが。
38デフォルトの名無しさん:04/08/21 21:38
ttp://yam-jp.com/~nanashi/img/gogogo1289.c
オセロの名前を削除しておきました。
でもオセロってシェイクスピアの作品名を借用したもんでしょ?
そんなの商標にできるのか?
日本にシェークスピアが来ていなかったからつい・・・
ちなみに一般公開されてるオセロプログラムで最強のやつはコレだ。
ttp://radagast.se/othello/download.html
>>38
こんな短いソースで、こんだけ強いオセロが作れるんだ。
4329:04/08/22 00:31
>>30
負けた。少なく返すように置いていったら、全部ひっくり返された。
よくできていますね。コード短いし丁寧に作られてますね。
へー、強いんだ。読んでみようかな。
とりあえず大雑把な戦略を教えてくれない?>>26
全日本選手権入賞経験者の私が軽くレクチャーしよう。

オセロ脱初心者講座
@中盤までは全滅しない程度になるべく少なく石を取る。
A隅の斜め隣は危険(すぐに隅を取られる)なので無闇に打たない。
 隅の隣も実はかなり危険。
B露出してる場所(隣に石が少ないマス)に無闇に打たない。
C無闇に辺を取らない(辺を取るべきか取らないべきかの判断は
 上手くならないとつかないので最初はあまり取らないと覚えておく)。
多分バグ発見。
  1 2 3 4 5 6 7 8
 ┏━┯━┯━┯━┯━┯━┯━┯━┓
1┃ │ │ │ │ │ │ │ ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
2┃●│ │○│ │ │ │○│ ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
3┃●│○│○│ │○│○│ │ ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
4┃●│●│○│○│○│ │ │ ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
5┃●│●│●│○│○│ │ │ ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
6┃●│●│●│●│○│○│○│ ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
7┃●│●│●│●│★│ │ │ ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
8┃●│●│●│●│●│ │ │ ┃
 ┗━┷━┷━┷━┷━┷━┷━┷━┛
WHITE Passed.
>6 7
  1 2 3 4 5 6 7 8
 ┏━┯━┯━┯━┯━┯━┯━┯━┓
1┃ │ │ │ │ │ │ │ ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
2┃●│ │○│ │ │ │○│ ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
3┃●│●│○│ │○│○│ │ ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
4┃●│●│●│○│○│ │ │ ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
5┃●│●│●│●│○│ │ │ ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
6┃●│●│●│●│●│○│○│ ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
7┃●│●│●│●│●│★│ │ ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
8┃●│●│●│●│●│ │ │ ┃
 ┗━┷━┷━┷━┷━┷━┷━┷━┛
WHITE Passed.
>
ここで6 8に打たないでパスした。
打たなかったので(4 1)と打ったら(3 1) (2 1)と進んで
次は6 8に打ってきた。
1手目からの順
(3,5) (5,6) (6,3) (2,5) (6,6) (5,3) (4,6) (7,2)
(3,4) (4,7) (3,6) (2,7) (3,7) (2,8) (1,8) (7,6)
(3,8) (2,4) (1,4) (1,5) (3,3) (1,7) (1,6) (3,2)
(2,3) (1,3) (1,2) (2,6) (4,8) (5,8) (5,7) (6,7)
4938:04/08/22 02:15
>>43
ありがとうございます。

>>44
<前半>
・四つ角を最優先し、出来るだけ端を取る
・出来るだけ多く取る
<中盤〜終盤>
・出来るだけ多く取る
<最後の数手>
・全部読む

という感じです。

>>45
参考にさせて頂きます。

>>46-48
★を表示するための処理をするときに出てきたバグだと思うので、直しておきました。
ご指摘ありがとうございます。

訂正版
ttp://yam-jp.com/~nanashi/img/gogogo1291.c
>>49
相当弱いプログラムだと思われます。
51デフォルトの名無しさん:04/08/22 03:12
>>50
>>41の最強のプログラムの深さ2と、自作プログラムの深さ5を対戦させてみたら、
自作プログラムの方が負けましたけど、人間には中級車レベルの人になら勝てると思います。
上級者だったら弱く感じるかも知れませんけど・・・。

処理が重くて(効率が悪くて)あまり深く読めないのと、隅を優先させ過ぎたのが原因かも知れません。
深さを 60 に設定すれば、必ず勝てるプログラムになります。
その代わり、宇宙が終わるまでに計算が終わりませんけどw

>>45さんの戦略をプログラムすれば強くなると思います。
序盤は

・隅を狙う
・自分の打てる手数が多くなる手を打つ

だけでいいんじゃないのか?
隅の斜め隣は打たないってしたほうがいいと思う。
>>48のでもいきなり打ってるから。
>>52
序盤で隅を狙うのはよくない
>>53
打っても問題ない(打った方が良い)ケースもあるから、
ただ打たないっていうアルゴリズムは良くない。
序盤は思考しなくて定石通りに打てばいいと思うけど、
オセロの定石集とか、売ってあるのだろうか?
ネットで探せばいくつかデータはあったと思うけど。
著作権的に流用しちゃっていいものかどうかは不明。
58デフォルトの名無しさん:04/08/22 09:21
>>49
コードがコンパクトにまとまっていていいですね。
オレはそんなに思考系は詳しくないんで質問なんですが、
オセロでMin-Max法だと葉ノードまで読まないと、正しい評価値がでませんよね?
途中で読みを中断した場合(特に序盤)どう枝を評価しているんですか?

素晴らしいオセロっていうのはな、たまには勝たせてくれるオセロだよ?
お前んちのじーちゃんはむきになって勝とうとしないだろ?
それとおなじことだよ。
また、話についていけなくなった奴が荒らしにきたな...。
6145:04/08/22 11:18
序盤=データベースの範囲
終盤=完全読み

なので中盤がミソなわけだ。

とりあえず、偶数理論と開放度理論だけ取り込めば十分だと思う。
さらに盤の各マスにも点数をつけて、隅の点数を高く、
X(隅の斜め隣)を最も低く、C(隅の隣)を次に低く設定する。

偶数理論&開放度理論による点数加算が、マス固有の点数のマイナス分を上回っていれば
状況次第(Xに打たないと負けるような時)でXに打ち込む事もできるんじゃないかな。
作ったこと無いからわからんけど。
6249:04/08/22 19:40
>>58
・数が多い方が良い
・隅と端を多く取るのが良い
という評価方法です。

>>59
勝たせてあげるプログラムを作るのは誰でも出来る。
勝たせてあげ「ない」プログラムを作るのが大変。
勝たせてあげ「ない」プログラムが出来れば、手加減するプログラムを作ることも出来る。

>>61
とりあえず、解放度理論だけ実装してみました。
ttp://ame.dip.jp/upload/1093/171329.c
だいぶ強くなった。
64デフォルトの名無しさん:04/08/23 00:12
素晴らしーオセロってのは
やっぱ、ゲームしゃん、プレイヤーも勝つと楽しいよね

だから、初盤はコンピュータが有利なの
でも、最終的にはプレイヤーを勝たせてくれるような
そんな、自己満足なオセロがほしー
そんな接待オセロ、なにが楽しいのか。
66デフォルトの名無しさん:04/08/23 00:27
>>64
こんなんで良かったらどうぞ(一応自作だけど、評価用の配列はオセロのサイトから拝借)。
ttp://yam-jp.com/~nanashi/img/gogogo1294.c

>だから、初盤はコンピュータが有利なの
>でも、最終的にはプレイヤーを勝たせてくれるような
一応、この条件は満たしている。
但し、楽しいかどうかは分からない。
67デフォルトの名無しさん:04/08/23 00:30
>>65
初心者用には案外大切だと思います。
初めてやったときにボロ負けしたら激しく興味を無くすから、
最初くらいは勝たせてあげた方が良いのでは?
ただ強いだけのプログラムを作るよりも、手抜きをしていると分からないような接待オセロを作る方が
ずっと難しいような気がします。
>>67
ばれないように接待オセロと言っても、PCが弱いと、わざと負けてるって
バレバレじゃん。(もしくはプログラムが下手で本気で弱いか)

>初めてやったときにボロ負けしたら激しく興味を無くすから、
これは人によりけりだとおもう。
逆に、ちょっとコツをつかんだ程度で簡単に勝てるようになると
底の浅いゲームだと思って興味をなくすか。
69デフォルトの名無しさん:04/08/23 01:26
>>68
>ばれないように接待オセロと言っても、PCが弱いと、わざと負けてるって
>バレバレじゃん。(もしくはプログラムが下手で本気で弱いか)
だから、単に強いだけのプログラムを作るより難しいといったのですが・・・。
強いプログラムというのは、評価関数がしっかりしていないと出来ません。
(意図的に)手加減をするプログラムも、評価関数がしっかりしていないと出来ません。
強いプログラムの上に上手な手加減の仕方をプログラムしないと、接待プログラムは出来ないのでは?

>これは人によりけりだとおもう。
>逆に、ちょっとコツをつかんだ程度で簡単に勝てるようになると
>底の浅いゲームだと思って興味をなくすか。
それを見極めるのもプロだと思います。
「こいつなら最初に(ゲーム上で)ボコボコにした方が伸びる」
「こいつはボロ負けすると挫折するタイプだから手加減してやろう」
みたいな感じで。
70デフォルトの名無しさん:04/08/23 05:29
そこでニューラルネットですよ。
すばらしいオセロって、強い奴?それとも売れる奴?
72 ◆R/rLuLKeEI :04/08/23 08:18
相手とともに成長する奴
気づかないうちにオセロを移動させればいいんだよ。
>>69
>だから、単に強いだけのプログラムを作るより難しいといったのですが・・・。

なんか論点がずれてるな。
簡単か難しいかの話なんてしてないよ。

>それを見極めるのもプロだと思います。

だから、そういう論点じゃないでしょ。
>>71
将棋や囲碁だと、基本的に強いのが売れる。
>>69
オセロで接待されたい人っているの?
元々接待用ゲームだったらしいよ。
>>77
へー。
接待モードは、こんな感じで実装できそうだけど。

コンピュータが手番を渡されたら、まずその局面で探索。
評価値がマイナスだったら、最善手を打つ。
プラスが帰ってきたら、最善手だけでなく全ての手について点数を求める。
あらかじめ決めておいた最大値を点差が超えない範囲で、引き分けに近付く手を打つ。
最終的には僅差で負ける。

例えば最大下げ幅を8に設定してあって、最善手の点数が+16
他の候補手が+12,+10,+6,0,-4,-8だったら+10の手を選ぶというようにする。
相手が序盤からたくさん石取りまくるド素人だと、どんなに接待プレーしても
終盤調整で見え見えの手抜きしないといけなくなる。
>>71
エロい奴。
脱衣オセロとか。
>>81
技術の問題じゃない。
ヌードモデルやストリップの女性に金を払えば誰にでも可能。
アニメ絵でいいじゃん。
>>81
アタック 25 みたいに自分がとった分だけ見えるとか。(藁
85デフォルトの名無しさん:04/08/23 22:24
それにしても、絵の才能の問題であって、技術的な部分はごく僅か。

そんな事より>>81>>83よ、ちょいと聞いてくれよ。スレとあんま関係ないけどさ。
昔、パソコン研究会をやってたんです。パソコン研究会。
そしたらなんか人がめちゃくちゃいっぱいで座れないんです。
で、よく見たらなんか盛り上がってて、エロゲーとか作っているんです。
もうね、アホかと。馬鹿かと。
お前らな、エロゲー如きで普段使ってないパソコンを使ってんじゃねーよ、ボケが。
エロゲーだよ、エロゲー。
なんか親子連れとかもいるし。一家4人でエロゲーか。おめでてーな。
よーしパパSM頼んじゃうぞー、とか言ってるの。もう見てらんない。
お前らな、エロゲーやるからその席空けろと。
パソコンってのはな、もっと殺伐としてるべきなんだよ。
デスクトップの隣に座った奴といつ喧嘩が始まってもおかしくない、
刺すか刺されるか、そんな雰囲気がいいんじゃねーか。女子供は、すっこんでろ。
で、やっと座れたかと思ったら、隣の奴が、モロ出し無修正ロリゲーで、とか言ってるんです。
そこでまたぶち切れですよ。
あのな、ロリゲーなんてきょうび流行んねーんだよ。ボケが。
得意げな顔して何が、ロリゲーで、だ。
お前は本当にロリゲーを作りたいのかと問いたい。問い詰めたい。小1時間問い詰めたい。
お前、ロリ絵を見たいだけちゃうんかと。
パソコン通の俺から言わせてもらえば今、パソコン通の間での最新流行はやっぱり、
特盛り計算量、これだね。
特盛り計算量AIプログラミング。これが通の使い方。
特盛り計算量ってのはアルゴリズムが多めに入ってる。そん代わりエロが少なめ。これ。
で、それにAIプログラミング(人工知能)。これ最強。
しかしこれをやると次からひろゆきにマークされるという危険も伴う、諸刃の剣。
素人にはお薦め出来ない。
まあお前、>>81>>83は、エロゲーでも作ってなさいってこった。
>>85は昔のネタで一人で盛り上がり、面白いと勘違いするバカ
87デフォルトの名無しさん:04/08/23 23:34
オセロを教せーろ。
>>87

>>85なんかよりも格段に面白い
>>66
このオセロ2時間くらい楽しめたぞ
久々にオセロなんかしたら面白かった
ひまがあったらコードも見てみるよ
9066:04/08/24 00:40
>>89
ありがとうございますm(_ _)m
91デフォルトの名無しさん:04/08/24 02:17
C言語に関する雑談ならこちら

ラウンジでC言語
http://etc3.2ch.net/test/read.cgi/entrance/1093006298/l50
なんかコピペにクレームつけてるやつがいるな。
つまらなかったらスルーすればいいのに。
9385:04/08/24 12:11
>>92
ごめん、吉野家テンプレを自分で改造して作った
ここはAIという高尚なスレなんだから、雑談は他でやってくれ。
95デフォルトの名無しさん:04/08/24 14:33
>>94
とりあえず、>>62よりも強いプログラムをC言語で作って見せて下さい。

アップローダー
ttp://yam-jp.com/~nanashi/uploadzx.php
9694:04/08/24 14:43
よし、おとーさんがんばっちゃおうかなー。
>>62
白黒の初期配置が逆じゃない?
他のプログラムとか、サイトとか見てたら逆っぽいのだけれど。
手加減させたいなら、読みの深度を落とすとか評価値が一番じゃない箇所に
置くとかそれだけで済むことだ。
>>97
変えておきます。
100デフォルトの名無しさん:04/08/24 21:48
ttp://yam-jp.com/~nanashi/img/gogogo1299.c
アルファベータ法を使って読みの深さを上げました。
遅すぎるようだったら27行めの
#define DEPTH 11
のところを小さな値にして下さい。
アルファベータなんざ糞もいいところ。つまらん。本当につまらんアルゴリズム。
もっとセンセーショナルでドマラスティックなやつがいい。
何か弱くなってないか・・・。
>>101
αβ法よりも効率の良いプログラムとなると、いかに効率よく枝を落とすかという話になりますが、
それは殆ど人工知能に近いものになると思います。

ドマラスティックって、、、
 ~~~~
104デフォルトの名無しさん:04/09/14 17:44:32
αβ法より優れているものとなると Null Window Search になると思いますが、
それよりも優れた方法ってあるんでしょうか?
105デフォルトの名無しさん:04/09/15 21:43:22
>>104
ぬるぽ
106デフォルトの名無しさん:04/09/20 19:48:45
ガッ
107 ◆R/rLuLKeEI :04/09/20 23:57:34
>>104
Null Window Search といってもその基礎になる考え方はαβじゃなかったかな。
MTD(f)も確かαβだし。
108 ◆FIcNi4f8js :04/09/21 03:52:40
「負けオセロ」のプログラムって作った人います?
109デフォルトの名無しさん:04/09/21 05:50:25
アルファベータ法
110デフォルトの名無しさん:04/09/21 11:30:32
>>108
勝ちオセロの評価関数の符号を変えればすぐに出来ます。
111デフォルトの名無しさん:04/09/21 14:45:55
盤面が全て白になった局面から逆算していけば必勝手順が分かる
112デフォルトの名無しさん:04/09/24 14:21:58
WZebraって無茶苦茶強いし速いな。あんなの簡単に作れるんか?
113デフォルトの名無しさん:04/09/29 01:51:36
ループオセロを作ってみました。

ルール(機能)は、通常のオセロの他に、
・左端と右端はつながっている(DQやFFのワールドマップを想像してください)
・1つを除いて一列全て相手側の色の場合、その開いた一つに置くと一列取ることが出来る
・盤面をいつでも自在にシフト(ループ)させることが出来る。
というものがあります。

どなたか、ゲームとして面白いかどうか評価して頂けないでしょうか?
ソースコードは手元にあります。
114デフォルトの名無しさん:04/09/29 04:49:57
>>112
昔、IOSっていうオセロプログラム同士を自己学習させるために自動でひたすら
戦わせるサーバがあって、WZebraはそこで鍛えられたプログラムだから
一朝一夕のものじゃないよ。
115デフォルトの名無しさん:04/09/29 06:02:00
>>21のX軸Y軸入力というのが手間だったので入力部分を追加したインターフェース改造版です。

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>/*処理系によりconio.h→console.h*/
char*h="・○●☆\n";int p,t,a,d,c,v,i,e=10,s,o,z[255]={0},m[90]={0},r[]={-10,-
9,-8,-1,1,8,9,10};void k(){if(m[p]==0)for(i=0;i<8;i++){for(c=0,v=p+r[i];m[v]==
3-t;v+=r[i])c++;if(c&&m[v]==t){a+=c;v=p;if(d)do m[v]=t,v+=r[i];while(m[v]!=t);
}}}void b(){system("cls");for(p=9;p<82;++p)a?a:k(),printf("%.2s",&h[m[p]*2]);}
int main(){for(50[z]=80[z]=9,54[z]=77[z]=m[40]=m[50]=t=s=i=1,52[z]=75[z]=-1,56
[z]=72[z]=-9,m[41]=m[49]=2;i<e;m[i++*9]=4);for(;;a=d=0){b();if(a)for(d=a=s=p=8
;a==8;k())if(t-2){o=e[m];for(i=0,e[m]=3;i!=13;c=(i=_getch())[z]){if(c&&e+c>9&&
e+c<81)e[m]=o,o=(e+=((e+c)%9?c:c*2))[m],e[m]=3;b();}e[m]=o,i=e/9,p=e%9+i*9;}
else++p;else if(s)s=0,printf("pass");else break;t=3-t;}return 0;}

テンキーか矢印キーで石を置く位置を指定でき、リターンキーで決定します。
この入力方式でこれよりダウンサイジングはかなり高度になってくるかと思われ。
116 ◆R/rLuLKeEI :04/09/29 08:20:08
>>113:
トーラスリバーシかと思た。
Googleでざっと見たところ、類似のは見当たらなかった。
海外まで含めたらあるかも。
トーラス碁はあるのにな
117デフォルトの名無しさん:04/09/29 08:41:45
>>116
多分、それだと思います→トーラスリバーシ
ドラクエ世界は実はドーナツ状だという話(というかネタ的解釈)があるので。

ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1096414722_1/othello_text_loop.c
ソースをうpしました。
118デフォルトの名無しさん:04/09/29 17:11:44
  ,、_,、  
 ( 'ο') <ゥンポコー
119デフォルトの名無しさん:04/09/29 22:29:17
ttp://yam-jp.com/~nanashi/img/gogogo1386.rar

cygwin の Xサーバー使ってオセロのGUIだけ作ってみました。
AIはなくって人間VS人間ならできます。
アルゴリズムなら作りたいけど、他めんどくせーという方、どうぞ。
AIの組み込みはしやすいつくりになってる・・・と思う。
ダメだしもお願いしますw
120デフォルトの名無しさん:04/09/30 00:03:52
>>119
ざっと見た感じだと、

(1)升目ごとに構造体を作るのは非常に冗長
 マウス今どの升目を指しているか(あるいは盤外か)を調べるには、一字式で簡単に出来る。
 升目ごとに構造体があって、さらにそれを総当りで調べるのは冗長。

(2)8方向に処理する部分は、別に関数を作った方がコンパクト
 例えば、judge_setting_unit_dir という関数を作って、
 引数を指定するだけで値を得られるようにすれば、コードが短くなってバグも出にくくなり、
 あとで修正するときの手間が、(その部分だけ見れば)8分の1で済む。

(3)ヘッダ名と本体の名前は一致させた方が良い
 global.h で宣言されている関数定義が global.c に書かれていないのを見てちょっと拍子抜けした。
 大抵のプログラムでは、余程の事情がない限り、ヘッダファイルの名前と本体の名前が
 一致している。

正直言って、そのソースにAIを組み込むのはちょっと辛いものがある。
121 ◆R/rLuLKeEI :04/09/30 02:09:27
>>119:
まだダウンロードしてないんで分からんけど思考部を別プロセスにしてGUI部とプロセス間通信したらどう?
思考部とGUI部で共通の通信ルーチンや盤面の更新、合法手の生成はインタフェイスを公開してリンカで繋げるだけになってたら嬉しい。
プロトコルさえしっかりしてたら言語に縛られなくて、なおいい。

などと勝手なことを書いてますが、こんなことするにはかなりの手間がかかりますね。すんません。
他人の作ったのと自分のを特定フォルダに入れとくだけでGUI部に一切変更無しで色んな組合わせの対戦が出来るなぁって思ったり。
共通ルーチンはdllにしておいたり…妄想炸裂中
122デフォルトの名無しさん:04/10/02 10:31:25
>>121

思考ルーチンだけdllで作るってやつがあるよ。C#オンリー?だけど。
GUIを作る必要ないし、.NET Framework SDK(無料)だけでつくれるよ。

http://www.vector.co.jp/games/soft/win95/game/se301574.html
http://www.geocities.jp/team8bit/AIReversi/AIReversi_top.htm

思考ルーチン作成中なのでできたらupします。
だれか対戦する人いないかなー?
123 ◆FIcNi4f8js :04/10/02 12:01:39
>>113
上下左右はもちろん、斜め方向にもトーラスなはずだから、

ABCDEFGH
O+++++++ 1
+++++++O 2
++++++++ 3
+++++O++ 4
++++O+++ 5
+++O++++ 6
++O+++++ 7
+O++++++ 8

みたいなときに、G3にXを置くとこの絵のOの位置は全部Xにならないといけないよね。
124 ◆FIcNi4f8js :04/10/02 12:04:06
>>121
だからIOSがそれなんだってば。
125 ◆R/rLuLKeEI :04/10/02 12:50:06
>>124: ◆FIcNi4f8js
じゃあ、アルゴリズム実装の練習以外ではもう何も新たに作る必要ないやん。
126 ◆FIcNi4f8js :04/10/02 13:45:12
>>125 ◆R/rLuLKeEI
通常のルール通りでってことであれば、そうだね。
127 ◆R/rLuLKeEI :04/10/02 14:38:04
>>126: ◆FIcNi4f8js
通常のルールは分離されてないの?
n人非零和協力非確定非ターン制…までなんでもあり…スレ違いだな
128122:04/10/02 15:31:17
思考ルーチン作りました。対戦きぼんぬ!
http://www.geocities.jp/team8bit/AIReversi/ai_place.htm
EasyAI

AIリバーシ
リバーシ(オセロ)のフレームワーク。
UI等やルール等のプログラミングを必要なくして、
オセロの人工知能の作成ができます。作成した人工知能で
コンピュータ同士の対戦や人間との対戦ができます。
http://www.geocities.jp/team8bit/
129 ◆FIcNi4f8js :04/10/04 16:31:07
これの普通レベルってBoobyのレベル3くらい?
130122:04/10/05 21:08:01
だれか対戦してくれー!!
131 ◆FIcNi4f8js :04/10/05 21:08:51
したよ
132デフォルトの名無しさん:04/10/16 04:02:01
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│○│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
133デフォルトの名無しさん:04/10/16 04:03:39
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│○│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │●│┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
134デフォルトの名無しさん:04/10/16 04:08:11
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│○│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │●│○
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
135デフォルトの名無しさん:04/10/16 04:11:06
>>134
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│○│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤|(●),   、(●)、.:|
┃│  │  │  │  │  │  │  │●│○
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
136デフォルトの名無しさん:04/10/16 04:15:00
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│○│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃ ○
┃├─┼─┼─┼─┼─┼─┼─┼─┤|(○),   、(●)、.:|
┃│  │  │  │  │  │  │  │●│○
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
137デフォルトの名無しさん:04/10/16 04:22:20
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│●│●│●│●│●│●│●│●│┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│●│●│●│●│●│●│●│●│┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│●│●│●│●│●│●│●│●│┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│●│●│●│●│●│●│●│●│┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│●│●│●│●│●│●│●│●│┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│●│●│●│●│●│●│●│●│┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│●│●│●│●│●│●│●│●│┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│●│●│●│●│●│●│●│●│┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
138デフォルトの名無しさん:04/10/16 12:16:32
┏━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │○│●│  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │●│●│  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━┛
139デフォルトの名無しさん:04/10/16 14:18:50
>>138
┏━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┐┃
┃│  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │●│●│●│  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │●│●│  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━┛
140デフォルトの名無しさん:04/10/16 18:04:12
prologでサクっと作れない?
141デフォルトの名無しさん:04/10/16 18:13:40
>>140
作れば?
142デフォルトの名無しさん:04/10/18 09:10:29
┏━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┐┃
┃│○│  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │●│●│●│  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │●│●│  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━┛
143デフォルトの名無しさん:04/10/18 10:34:24
┏━━━━━━━━━━━━━┓
┃●─┬─┬─┬─┬─┬─┐┃
┃│●│  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │●│●│●│  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │●│●│  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━┛
144デフォルトの名無しさん:04/10/18 13:37:09
○━━━━━━━━━━━━━┓
┃●─┬─┬─┬─┬─┬─┐┃
┃│●│  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │●│●│●│  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │●│●│  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │●│  │  │┃
┃├─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━┛
145デフォルトの名無しさん:04/10/18 15:57:10

 ●━━━━━━━━━━━━━┓
 ┃●─┬─┬─┬─┬─┬─┐┃
 ┃│●│  │  │  │  │  │┃
 ┃├─┼─┼─┼─┼─┼─┤┃
 ┃│  │●│●│●│  │  │┃
 ┃├─┼─┼─┼─┼─┼─┤┃
 ┃│  │  │●│●│  │  │┃
 ┃├─┼─┼─┼─┼─┼─┤┃
 ┃│  │  │  │●│  │  │┃
 ┃├─┼─┼─┼─┼─┼─┤┃
 ┃│  │  │  │  │  │  │┃
 ┃└─┴─┴─┴─┴─┴─┘┃
 ┗━━━━━━━━━━━━━┛
146デフォルトの名無しさん:04/10/18 16:41:38
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
●│  │  │  │  │  │  │  │  │┃
┃●─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│●│  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │●│  │  │  │○│  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │●│●│○│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │○│  │●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
147デフォルトの名無しさん:04/10/18 17:28:35
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
●│  │  │  │  │  │  │  │  │┃
┃●─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│●│  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │●│  │○│  │○│  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │●│○│○│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │○│  │●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
148デフォルトの名無しさん:04/10/18 17:33:38
何が面白いんだ?
149デフォルトの名無しさん:04/10/18 17:52:29
ゲームのことはさっぱり知らないので、これから勉強して作ってみます。
150デフォルトの名無しさん:04/10/18 18:01:27
仮に100x100のオセロはつおいの方のは人間?
151デフォルトの名無しさん:04/10/18 18:48:26
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
●│  │  │  │  │  │  │  │  │┃
┃●─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│●│  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │●│  │○│  │○│  │  │┃
┃├─┼─●─┼─┼─┼─┼─┼─┤┃
┃│  │  │●│○│○│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │○│●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │○│  │●│  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│  │  │  │  │  │  │  │  │┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛
152デフォルトの名無しさん:04/10/18 18:57:44
(●)(●)(●)(○)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
 (●)(●)(●)(●)(●)(●)(●)(○)(●)(●)(●)(●)(○)(●)
(●)(●)(○)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
 (●)(●)(●)(●)(●)(●)   (●)(●)(●)(●)   (●)(●)
(●)(●)(●)(●)(●)(○)(●)(●)(●)(●)(○)(●)(●)(●)(●)
 (●)( )(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
 (●)(●)(●)(●)(●)(●)(●)(○)(●)(●)(●)(●)(●)(●)
(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
 (●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(○)(●)(●)
(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(○)
 (●)(●)(○)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
(●)(●)(●)(●)(●)(●)(●)(●)(●)(○)(●)(●)(●)(●)(●)
 (●)(●)(●)(●)(○)(●)(●)(●)(●)(●)(●)(●)(●)(●)
(●)(●)(●)(●)(●)(○)(●)(●)(●)(●)(●)(●)(○)(●)(●)
 (●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
(●)(●)(●)(●)(●)(●)(●)(●)   (●)(○)(●)(●)(●)
 (●)( )(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
153デフォルトの名無しさん:04/10/18 18:59:54
(●)(●)(●)(○)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
 (●)(●)(●)(●)(●)(●)(●)(○)(●)(●)(●)(●)(○)(●)
(●)(●)(○)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
 (●)(●)(●)(●)(●)(●)   (●)(●)(●)(●)   (●)(●)
(●)(●)(●)(●)(●)(○)(●)(●)(●)(●)(○)(●)(●)(●)(●)
 (●)( )(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
 (●)(●)(●)(●)(●)(●)(●)(○)(●)(●)(●)(●)(●)(●)
(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
 (●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(○)(●)(●)(★)
(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
 (●)(●)(○)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
(●)(●)(●)(●)(●)(●)(●)(●)(●)(○)(●)(●)(●)(●)(●)
 (●)(●)(●)(●)(○)(●)(●)(●)(●)(●)(●)(●)(●)(●)
(●)(●)(●)(●)(●)(○)(●)(●)(●)(●)(●)(●)(○)(●)(●)
 (●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
(●)(●)(●)(●)(●)(●)(●)(●)   (●)(○)(●)(●)(●)
 (●)( )(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)(●)
154デフォルトの名無しさん:04/10/18 21:08:56
消防のときにいとこの家にあそびにきてた香具師が、
4スミは黒ならひっくり返せるというルールを適応した。

そんなルール効いたこと無いんだが、どこのローカルルールなんだ?
155デフォルトの名無しさん:04/10/19 02:06:28
○●○○○●○○
●○○○●○●○
○●●○●○●○
●○○○○●○○
●●●○●○●○
○●○●○●○●
●●●○○●●○
○●○○○○●○

○○○○○○○○
○○●●●●○○
○○○○○●○○
○○○○●○○○
○○○○●○○○
○○○○●○○○
○○○○●○○○
○○○●●○○○
156r:04/10/30 08:39:48
>>154
お前のいとこの住んでるところじゃね?
157デフォルトの名無しさん:04/11/07 21:31:53
158デフォルトの名無しさん:04/11/18 19:23:24
>>155
ここはオセロスレ。囲碁は囲碁の専用のスレをたててやってください。
159デフォルトの名無しさん:04/12/11 07:12:28
>>113
やってみたいのでもう一回ソースでいいのでアップしてくれませんか?
160デフォルトの名無しさん:04/12/27 19:23:42
>>157
自作プログラム改良の参考にしようと買ってみた。
添付プログラムと対戦させたら、20石以上差をつけて俺のが勝った。
K成→T大というエリートコースまっしぐらの人の書いた本が、
こんなレベルが低いなんて信じられない。
161デフォルトの名無しさん:04/12/27 19:31:51
>>130
EasyAI vs 俺の・・・7-57
俺の vs EasyAI・・・50-14

評価関数が良いけど探索が遅い、ってのよりは、
評価関数が悪くても探索が速いほうが、強いことが多い気がします。
162デフォルトの名無しさん:04/12/29 15:47:44
>>160
本ってのは、対象読者のレベルに合わせて書かれるものだ。
163122:05/01/07 23:35:44
つえーな。おい。
対戦見てみたいのでUpしてくれませんか。
164163, 122:05/01/07 23:37:25
すまん。
>>161
と書くのわすれたうえにあげてしまった。
165デフォルトの名無しさん:05/01/19 10:12:08
今頃追いついた。
>21をやってみた。
#getch()はcygwinで見つからなかったので。
○○○○○○○○
○●○○○○○○
○●○○○○○○
○●●○○○●○
○●●●○○●○
○○○○○○●○
●●●●●●●○
○○○○○○●○
単純な割りに、それなりに打ってくるから楽しい。
#逆ルールリバーシは前に作ったがn88basic@pc98だ。
166 :05/01/28 13:41:30
↓をみてオセロ作ったんですけどこれを左右上下つなげてトーラス状にするにはどうしたらいんでしょう?
ttp://www.geocities.co.jp/SiliconValley-Bay/4543/Osero/
167デフォルトの名無しさん:05/01/28 19:49:33
ABCDEFGH
O+++++++ 1
+++++++O 2
++++++++ 3
+++++O++ 4
++++O+++ 5
+++O++++ 6
++O+++++ 7
+O++++++ 8

みたいなときに、
G3にXを置くとこの絵のOの位置は
全部Xにならないといけないよね。
168デフォルトの名無しさん:05/02/19 16:43:49
8で割った余りを座標に使えばよい
169デフォルトの名無しさん:05/02/20 02:04:33
ところで、オセロの白と黒の配置って、何種類あるの?
170デフォルトの名無しさん:05/02/20 04:50:58
さあ。ルールに沿って計算してみたら?
生きている間に計算おわるかはわからないが。
171デフォルトの名無しさん:05/02/20 07:44:13
高々有限個だ
172デフォルトの名無しさん:05/02/26 15:26:11
とりあえず3の60乗以下だな。
173デフォルトの名無しさん:05/02/27 00:54:58
>>172
回転したパターンを省くと1/4になるよ。
でも最初の4駒も後から反転することを考えると ×2^4。
174デフォルトの名無しさん:05/02/27 01:00:12
対角線で反転させれば減らせそう
175デフォルトの名無しさん:05/03/05 02:34:09
でも、やっぱり焼け石に水
176デフォルトの名無しさん:05/03/13 01:25:00
だよねぇ
177デフォルトの名無しさん:2005/04/09(土) 15:16:01
java言語で少し作ってみたんだけどPEN4/2.59GHzのマシンで、
17−8万手/毎秒くらいしか読めない。
評価関数は駒数と打てる箇所の数しか調べてないのに。
やはりJAVAでは無理があるのか。。
178デフォルトの名無しさん:2005/04/11(月) 13:12:17
ゴセロ
179デフォルトの名無しさん:2005/05/04(水) 03:02:18
6行オセロに触発されて、5行オセロに挑戦したが、
5行半で力尽きた、やるせない思い出が…
180デフォルトの名無しさん:2005/05/18(水) 17:36:19
┏━━━━━━━━━━━━━━━━━┓
┃┌─┬─┬─┬─┬─┬─┬─┬─┐┃
┃│★│#│☆│  │  │☆│#│★│┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│#│#│  │  │  │  │#│#│┃
┃├─┼─┏━━━━━━━┓─┼─┤┃
┃│☆│  ┃☆│  │  │☆┃  │☆│┃
┃├─┼─┃─┼─┼─┼─┃─┼─┤┃
┃│  │  ┃  │■│■│  ┃  │  │┃
┃├─┼─┃─┼─┼─┼─┃─┼─┤┃
┃│  │  ┃  │■│■│  ┃  │  │┃
┃├─┼─┃─┼─┼─┼─┃─┼─┤┃
┃│☆│  ┃☆│  │  │☆┃  │☆│┃
┃├─┼─┗━━━━━━━┛─┼─┤┃
┃│#│#│  │  │  │  │#│#│┃
┃├─┼─┼─┼─┼─┼─┼─┼─┤┃
┃│★│#│☆│  │  │☆│#│★│┃
┃└─┴─┴─┴─┴─┴─┴─┴─┘┃
┗━━━━━━━━━━━━━━━━━┛

★>☆>無印>#の順に(優先的に置く、自分の色に変える)
181デフォルトの名無しさん:2005/05/18(水) 17:43:33
(あとは4分割した4×4の場所だけで相対的に総当りさせて計算させる程度でいいんじゃない?)←ここももうちょっと場当たり的じゃなく規則性をみいだせるかも
その後候補がいくつか挙がったら初めて自分の色をより多く増やせる場所を選ばせるとか
1822chに囲碁・オセロ板が出来ました:2005/05/21(土) 21:57:15
前は囲碁・将棋板の中で細々とやってたけど、板分割で正式にオセロ板が!
まだ人口が少なくあまり盛り上がってないので、みんな キテ━━━(゚∀゚)V━━━ !!

囲碁・オセロ
http://game9.2ch.net/gamestones/
オセロ 雑談・雑学・質問総合スレッド 第8局
http://game9.2ch.net/test/read.cgi/gamestones/1111765962/
183デフォルトの名無しさん:2005/07/01(金) 21:07:10
今月のCマガジンでリバーシ大会やってるぞ
184デフォルトの名無しさん:2005/07/03(日) 22:29:29
>>183
とりあえず作ってみた
暇な人誰か対戦しようよ
185デフォルトの名無しさん:2005/07/06(水) 18:21:43
>>183
ようやくdllが作れるよーになったトコ。
あと10日強で完成するんかなぁ・・・
186デフォルトの名無しさん:2005/07/06(水) 23:34:37
オセロ作成中なんだけど定石ってのは覚えさせた方が吉?
187デフォルトの名無しさん:2005/07/07(木) 08:42:54
>>186
うん、外部から読めるようにするとなお( ´・ω・`)
188デフォルトの名無しさん:2005/07/07(木) 19:18:11
>>186
いや、定石なんて「固定観念」にとらわれたプログラムじゃだめ。
人間でもそうだけど、前例にとらわれず自分で考えて考え抜くプログラムが結局強いんだよ。
189デフォルトの名無しさん:2005/07/08(金) 01:13:24
でもオセロは定石といえるものが圧倒的に強いよ
ド素人にもそれ>>180さえ尊守させれば、かなりなれた人間でもじゃんけん勝負で黒が勝つ程度になるくらい。
たまたま知らなかったのは仕方ないとして、プログラムで全てが解決するわけじゃないって事。
多少なりとも知識は必要なのだよ、ライブラリだと思えば素直に使えるだろう?
190デフォルトの名無しさん:2005/07/08(金) 01:14:38
× かなりなれた人間でも
○ かなりなれた人間相手でも

ちなみにかなりなれた人間というのはクラスで最強程度、プロはの思考ルーチンはおそらくそれを発展させたもの
191デフォルトの名無しさん:2005/07/08(金) 02:17:20
ふと思ったのだが、オセロで最短手数で終局する手順ってばどんなんだろう。
192デフォルトの名無しさん:2005/07/08(金) 07:27:06
>>191
自分で作ったプログラムに誤りがなければ、9手+パス2回で11手(?)だった。
f5,f4,c3,c6,c5,d6,f3,c4,c7,PASS,PASS
193デフォルトの名無しさん:2005/07/08(金) 10:39:05
素朴な疑問だけど、>180によると真ん中の4箇所の優先順位がないのはなんで?
#無印ってことなんかな?
194デフォルトの名無しさん:2005/07/08(金) 10:45:05
デフォルトで石(コマ)が置いてあるからだよ
石の上から石を強制的に置けるプログラムにしてしまった場合全てのバランスが変わっちゃうし
195デフォルトの名無しさん:2005/07/08(金) 10:58:08
>>194
「自分の色に変える」は?
196デフォルトの名無しさん:2005/07/08(金) 11:05:03
180です
>>180
うわのびてますね!
補足すると
太線の━の内側にいる場合:太線の外側の無印が#、#に関してはさらに絶対においてはいけない、■は無印 等

かき損ねた事もありました
実際オセロはあまりやった事がないいい加減な持論なのです
僕のレスを引用してくれた人が肯定してくれたのはうれしいのですが、あまりじしんがありません
197デフォルトの名無しさん:2005/07/08(金) 11:06:16
太線の━の内側にいる場合 ではなく 内側における場合 でした
198デフォルトの名無しさん:2005/07/08(金) 11:06:51
ジサクジエンぽい・・
199デフォルトの名無しさん:2005/07/08(金) 11:09:18
>>195
スマソ、馬鹿だ
200193=195:2005/07/08(金) 11:42:19
>>180
納得。ほぼ同意。

私の自論だと、
--
・枠内(>180の┏内)におけるときは外はほぼ無視
・コーナーは取られないように死守
・自分が取るときは罠に填まらないように注意(特に最終局面は駒数次第)
・エッジは諸刃の剣(エッジで取り合いは避けたい)
・エッジの内側は安全地帯
・自分が偏らないよう相手を分断したい(手詰まり防止)
--
てな感じなんですが、さてどうプログラムに反映させたもんか…
#と思いつつ十数年も放置しているのは内緒。
201デフォルトの名無しさん:2005/07/09(土) 05:45:30
むちゃくちゃ強いヤツだと、
簡単に、四隅取らせてくれるよ。でも勝てない。
四隅とっても意味なくされる。むしろ、わざと取らせているかのよう。
どういう評価法をつかってるんだろと思う
202デフォルトの名無しさん:2005/07/09(土) 06:14:53
その通り、わざと取らせている。

確か、壁際に4つ同じ並びになるのは全く構わないが
□□????□□
□□○○○○□□
――――――――
5つ並び、かつ、はみ出してない側の壁から2つめが同色となる形は愚形となる
□□???○□□
□○○○○○□□
――――――――
なぜなら、この形で右下を取ると、すぐに割り込まれて
下の壁側全部と共に、左下を取られてしまうから
□□???○□□ □□???○●□ □□???○○□ □□???○●□ □□????●□ 
□○○○○○□□ □○○○○○□□ □○○○○○□○ □○○○○○●○ ●●●●●●●○ 
―――――――― ―――――――― ―――――――― ―――――――― ―――――――― 

この形に名前が付いている程で、強い人の間では常識なはず。
だから、他に取る場所がなくなった時に、渋々壁の5つ目を取らせるように
□□●??○□□
□□○○○○□□
――――――――
この形を相手に作らせるようにしているはず。
評価法は知らんけどね。
203デフォルトの名無しさん:2005/07/09(土) 06:19:49
204193=195:2005/07/09(土) 09:10:19
>>202
そうそう、それ。
某オセロゲームにその手でよく嵌められて悔しいからこそのこの辺。
>・自分が取るときは罠に填まらないように注意(特に最終局面は駒数次第)
>・エッジは諸刃の剣(エッジで取り合いは避けたい)
うーむ、せめてそのリンク先のサイトくらいは読まないと強いオセロにならなさそうだなぁ。
205193=195:2005/07/09(土) 11:03:59
連続失礼。
>202のサイトの基礎のまとめを実装するだけで、そこそこ強い気がするので引用してみる。
--
隅をとることは重要
確定石を増やすことは重要
考え無しに X 打ちをしない
単独 C 打ちは危険
打てる箇所が多くなるようにする
自分の石が内側に固まるよう努める
--
1、4は簡単として、2、5がちょっと厄介か。3は曖昧だし、6となるとどう評価関数を作るか…
206デフォルトの名無しさん:2005/07/10(日) 01:38:42
どこかで読んだアイディアなんだが。
辺(というのかフチのところ)用の評価をする。
マス1つ1つの値を返すんじゃなくてマス8つの状態から1つの値を返すわけだ。
3の8乗だったらテーブル化も出来るだろう。
207デフォルトの名無しさん:2005/07/10(日) 11:33:44
打てる箇所が多くなるようにする
でやってみたら何故か弱かった

後半は多く取った方がいいのかな
208デフォルトの名無しさん:2005/07/24(日) 17:28:50
>>26のソース再うpきぼんぬ
209デフォルトの名無しさん:2005/08/01(月) 00:42:49 BE:4827124-##
ゼブラとかもう完璧な強さじゃん。
評価関数の精度も抜群で、実質的にはもう完全解析に近い。
今さら研究対象にはならんよなぁ。
210デフォルトの名無しさん:2005/08/29(月) 13:12:33
とりあえずBuroの論文でも読んだらいいんじゃない
実現は無理だろうけど大いに参考にはなるはず
211デフォルトの名無しさん:2005/08/29(月) 13:52:10
>>209
ハァ?
ゼブラなんて穴突けば楽勝なんだが。
212デフォルトの名無しさん:2005/08/31(水) 12:21:07
現在のところ世界で最も精度のよいオセロの評価関数は、
・Edax
・Saio
・Ntest
・Herakles
・Pirate
あたりだと思います。

ってmixiのコミュには書いてあった
213デフォルトの名無しさん:2005/08/31(水) 21:51:01
国産で最強ってBooby?
214デフォルトの名無しさん:2005/09/05(月) 20:13:19
>>26のが今行ったら落とせなくなってた、、。どなたかupキボン
215デフォルトの名無しさん:2005/09/09(金) 17:13:00
C言語の本を一冊半読んだ程度の入門者ですが、
試しにオセロゲーム作ってみました。

敵の思考は、単なる乱数なのでとことんアホですが
最低限、ルールを忠実に守るレベルに達しただけで満足してしまいました。
みなさん凄いですね
216デフォルトの名無しさん:2005/09/10(土) 03:11:26
一冊半読んでその内容だったら、やめてしまいなさい。
217デフォルトの名無しさん:2005/09/10(土) 04:44:30
>>216
ん? >>215さんは、「C言語の本」を1冊半読んだのであって、オセロの思考ルーチンや
ツリーの探索の方法については、まだまだ初心者以前なんじゃないの?

つまんない煽りはやめたほうがいい。
218デフォルトの名無しさん:2005/09/10(土) 05:13:05
Cの本1冊半ならそんなもんじゃない?
次はアルゴリズムの本にチャレンジ。
219216:2005/09/10(土) 12:52:14
気悪い思いさせてごめん。
220デフォルトの名無しさん:2005/10/13(木) 05:51:32
学習させたいのですが、よさげな棋譜(フリーなもの)を教えてください。
221デフォルトの名無しさん:2005/11/24(木) 16:47:07
IOS

Logisthello
222ハーピィ:2005/12/05(月) 02:44:10
E・∇・ヨノシ <222ゲット♫
223デフォルトの名無しさん:2005/12/06(火) 16:21:30
黒白協力しあって、64個全て同色にするような手順はあるか?
224デフォルトの名無しさん:2005/12/06(火) 20:44:22
いくらでもあるんじゃないの
普通に遊んでて真っ白だか真っ黒だかしたこと何回かあるけど
225デフォルトの名無しさん:2005/12/06(火) 20:56:13
64マス全部埋めて同色ってことだと思ふ
226223:2005/12/06(火) 21:05:33
うむ。確かにいくらでもあるね。例えば先手の黒が絶対に
白をとらないような戦略をとれば容易にできた。サンクス。
227デフォルトの名無しさん:2005/12/06(火) 21:35:15
>>225
それで
61個とかだともっと何回もある
228デフォルトの名無しさん:2005/12/11(日) 05:04:01
64-0 は限りなく可能
229デフォルトの名無しさん:2005/12/11(日) 05:04:32
230デフォルトの名無しさん:2005/12/13(火) 01:16:46
とりあえず、COMvsCOMで最も多くひっくり返せる
手を打つリバーシを作りたい。複数の手がある場合は適当に
選択。そこからだんだんと改良したい。
どんな感じでプログラムを組めばいいのか誰か解説頼む。
231デフォルトの名無しさん:2005/12/13(火) 01:44:48
そうそう、そんな感じ
232デフォルトの名無しさん:2005/12/13(火) 14:59:11
>>226
白を取れるときは取るのがルール。
取れなければそこで試合終了です代。
233デフォルトの名無しさん:2005/12/13(火) 18:58:23
>>232
黒が白を取れなくても試合終了にはならない。
両者がどこにも置けなくなった時点で試合終了。
234デフォルトの名無しさん:2005/12/13(火) 20:30:45
>>26>>38の再うpキボン
235デフォルトの名無しさん:2005/12/13(火) 20:54:35
236デフォルトの名無しさん:2005/12/15(木) 20:25:11
>>235
> ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1253.cpp
うほっいいソースコード…
盤面はこれを使わせてもらおう
237デフォルトの名無しさん:2006/02/05(日) 02:04:11
Zebraに勝てとは言わないけど、せめてThell程度は倒せるプログラムを書こうぜ
238デフォルトの名無しさん:2006/04/02(日) 23:01:11
>>230
プログラムは、Bookにでているような最善手には強い。
ちょっとはずしたところが弱い。
Bookからちょっとはずしたところで逆転して勝つというプログラムを作ればよい。
石差の評価関数が偶数でなく、奇数になるくらいのところ。
Zebraはかなりこの辺が弱い。

239デフォルトの名無しさん:2006/04/03(月) 22:59:59
http://www.uploda.org/uporg355486.zip.html
オセロ作ってみました。アルゴリズムは適当。
変なとこあったら指摘お願いします。
240デフォルトの名無しさん:2006/04/04(火) 17:51:42
>>239
流れた・・・
再うpおねがいします
241239:2006/04/04(火) 21:44:50
http://up.spawn.jp/file/up16065.zip

再うpしました。
242デフォルトの名無しさん:2006/04/13(木) 07:45:50
BOOK中心に作れば強いプログラムはできる。
ZEBRAなんかのBOOKは正確じゃないところがあり、もっといいBOOKを使用すれば強くなる。
243デフォルトの名無しさん:2006/04/15(土) 23:22:05
どうやったらそういう手の込んだものが作れるんですか?
自分も多少Cの知識がありますが、どこでどの関数を使ったり、なぜifだの
do whileだの使ったりするのかが分かりません
244デフォルトの名無しさん:2006/04/16(日) 01:14:08
正直、
>どこでどの関数を使ったり、なぜifだの do whileだの使ったりするのかが分かりません
のレベルでは
>自分も多少Cの知識がありますが、
こんなこと言うのは烏滸がましい。
245デフォルトの名無しさん:2006/05/13(土) 22:10:19
1ヶ月近くレスがないわけだが、まだ開発してる人は見ているのかな?
他のコミュニティもあるし今更2chでやることもないのか。
246デフォルトの名無しさん:2006/07/14(金) 12:57:01
全部未経験だがネット対戦できるオセロでも作るか
オセロの部分は他のソフトから持ってくるけど
247デフォルトの名無しさん:2006/07/15(土) 10:58:12

main thread ウィンドウの処理
port thread 接続待機スレッド
access thread 一時アクセス用スレッド
battle thread 対戦中に通信するスレッド

こんな感じでいいのかな?スレッドも初めて使うけどw

248デフォルトの名無しさん:2006/07/15(土) 13:10:51
オセロって関西だよね
パイレーツもかわいかったよね
249デフォルトの名無しさん:2006/07/18(火) 14:18:41
w
250デフォルトの名無しさん:2006/07/27(木) 14:40:00
x
251デフォルトの名無しさん:2006/08/06(日) 23:39:28
みんなすげー。当方しがない高専生でCは教科書終わったところなんだけど人対人で最低限ルールを守るくらいのしか作れない。みんな実務経験あるんですか?
252デフォルトの名無しさん:2006/08/07(月) 12:50:41
>>251
まあ、さすがに実務でオセロのエンジンを開発している人は
いないだろうけどね。っていうか、そんな仕事ないし。

> 人対人で最低限ルールを守るくらいのしか作れない

いやいや。それが一番大事な部分だよ。
プログラムが「ここはコマを次に打っていい場所」って
きちんと判断できないことには、ゲームが成立しないんだから。

打っていい場所を判別できるプログラムがあるなら、たとえ弱くても
人間相手に対戦できるプログラムを作るのは簡単だよね。極端な
話、盤の端から調べていって、最初に見つけた「コマを置いていい場所」
にコマを打つというプログラムでも、とにかくゲームにはなる。
もちろん、そんなんじゃまるで勝負にならないけど。

次の手としてどこを選ぶのがいいか? という点については、
ネットなり書籍なりで少しずつまねていけばいいよ。

>>157 で既出だけど、こんな本がある。

リバーシのアルゴリズム C++&Java対応
 ―「探索アルゴリズム」「評価関数」の設計と実装
http://www.amazon.co.jp/gp/product/4875934289
253デフォルトの名無しさん:2006/08/11(金) 23:39:58
>>251
経験無くても組めると思うけど
そんな、俺はしょぼい大学生
Cの講義と、C++の本でもある程度は組めるよ
でも、239氏のとか見てると感動する
254デフォルトの名無しさん:2006/08/20(日) 16:34:29


 ------------------------
 |リバーシ2ch   _□×|
 ------------------------
 |メニューバー     |
 ------------------------
 |           |
 |   ●○●     |
 |      ●    |
 |           |
 |           |
 |           |
 ------------------------
 | お前が弱いな(緑)  |
 | オマエモナー(赤)  |
 ------------------------
 | 送信するメッセージ |
 ------------------------
 |対戦中 あなたの番です |
 ------------------------

こんな感じのリバーシ作ろう思うんだけど
まだないよね?
255デフォルトの名無しさん:2006/08/20(日) 16:48:00
(緑)(赤)ってポケモンかよ
256デフォルトの名無しさん:2006/08/20(日) 17:03:52
239氏のやつを再うpしてはもらえまいか
257デフォルトの名無しさん:2006/08/20(日) 21:09:56
単純にCでプロンプト上で動くオセロはできたけど
>>254みたいなGUIなオセロ作るにゃ何がいるんだ?
258254:2006/08/21(月) 08:23:25
未完成だがこんな感じ

pass 2ch
http://japanese-truth.hp.infoseek.co.jp/cgi-bin/upload.cgi?mode=dl&file=1156116104

このオセロのソースは他からの流用ね
259254:2006/08/21(月) 08:28:45
今できるのはコンピューターとの対戦のみね(これもパクリだけど)

これからネットワーク部を作りたいんだけど
IPアドレスをなんかでやりとりしてそれを入力して対戦する感じに
仕様と思うんだけどどう?
260デフォルトの名無しさん:2006/08/21(月) 12:38:47
いいんでないの?
261260:2006/08/21(月) 12:39:50
お前 >>247 なの?
>>247のレスは馬鹿げてるからな!

262デフォルトの名無しさん:2006/08/21(月) 13:30:08
リバーシみんなオンラインとかいうのがあるけど
これとは違うの?
263jyo:2006/08/21(月) 13:47:30
誰が教えって下さい。お願い致します。
計算トレーニングプログラムを作成したいですが?
計算は、足し算、引き算、掛け算、割り算を選択する。
桁数は1桁、2桁をはじめに選択する。
計算式の数値はランダムで表示する。
計算式及び、答えを配列に保存し、終了後に全て計算式と答えを表示する。
問題は10問とする。
そのときの点数を表示する。
結果表示の時、一緒にかかった時間も表示する
264デフォルトの名無しさん:2006/08/21(月) 15:12:00
>>263
日本語でok
265258:2006/08/21(月) 15:34:49
で今迷ってるのは 掲示板でIPアドレスをやり取りして戦うのか
サーバーを用意して自動で取得するのかどっちかなんだよな

リバーシみんなオンラインもサーバーを使ってるけど
それじゃp2pの意味がない。

無料サーバー使うわけにもいかないしなw
266デフォルトの名無しさん:2006/08/22(火) 02:42:58
daichatとか言う名前のp2pのチャットソフトがあるから見てみたら?
場合によっては、プロトコルをそのまま使えるかもよ。
267デフォルトの名無しさん:2006/08/22(火) 10:04:41
>>266
258ではないが検索しても見つからんぞ
URL教えて栗
268266:2006/08/22(火) 23:55:19
>>267
ゴメン、確かに見つからない。
漏れのディスクのバックアップ中からも見つからないからどこから入手したか判らないや。
#何度かディスクを飛ばしているから、ロストした可能性が高いと言えば高いのだが。
269デフォルトの名無しさん: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ね。

読んで参考になるソース
http://www.radagast.se/othello/zebra.html
http://othellogateway.com/ntest/Ntest/index.htm
271デフォルトの名無しさん:2006/12/15(金) 22:38:02
どなたかこちらで一緒にオセロiアプリを一緒に作りませんか?
http://pc8.2ch.net/test/read.cgi/tech/1165049332/
興味があれば是非。
272デフォルトの名無しさん:2006/12/15(金) 23:03:33
一緒にがかぶってた
273デフォルトの名無しさん:2007/02/02(金) 20:59:24
274デフォルトの名無しさん:2007/02/20(火) 01:20:51
オセロ奥深杉wwwwwwwww
Thellの強、強+に勝てねーwwww
275デフォルトの名無しさん:2007/02/21(水) 22:23:05
C++でつくってみますた。
開発環境はVC6。
ソース綺麗にするつもり無いです。

ここの
http://kasamatusan.sakura.ne.jp/
1MB
ichi76063.zip
zipパスは「mu」
276デフォルトの名無しさん:2007/02/21(水) 22:33:14
途中で打てなくなる事があるが。
277デフォルトの名無しさん:2007/02/21(水) 22:35:14
>>276
まじすか。打てる場所がなくなったんじゃなくて?
278デフォルトの名無しさん:2007/02/21(水) 22:35:58
ちなみにルールでは初期配置はこれで黒が先手。
○●
●○
279デフォルトの名無しさん:2007/02/21(水) 22:37:05
打てる場所はある。
盤上に打てる場所のマークもある。
しかし入力を受け付けないようだ。
280デフォルトの名無しさん:2007/02/21(水) 22:40:35
半角で x△y(△=半角スペース)の書式で入力しないとバグります。
281デフォルトの名無しさん:2007/02/21(水) 22:40:59
あれ?同じ進行を打ったら今度はちゃんと石が返った。
282デフォルトの名無しさん:2007/02/22(木) 06:21:37
自分もオセロプログラム作っててそこそこ強くなったから
ここで公開しようかなと思ったけどC言語じゃなかった。
283デフォルトの名無しさん:2007/02/25(日) 12:35:16
作ったプログラムを対戦させたらおもしろいかも(・∀・)
284デフォルトの名無しさん:2007/03/17(土) 10:04:27
保守
285デフォルトの名無しさん:2007/04/26(木) 18:26:26
あげあげ
286デフォルトの名無しさん:2007/06/17(日) 15:10:35
あげ
287デフォルトの名無しさん:2007/06/17(日) 16:45:33
素晴らしいをもう一度定義しなおすんだ
288デフォルトの名無しさん:2007/07/02(月) 00:46:08
あげ
289デフォルトの名無しさん:2007/07/20(金) 20:24:53
あげ
290デフォルトの名無しさん:2007/07/25(水) 19:18:26
239さんの再うpしてほしい
291名無しさん@そうだ選挙に行こう:2007/07/29(日) 18:49:34
239さんの再うpしてほしい
292デフォルトの名無しさん:2007/08/12(日) 01:11:55
誰かうpしてくれ
293デフォルトの名無しさん:2007/08/18(土) 15:00:33
/
294デフォルトの名無しさん:2007/08/18(土) 17:16:41
だれかうp
295デフォルトの名無しさん:2007/08/18(土) 17:18:28
もっと強いのうpしようか?
296デフォルトの名無しさん:2007/08/18(土) 17:20:48
wktk
297デフォルトの名無しさん:2007/08/18(土) 17:28:16
どぞー
http://radagast.se/othello/zebra.tar.gz
GCCやMinGWでコンパイルできる
VC++だと少し書き換えが必要
あとzlibが必要
動かすには↓に同梱されてるbook.binとcoeffs2.binが必要
http://radagast.se/othello/wz424.exe
298デフォルトの名無しさん:2007/08/19(日) 15:49:08
コンパイル出来んぞー!
gccだけでなく、gmakeも必要じゃん。
しかも「dir.hが無い」って言われた。
ANSIやISO規格にそんなん無いだろ。
もしかしてWin?

ちゃんとしたPOSIX規格の環境でmake
通るようにしる!
299デフォルトの名無しさん:2007/09/03(月) 09:13:43
>>298
ビルド環境を書いたら?
300デフォルトの名無しさん:2007/09/17(月) 05:12:20
誰か>>297を使えた人居る?
301デフォルトの名無しさん:2007/09/17(月) 07:20:15
302デフォルトの名無しさん:2007/09/17(月) 20:59:44
>>300
居る
303デフォルトの名無しさん:2007/09/18(火) 07:55:56
どうだった?
強い?
304デフォルトの名無しさん: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デフォルトの名無しさん:2007/11/19(月) 12:46:09
1 すばらしいオセロとは最強のオセロなのか?
最強のオセロプログラムは人間では全く歯が立たないのでNO
309デフォルトの名無しさん:2007/11/26(月) 20:12:18
>>26
の改正版の再うpして頂けませんか?どなたか持っていませんかね
310デフォルトの名無しさん: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デフォルトの名無しさん:2007/11/30(金) 05:32:01
>>312
64bitのbit boardなら既にMMXで実現されてないか?
314デフォルトの名無しさん:2007/11/30(金) 10:20:45
だとしたらそれが何か?
315デフォルトの名無しさん:2007/11/30(金) 15:16:01
土日になったら作り始めるから、おまいら頼みますよ。
入門書卒業の専門情報処理科だから綺麗な物は作れないけど
316デフォルトの名無しさん:2007/11/30(金) 15:25:00
>>315
最低でも人間の世界チャンピオン以上を目指すなら協力するよ
317デフォルトの名無しさん:2007/11/30(金) 15:57:12
>>315
おー、頑張れ。
318デフォルトの名無しさん:2007/11/30(金) 16:08:03
>>315
老若男女誰でも楽しめる、ほのぼのとしたオセロを作り上げてほしい
319デフォルトの名無しさん:2007/12/01(土) 19:24:55
>>316
頑張ります。中級者レベルになってみせますので僕に力を
>>317
はい
>>318
最強と最弱のLv設定を出来るようにしてみたいですね
とりあえずは先手は決まってる状態から作ってみて完成出来たら
それぞれ機能を追加して行くというのが理想です。

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

これ表示したかったけれど、盤の操作する関数が難しくなりそうなので
オレにはLvが高すぎる気がしてきた
320デフォルトの名無しさん:2007/12/02(日) 09:03:54
>>319
難しくはならないよ
まず長さ91もしくは100のint配列を用意して各マスの状態は空き:0、黒:1、白:2、壁:3で表す
この配列の表す盤面を画面にプリントする関数を作れ
321デフォルトの名無しさん:2007/12/02(日) 18:32:47
>>320
少しづつ出来てきたのでそれをうpするので、応用すれば表示出きるかYES/NOで
暇なときでいいですので答えて頂けませんか。
引き続き勉強行ってきます。

レス有難うございます
322デフォルトの名無しさん:2007/12/03(月) 00:44:39
ほい
がんばれ
323デフォルトの名無しさん:2007/12/03(月) 02:59:21
な、、何か・・・何か>>26と違うんだ・・・

すばらしいオセロの表示
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5387.txt
324デフォルトの名無しさん: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デフォルトの名無しさん:2007/12/03(月) 08:15:41
>>324
盤の表示だけは完成しました。あとは動きそうかな?程度に完成したあと
AI等実装していってみます。レス有難うございました。
326デフォルトの名無しさん:2007/12/03(月) 10:34:47
盤は壁無しでやったのか
壁を省いた理由は何かあるの?
327デフォルトの名無しさん:2007/12/03(月) 10:39:01
initBoardとgetStoneもちょっとおかしいな
328デフォルトの名無しさん:2007/12/03(月) 12:33:39
>>326
気になって調べたのですが、壁があると着手状態のなんたらがやりやすい
みたいなのがあったので壁作る事にしました。

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

一通り出来たので次の工程にもう行くぜ!
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5389.txt
329デフォルトの名無しさん:2007/12/03(月) 13:55:13
>>328
5389.txtを見ての感想
Boardの配列[10][10]という宣言では添え字は[0〜9][0〜9]を指定します。
紙に書くと判り易いと思いますが、座標ズレが発生しています。
330デフォルトの名無しさん:2007/12/03(月) 14:09:58
>>329
ばーか。

>>328
折角壁のスペースを確保しているのに、壁を無視して配置している希ガス。
331329:2007/12/03(月) 14:22:10
332デフォルトの名無しさん:2007/12/03(月) 14:29:39
333デフォルトの名無しさん:2007/12/03(月) 15:57:19
縦軸も横軸も数字になってるけど、普通は片方を
アルファベットにするもんだよ。
334デフォルトの名無しさん:2007/12/03(月) 16:21:13
BOARDSIZEをdefineしてるのに10は決め打ちという不思議
335デフォルトの名無しさん:2007/12/03(月) 17:07:43
>>329-331
こんなにミス、無駄がある現実・・・
配列を全部書くとイメージが凄いしやすいんですね。>>331のtxt頂きました有難うございます。
>>332のstaticとか縁の無い関数でしたが今少し使い道が分かった気がしました。
配列の初期化の方法でこういう方法がありましたかw参考になりました。
指摘コメントまで有難うございました。

>>333
列をアルファベットにするのが一般的っぽいので書き直す事にします
>>334
そこも直した方がいいみたいですね。ですがBOARDSIZEにしたら逆に見た目で
判断しずらくなったので長ったらしくなるまで少しの間数字にしておこうか迷う
336デフォルトの名無しさん:2007/12/03(月) 17:55:31
>>335
オセロの派生版を作る野望がホンの微かでもないなら、8の決め打ちでもいいんじゃね?
BOARDSIZEを7にしたらどうせ同じルールじゃできなくなるわけだし。
337デフォルトの名無しさん:2007/12/11(火) 14:49:59
>>335
最近は進んでるかい?
338デフォルトの名無しさん:2007/12/14(金) 02:48:51
すいません、PCが壊れてしまい修理してました…。やっと戻ってきて再開できそうです。
派生盤等は現状で自分には考えられませんので決め打ちにしてみます。
PC戻ってきてもOCN規制で2chに書き込めず携帯から2ch発見しましたw
やれなかった分追い込みます。
339デフォルトの名無しさん:2007/12/15(土) 03:14:44
プログラム初心者だが俺も作ってみようかな
340デフォルトの名無しさん:2007/12/15(土) 03:18:28
がんばれ
協力するよ
341339:2007/12/15(土) 08:44:36
332を参考にして交互に打てるのを作ってみました。
http://www.vipper.org/vip691346.txt.html

かなり時間かかった。
とりあえず寝よう。。。
342デフォルトの名無しさん:2007/12/15(土) 09:33:49
お疲れさん
343デフォルトの名無しさん: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() も簡潔に書けると思う。
344339:2007/12/18(火) 00:58:47
>>343
なんとかループに直すことができました。
あと、とりあえずランダムに打つAIをのっけてみました。

http://www.vipper.org/vip693247.txt.html

次は適当な評価関数を作ってMinMax法を実装してみようと思います。
345デフォルトの名無しさん:2007/12/18(火) 01:03:45
>>344
盤面はどうやって戻すつもり?
346339:2007/12/18(火) 01:48:53
>>345
差分(打った場所、引っくり返した場所)を取っておこうかと思うのですが
はたしてこのままでいけるのかどうか実はよくわかってないです・・・
347デフォルトの名無しさん:2007/12/23(日) 14:21:20
俺も大昔プログラミングの勉強する時にオセロを作ったよ。
作りこんでいくと遊び感覚でプログラミングの基本が勉強できるから良い課題だと思う。
中級を目指すなら、そのうち以下くらいは挑戦してみては? (今は意味不明かもしれんが・・・)

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

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

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

なんかも面白いと思う。

モンテカルロ法とか使って囲碁のプログラム書くのも良いけど、
基本の勉強にはオセロの方が色んな意味でわかり易い。
348デフォルトの名無しさん:2007/12/23(日) 14:31:25
むりやり勉強とオセロを結びつけなくて良いよ
349デフォルトの名無しさん:2007/12/23(日) 14:39:26
ど素人乙
350デフォルトの名無しさん:2007/12/23(日) 17:29:24
モンテカルロ法はマルチスレッドの入門にいいかも
351デフォルトの名無しさん:2007/12/24(月) 04:18:33
ニューラルネットワーク→葉局面評価関数
352デフォルトの名無しさん:2008/01/16(水) 03:59:48
オセロ作るのにスタックを用いてるソース等見るのですが
スタックのがいいのですかね?
353デフォルトの名無しさん:2008/01/16(水) 04:06:50
すいませんageてしまった
354デフォルトの名無しさん:2008/01/16(水) 05:47:39
>>352
スタックを用いるといいのは盤面をintか何かの配列で表現するとき。
bit boardで表現するときは盤面全体をコピーしたほうがいいからスタックは不要。
355デフォルトの名無しさん:2008/01/16(水) 06:04:20
>>354
配列で表現してみた方が自分にはイメージしやすいので、スタックを考慮して考えてみる事にします
レスありがとうございました!
356デフォルトの名無しさん:2008/01/20(日) 02:47:48
論理的にしらみつぶしで先読みするタイプのものではなく
実際に対戦してみて経験を積むようなプログラムって
どのように書けばよいのでしょうか
357デフォルトの名無しさん:2008/01/20(日) 05:09:44
>>356
強化学習が当てはまるけど
それぞれ独立した手法で通常は併用されるもの
358デフォルトの名無しさん:2008/01/20(日) 05:40:58
強化学習はの実装はこれがわかりやすい
http://www.vector.co.jp/soft/winnt/game/se415793.html
359デフォルトの名無しさん:2008/01/20(日) 10:03:16
宣伝乙
360デフォルトの名無しさん:2008/01/21(月) 01:25:32
Cプログラマ必須テキスト!

http://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の盤面にあらかじめ
数値を入れた盤面 (この数値の差分から数手先の最善手を決める) を用意しようと
考えています。
363362:2008/01/27(日) 06:37:24
すいません何言ってるか分からないですよね。とりあえず>>362の方法で作ってみます
その上でどうか尋ねてみます。
364デフォルトの名無しさん:2008/01/27(日) 09:43:00
MinMax法やばす・・・難しすぎるんだけど
とりあえずMiniMax法を作る上でのコツか何かありませんか
365デフォルトの名無しさん:2008/01/27(日) 10:44:34
NegMax の方が実装は楽だが,minmax が作れないんじゃ一緒だろうねぇ.肝の部分は再帰使って数行で書けるんだけど.
プログラム例が載ってる本でも買えば?
366デフォルトの名無しさん: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デフォルトの名無しさん:2008/01/27(日) 11:30:57
>>365
ネット上の読み物で出来たらいいんですが、買うことを考えるべきですかね・・・
>>366みてみるとundoとかいう機能を作りずらい作りになってしまっている予感です
ネット上の拾いものからその行程が出来ないか試してみます
参考例ありがとうございました
368デフォルトの名無しさん:2008/01/27(日) 15:40:51
書籍購入を躊躇うようなら、その程度ってこった。
369デフォルトの名無しさん:2008/01/27(日) 15:46:51
NegaMax、MinMaxくらいならネットの説明だけでも十分すぎる。
まじで。
370デフォルトの名無しさん:2008/01/27(日) 19:02:14
そんな脳を俺に下さい・・・

#define BOARD_SIZE 8
int Board[10][10];

自作関数1: ・x と y の座標を引数に貰い、Board[x][y] ( A1と打ったならば x = A(1)、y = 1 )
         について8方向を調べたあと置ける場所があるならばその場所を 返し、ひっくり返す。
        ・調べる方向は左上からy行x列方向に。
        ・手を指して次の盤面の状態にする
371デフォルトの名無しさん:2008/01/27(日) 19:03:38
先手黒から見た評価関数の一部の例
>>366での
for (i = 0; i < n; i++) {
move (i);
v = -minmax (-max, -min);
undo ();
の部分だと思います
─────────────────────────────────────────
/* ネット上の拾いものの解説 */
while( 打てる手がある ){

  @手を差して次の盤面を作る;

  Aval = minimax( 盤面, depth - 1 );       一手先を読む再帰。3手まで読んでみるつもり

  B盤面を1手戻す;
─────────────────────────────────────────
/* 上記を例に作ってみた */
blackturn( int **board , depth )           2次元配列のポインタと、3手読みたいので3を貰う
{
  int val;
  if( depth == 0 ) return 評価値(盤面);

  for( y=1; y<=BOARD_SIZE; y++ ) {    盤面全部を検索し置ける場所を8*8全部調べる
    for( x=1; x<=BOARD_SIZE; x++ ) {
@     if( 自作関数1 ) {          board[x][y]に石が置けるならひっくり返してみる
        ターンを次にする;
        色を変える;
A       val = blackturn( &board , depth - 1 );

B問題点  ここの処理がスタックを用いておらず出来ません。通常どのように行って居るのでしょうか?
        長々と見ずらく申し訳ないですが伝わって頂ければ幸いです
372デフォルトの名無しさん:2008/01/27(日) 19:56:38
石を返せることが分かってから返す際に石を置いた場所と返した場所の情報スタックに記録しておく
返した場所の代わりに方向とそれぞれの方向で返した数を記録してもいい
373デフォルトの名無しさん:2008/01/27(日) 20:26:17
>>372
ネット上からスタックの例を見て条件満たせるよう作ってみます。
レスどうもありがとうございます!
374デフォルトの名無しさん:2008/01/27(日) 20:26:47
もう世界一のプロが敗北してだいぶ経つんだし強さはもういらないだろ。
あとは人間との対局で統計データを取りながら
自動的にぎりぎりの強さで負けるような
ナチュラルな強さ調整機能をつけてくれ。
375デフォルトの名無しさん:2008/01/27(日) 20:28:11
黙れ門外漢
376デフォルトの名無しさん:2008/01/27(日) 22:15:23
>>375
お前のことか?
377デフォルトの名無しさん:2008/01/27(日) 23:05:05
>>374>>376だよ(笑)
378デフォルトの名無しさん:2008/01/27(日) 23:56:00
と門外漢が申しております
379デフォルトの名無しさん:2008/01/28(月) 00:25:11
お前らこういう言い合い好きなんか
380デフォルトの名無しさん:2008/01/28(月) 04:15:18
見るのも仕掛けるのも受けてたつのも好きだ
381デフォルトの名無しさん:2008/01/28(月) 04:33:45
まぁそれくらいしか能が無いしな
がんばれ
382デフォルトの名無しさん:2008/01/28(月) 06:23:57
石を返す処理って1方向ずつじゃないとダメっぽいんだな・・・
糞コード全開だぜ・・・
383デフォルトの名無しさん:2008/01/28(月) 06:53:01
>>372の続きでスタックの質問なのですが
石を返す”場所”をスタックに書き込む処理というのは

Board[x][y]というBoardがあったとしますよね。
f5という入力の場所の記録を行う場合には
f5という数値を入れるのでしょうか?
スタックには       

             ← スタックポイントがここ
方向
石の数
場所
方向
石の数
場所(F5)       1番最初のデータ

という風に入れればいいのでしょうか?
384デフォルトの名無しさん:2008/01/28(月) 10:14:42
>>383
これ無視して下さい。一から作り直すことにします
385デフォルトの名無しさん:2008/03/06(木) 22:37:11
>>380
可能です。
以上。
はい、次。
386デフォルトの名無しさん:2008/03/06(木) 23:05:43
誤爆か?
387デフォルトの名無しさん:2008/03/07(金) 08:51:01
>>386
最近の流行
388デフォルトの名無しさん:2008/03/07(金) 09:00:18
誤爆か?
389デフォルトの名無しさん:2008/03/23(日) 01:42:36
あげ
390デフォルトの名無しさん:2008/06/19(木) 01:43:37
再帰使わないで囲碁プログラムできないか?

391デフォルトの名無しさん:2008/06/19(木) 01:46:01
できるよ
392デフォルトの名無しさん:2008/06/20(金) 10:10:58
つーか,囲碁でも将棋でも再帰は使わない方が普通だと思うが
393デフォルトの名無しさん:2008/06/20(金) 10:14:20
スレ違いなんだから話を引き伸ばすなよ

394デフォルトの名無しさん:2008/07/01(火) 20:58:30
アルファベータ検索とか再帰だろ
395デフォルトの名無しさん:2008/07/02(水) 13:25:00
概念的にはそうだが,実際は自分で管理してループにする方が普通
全データローカルスタックに取るわけにも行かないし
396デフォルトの名無しさん:2008/07/02(水) 16:30:33
>>394
×検索
○探索
397デフォルトの名無しさん:2008/08/04(月) 03:03:57
評価関数のパラメータに使う盤面の特徴量ってどんなのがありますか?
パターン、パリティ、クアッドパリティ、モビリティ、ポテンシャルモビリティ、他にあれば教えてください。
思いつきでもかまいませんので。
398デフォルトの名無しさん:2008/08/05(火) 01:00:46
思いつきとしては、安定度みたいなのがあっても良い気がする。

αβ探索で深読みすると浅読みで良手だったのが悪手になったりするでしょ?
これって、その局面を進めていくとそういう局面を発見するからだって考えがちだけど、
単純に考えれば、浅読みの評価値が間違っているとも言える訳で。
評価関数が、局面の善悪を出力するのなら、1手読みで十分な筈でしょ?

俺としては、深読みが有効なのは評価値にはランダムな誤差があって、
何段ものミニマックス探索がその誤差をフィルタリングする結果、
安定度の高い(評価誤差が少ない)局面を選択できるからだと思ってるんだよね。

今はパターンの重みを決める時とかは、結果的にそのパターンが現れた時の
最終的な石差の平均値に収束するように決めてるでしょ?
でも、実際にはそのパターンが現れた時に勝つこともあれば負けることもある。
勝てる局面で下手をして負けるってこともあるけど、
実はそうではなくて、そのパターンを含む局面は本質的に不安定なのかもしれない。
と、考えてみると安定度というパラメータが見えてくる。

パターンAは50%は大負けで50%は大勝だとすると
普通に学習させるとこのパターンは勝ち負けに影響しないと判断されて重みは0になる。
10%は僅差負けで90%は大勝のパターンBと100%僅差勝ちのパターンCでは、
10%は僅差で負けるパターンBの重みの方が大きくなるのが普通だよね?
それで良いんだろうか?ってこと。
これらのパターンが選択可能な時、より確実に勝ちたかったら、パターンCを選びたいよね?

安定度っていうのはそういうこと。
今の評価関数にはこういうのが入っていないと思う。
399デフォルトの名無しさん:2008/08/07(木) 02:53:31
>>398
評価関数が正確なら1手読みで十分だけれど、

逆に、
局面が最後まで読めるのなら
評価関数は石数を数えるだけで良いと考えると

読みの深さを増やすほど強くなりそうなことがわかる

だから、評価関数を正確にすることだけではなく
計算速度が速い評価関数が使われてるんだ。

>今はパターンの重みを決める時とかは、結果的にそのパターンが現れた時の
>最終的な石差の平均値に収束するように決めてるでしょ?

評価にMinimaxが使われているのだから、
評価関数のスコアも平均値ではなくて、
自分、相手が共に評価関数の決める最善手を指したときのスコアに
近づくようになってると思う。

だから

>パターンAは50%は大負けで50%は大勝だとすると
>普通に学習させるとこのパターンは勝ち負けに影響しないと判断されて重みは0になる。
>10%は僅差負けで90%は大勝のパターンBと100%僅差勝ちのパターンCでは、
>10%は僅差で負けるパターンBの重みの方が大きくなるのが普通だよね?

こんな風に勝率で評価関数を決めていないと思うんだが。

もし、そのやり方に沿って決めるなら
Minimax法が使えなさそう。
400デフォルトの名無しさん:2008/08/08(金) 02:15:55
>>399
評価関数が局面から一定の値を導出するのであれば(極端な話、ハッシュ関数でも)
AIとしての強弱はともかくMinimax法は使える。
401デフォルトの名無しさん:2008/08/08(金) 20:50:29
>Minimax法は使える
はぁ?
402デフォルトの名無しさん:2008/08/08(金) 23:45:00
ひぃ?
403デフォルトの名無しさん:2008/08/09(土) 00:13:50
ふぅ。
404デフォルトの名無しさん:2008/08/09(土) 01:26:46
へぇ・・・
405デフォルトの名無しさん:2008/08/09(土) 02:06:45
hint : static evaluation function, heuristic evaluation function
406デフォルトの名無しさん:2008/08/09(土) 09:09:26
Minimaxを使う目的を分かってない人が混ざってるようだ
407デフォルトの名無しさん:2008/08/09(土) 13:31:15
雑魚が混ざってきたか
408デフォルトの名無しさん:2008/08/11(月) 02:16:50
409デフォルトの名無しさん:2008/08/11(月) 09:37:27
>勝つ可能性が一番高い動きを取り続けた。まるで機械のようだった

ワロタ
410デフォルトの名無しさん:2008/08/12(火) 12:20:09
ミニマックスとアルファベータの違いがわからん
>>366に枝狩りの処理を入れたらアルファベータ?

どうでもいいけど評価値得てないよ・・・ minとmaxをアホみたいに
引っくり返してるアホ関数だなそれはw
411デフォルトの名無しさん:2008/10/20(月) 02:17:59
age
412デフォルトの名無しさん:2008/12/04(木) 20:42:21
ほす
413デフォルトの名無しさん:2008/12/05(金) 12:29:18
読む->引き分けか勝ちが出る
優先順位に置く
完成
414デフォルトの名無しさん:2008/12/06(土) 16:57:36
>>374
>もう世界一のプロが敗北してだいぶ経つんだし強さはもういらないだろ。
勝ち切る手のDB出来ちゃったからな

>あとは人間との対局で統計データを取りながら
>自動的にぎりぎりの強さで負けるような
>ナチュラルな強さ調整機能をつけてくれ。
序盤20手:大負けしない手を打つ
中盤20手:引き分けか2手差で負けるくらいの手を打つ
終盤20手:全力で勝ちに行く

このくらいでナチュラルに強い打ち手になると思うけど
415デフォルトの名無しさん:2008/12/06(土) 16:58:56
2手差->2石差
すまんこ
416名無し:2008/12/25(木) 01:19:00
オセロ懐かしい
父親が森田オセロ(8bitパソコン)より強いヤツをめざして、ORや多次元尺度など色んな手法を試していたな。
417デフォルトの名無しさん:2008/12/26(金) 15:13:51
プログラム作成者の能力以上の強さにはならない件
418デフォルトの名無しさん:2008/12/26(金) 22:34:13
関係ない書き込みばっかで本題が全く進行してねぇw
419デフォルトの名無しさん:2008/12/30(火) 23:36:12
420デフォルトの名無しさん:2008/12/31(水) 01:16:31
>>419
NetBSD/MIPSだが、動かないぞ。
421デフォルトの名無しさん:2008/12/31(水) 01:35:47
ソースは無し?
422デフォルトの名無しさん:2008/12/31(水) 08:00:33
思考ルーチン以外のところは終わっているテンプレートオセロプログラムってあるの?
ないにしても、どういうテンプレートにしておけば組み込みやすいのだろうか?
データ構造とか、必要な関数とか、それらの関係性とか。
前に(学部でC++習ったときのプロジェクト)オセロ作ったことあるんだけど、
今見ると、この構成じゃ、思考ルーチンいれにくいなぁと思ったのであります。
423デフォルトの名無しさん:2008/12/31(水) 12:13:57
424デフォルトの名無しさん:2008/12/31(水) 12:42:09
>>417
技術的にはそうだけど実際の強さは自分より強い物が作れるだろ
第一技術的に高度な物が強くなるとは限らないし
425デフォルトの名無しさん:2008/12/31(水) 12:44:05
チェスのチャンピオンに勝ったプログラムだって
プログラマがチャンピオンより強かったわけじゃないしな。
426424:2008/12/31(水) 12:45:25
例え話をすると素数を出すプログラムを作った人がその素数をそこまで数え上げられるわけじゃないだろ?
そういうこと
427デフォルトの名無しさん:2008/12/31(水) 19:22:26
神の一手に一番近いのはプログラムかもしれないな
428デフォルトの名無しさん:2008/12/31(水) 22:56:49
何を今更
429デフォルトの名無しさん:2009/01/01(木) 00:34:42
Googleの社員の個人情報がググれるみたいなもんか
430デフォルトの名無しさん:2009/01/03(土) 20:27:48
>>422
あらかじめ独立化することを考えておかないと、修正は難しいだろうね
どうせなら思考部分を別プロセスにすると、プログラム同士で対戦とか
簡単に出来て面白そう
Windowsだとoverhead大きいかな
431デフォルトの名無しさん:2009/01/03(土) 21:08:14
最後の行関係ない
432デフォルトの名無しさん:2009/01/06(火) 15:41:18
>>422
チェスのChess Engine Communication Protocolみたいに規格を決めればいいんじゃねえの。
参照:http://www.tim-mann.org/xboard/engine-intf.html
433デフォルトの名無しさん:2009/01/06(火) 16:19:31
オセロで他のプログラムと対局するのは
GGSっていうサーバを介するのが一般的
434デフォルトの名無しさん:2009/01/06(火) 16:57:04
「神の一手は誰でも打てる。2手目以降の全てが平凡なのだ」 ――俺俺
435デフォルトの名無しさん:2009/01/14(水) 20:53:49
第二法だが、コマンドを打つ。
光学的なコマンドを打つ。
光学的なコマンドを打つ。
物理段差という肉体計算の処理です。
この手の光線にきづかないように。
1+x+x+1+a+x+x+a+x+x+a+a+a+a+a+a+1+a+a+a+a+a+a+a+a+a+a+a+a+a+a
+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a
+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a
+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a
+a+a+a+a+a+a+a+a+a+a+a+a+a a 1
436デフォルトの名無しさん:2009/01/14(水) 20:54:56
>>453はこのスレッドのオセロの作者です。
437デフォルトの名無しさん:2009/01/14(水) 20:56:06
上記更新
>>453>>423のオセロの作者です。
438デフォルトの名無しさん:2009/01/14(水) 20:57:09
上記更新
>>453>>423のオセロの作者によるものです。
439デフォルトの名無しさん:2009/01/14(水) 21:00:29
上記更新
>>453>>422のオセロの作者によるのです。
440デフォルトの名無しさん:2009/01/14(水) 21:01:47
>>453>>422のオセロの作者によるものです。
上記更新
441デフォルトの名無しさん:2009/01/14(水) 21:02:37
脳が無くなった。
442デフォルトの名無しさん:2009/01/14(水) 22:15:20
>>453
おいおい、まじかよ。冗談じゃないぜ。
443デフォルトの名無しさん:2009/01/17(土) 23:51:52
>>442
貴様は誰に者を言っているんだ?
444デフォルトの名無しさん:2009/01/18(日) 22:02:33
者を言うってなぁに?
445デフォルトの名無しさん:2009/02/08(日) 17:45:07
早見優ー!
446デフォルトの名無しさん:2009/02/08(日) 18:03:17
ゆういちくんか
447デフォルトの名無しさん:2009/02/13(金) 06:22:51
>>453で受けを取らないとバカにされそうで怖い><
448デフォルトの名無しさん:2009/02/27(金) 22:21:43
NegaScoutでも実装したらどうだ?
つーかオセロで手を戻す時に必要なのは(2次元配列で)
@パスのフラグ
A打った場所
B打つ一手前がパスなのかのフラグ
ぐらいか?
449デフォルトの名無しさん:2009/02/27(金) 23:10:18
オープンソースなオセロプログラムのソースコードでも読んでみたらどうだ?
450デフォルトの名無しさん:2009/03/02(月) 06:38:17
そもそも2次元配列不要。
単純なスタックで済む。しかも速かったりする。
451SimGlobe:2009/03/18(水) 01:11:17
SimGlobe:シムグローブ
シンプルなシュミレーションソフトです。
希少鉱物の発見を追求するシュミレーションソフトです。
将棋の駒が登場します。
オセロの要素も加味されています。
ダウンロードして25ターンまで、無料で試すことができます。
それ以降は有料です。
ご購入お待ちしています。
ホームページにジャンプ。
http://members3.jcom.home.ne.jp/runsight/
452デフォルトの名無しさん:2009/03/18(水) 01:22:07
シュミってるだけで程度が知れるな
453デフォルトの名無しさん:2009/03/18(水) 10:11:31
趣味のソフトだからなw
454デフォルトの名無しさん:2009/03/18(水) 10:13:19
この程度で金取るって・・・
455デフォルトの名無しさん:2009/03/18(水) 20:12:29
は?
456デフォルトの名無しさん:2009/03/18(水) 22:10:47
め?
457デフォルトの名無しさん:2009/08/14(金) 06:28:57
てst
458デフォルトの名無しさん:2009/08/18(火) 13:09:42
>>453
おい
459デフォルトの名無しさん:2009/10/23(金) 20:54:35
リバーシプログラムの作り方読んで作ったんだけど
これには載ってないもので是非実装しろっていう技術ある?
あれば教えてくださ
460デフォルトの名無しさん:2009/10/24(土) 00:29:00
る方は写真うp
461デフォルトの名無しさん:2009/10/24(土) 05:17:12
何の写真?もしかしておっぱ
462デフォルトの名無しさん:2009/10/25(日) 10:52:58
っぴー?
463デフォルトの名無しさん:2009/10/26(月) 13:29:49
全部探索してる人がいたな
464デフォルトの名無しさん:2009/11/01(日) 04:28:15
>>459
ビットボードとか
465デフォルトの名無しさん:2010/07/03(土) 00:06:44
あげ
466デフォルトの名無しさん:2010/07/03(土) 00:07:10
sage
467デフォルトの名無しさん:2010/07/28(水) 19:17:07
a
468デフォルトの名無しさん:2010/09/17(金) 23:44:17
できたの?
469デフォルトの名無しさん:2010/09/18(土) 00:00:55
ぴゅっぴゅっぴゅっ
470デフォルトの名無しさん:2010/10/07(木) 13:29:20
471ななし。:2011/07/27(水) 19:06:50.52
カ オ ス ラ ウ ン ジ ゆ る せ な ぁ い ー
472デフォルトの名無しさん:2012/02/12(日) 12:37:30.17
shine
473デフォルトの名無しさん:2012/06/19(火) 15:27:49.51
何がすばらしいの?
474デフォルトの名無しさん:2012/06/19(火) 20:31:29.65
オセロ
475デフォルトの名無しさん:2012/06/23(土) 17:51:04.59

1000 :uy ◆xVOGOO9ev6 :2012/06/23(土) 12:35:29.68
俺は動的言語の問題点をいくつあげてもwwwww
静的言語よりはマシだと確信してるわwwwwwwwwwwwwwwwww


静的言語の問題点をなぜ挙げないかって??

見放してるから、問題点を指摘さえしないってことだよwwwwwwwwwww
気づけバカwwwwwwwwwwwwwww
476できたかな???:2012/07/21(土) 14:57:37.03
テスト書き込みですぞ(つд⊂)
477sage希望:2012/07/21(土) 14:59:57.76
(・∀・)サテオシゴト・・・  
478デフォルトの名無しさん
さあ、開発現場に戻ろう!