c言語でオセロのプログラム作りたいんやが

■ このスレッドは過去ログ倉庫に格納されています
0001風吹けば名無し2022/06/24(金) 00:21:35.43ID:C+R1qHO/0
すまんな、また立てた
白黒を入れ替える方法がどうも思いつかん
わかる人おる?

0002風吹けば名無し2022/06/24(金) 00:22:40.85ID:JAXVUiwJ0
え?

0003風吹けば名無し2022/06/24(金) 00:22:47.90ID:mF43THOY0
入れ替える方法というか入れ替える駒を特定する方法ってことか?

0004風吹けば名無し2022/06/24(金) 00:23:33.61ID:JAXVUiwJ0
普通に置かれた石と同じ色に突き当たるまで4方向探索すればええだけなのでは?

0005風吹けば名無し2022/06/24(金) 00:24:23.05ID:QSy/HvJ/M
隣が違う色なら次にすすむ
その隣が違う色ならさらに次に進む、同じ色ならひっくり返す、壁なら終了

0006風吹けば名無し2022/06/24(金) 00:24:27.58ID:iOuBOS+G0
まずは三目並べにしたら?

0007風吹けば名無し2022/06/24(金) 00:24:33.35ID:C+R1qHO/0
>>3
駒を特定する方法はなんとなく想像できるんやが
そのあとの置いたコマまでの駒をひっくり返す処理が思いつかん

0008風吹けば名無し2022/06/24(金) 00:25:02.78ID:EfCoUe7+M
カメラでオセロゲーム画面撮影させてそれを操作するプログラムにしろ

0009風吹けば名無し2022/06/24(金) 00:25:45.40ID:QSy/HvJ/M
>>7
2112ってあったら1の地点に2を入れるだけやろ

0010風吹けば名無し2022/06/24(金) 00:26:08.45ID:xMrzelFK0
UIの話じゃないよな?何の事言ってるんや

0011風吹けば名無し2022/06/24(金) 00:26:21.59ID:JAXVUiwJ0
0なら1で1なら0にするだけなのに

0012風吹けば名無し2022/06/24(金) 00:26:55.69ID:rsFTbb8D0
C忘れたから適当に書いた、これを8方向分やればいけるんでね

function(int x_zahyo, int y_zahyo, int x_houkou, int y_houkou, char color){
change = x_zahyoとy_zahyoを保持できる構造体の配列
while(true){
x_zahyo += x_houkou;
y_zahyo += y_houkou;
if(board[x_zahyo][y_zahyo] == null){
return;
}else if(board[x_zahyo][y_zahyo] != color){
x_zahyoとy_zahyoを構造体に入れてchangeに入れる
continue;
}else{
changeに入れてる分を全てひっくり返す
return;
}
}
}

0013風吹けば名無し2022/06/24(金) 00:27:26.21ID:C+R1qHO/0
>>4
探索するのは出来る
forで回しながら違う駒ならbreakとか使えばええしな
ただ探索の時点ではひっくり返さないやろ?
そこがわからんのやで

0014風吹けば名無し2022/06/24(金) 00:27:56.63ID:QSy/HvJ/M
>>13
ひっくり返す座標返せばええやん

0015風吹けば名無し2022/06/24(金) 00:28:00.06ID:G9fBkq/60
>>7

>>13
探索のときにひっくり返しておいて同色見つからなかったら元に戻せ

0016風吹けば名無し2022/06/24(金) 00:28:17.62ID:JAXVUiwJ0
>>13
ひっくり返すマスを記録するために変数用意しておけばいいのでは?

0017風吹けば名無し2022/06/24(金) 00:30:26.50ID:xMrzelFK0
>>13
テーブルを用意するか変更対象の座標をpushして置いておいて後処理で一気に変える
探索しながら変えれるやろとは思うけどなw

0018風吹けば名無し2022/06/24(金) 00:30:28.23ID:Xo5nb2nv0
深さ優先探索でググれ

0019風吹けば名無し2022/06/24(金) 00:30:46.88ID:GLjy4dCM0
配列つかってfor文の中にif文いれて上手いことやるんやで

0020風吹けば名無し2022/06/24(金) 00:31:21.08ID:JAXVUiwJ0
というかせめてaiの部分で躓けよ

0021風吹けば名無し2022/06/24(金) 00:31:28.21ID:KPdCBcI60
>>12
K&R風に書くな😡

0022風吹けば名無し2022/06/24(金) 00:31:29.00ID:ypB1NQ920
リバーシをリバースしろ

0023風吹けば名無し2022/06/24(金) 00:31:57.93ID:xtmPDqBd0
ダイクストラ法でググれ

0024風吹けば名無し2022/06/24(金) 00:32:30.42ID:C+R1qHO/0
>>12
なんか、頭に浮かんできたサンキューやでやってみるわ!

0025風吹けば名無し2022/06/24(金) 00:34:29.38ID:gveKD9/20
多次元配列作って判定していけばいいだけやろ

0026風吹けば名無し2022/06/24(金) 00:35:07.55ID:gjYuywSK0
長谷川五郎をリスペクトしたかる

0027風吹けば名無し2022/06/24(金) 00:35:11.64ID:gveKD9/20
>>12
Cじゃなくて草

0028風吹けば名無し2022/06/24(金) 00:35:33.13ID:Lj/lAG0Xd
例えば黒石が白石と隣接したらそっちの方向に黒石が見つかるまで進んでいったらええんやないんか?

0029風吹けば名無し2022/06/24(金) 00:35:53.67ID:JzsUpMDda
知らんけどこういうのって画面はじの判定がだるそう

0030風吹けば名無し2022/06/24(金) 00:36:03.10ID:qaKW1x+R0
大学の課題やろ
ワイは取らなかったけど見かけたわその授業

0031風吹けば名無し2022/06/24(金) 00:36:04.06ID:dx7wQMqA0
>>12
配列外参照で死ぬ

0032風吹けば名無し2022/06/24(金) 00:37:12.26ID:7knOJ+jIM
>>29
座標渡して範囲外か返す関数作るだけやろ

0033風吹けば名無し2022/06/24(金) 00:37:14.83ID:ypB1NQ920
>>20
オセロくらいだとAI使わなくても今なら最後まで先読み全パターン列挙できそう
相手の手含め何パターンくらいあるんだろう

0034風吹けば名無し2022/06/24(金) 00:38:00.34ID:xMrzelFK0
へっぽこCPUなら作ったことがあるなw
一手先も読めない奴

0035風吹けば名無し2022/06/24(金) 00:38:08.44ID:JAXVUiwJ0
>>33
オセロですらまだ完全解析されてないぞ

0036風吹けば名無し2022/06/24(金) 00:38:53.12ID:7knOJ+jIM
>>33
無理やろ
終了20~30手前から全探索するオセロアプリはあった気がするが

0037風吹けば名無し2022/06/24(金) 00:39:57.90ID:ypB1NQ920
>>35
マジか…意外と奥深なんやね
仮に列挙できてもその時点でどのルートが最善かは別問題か

0038風吹けば名無し2022/06/24(金) 00:40:47.20ID:YCqUQbBWH
グラフ理論とか使えば多少楽になるんちゃうか

0039風吹けば名無し2022/06/24(金) 00:42:14.09ID:7knOJ+jIM
22手か
まあ序盤は序盤で辞書使ってくるからあれやけど
https://play.google.com/store/apps/details?id=de.earthlingz.oerszebra
https://i.imgur.com/KPEuINL.jpg

0040風吹けば名無し2022/06/24(金) 00:43:41.14ID:8OOAicIB0

0041風吹けば名無し2022/06/24(金) 00:45:11.93ID:rsFTbb8D0
>>31
チェックはめんどいから省いた

0042風吹けば名無し2022/06/24(金) 00:45:36.30ID:ypB1NQ920
まあ面白そうやね 学生の課題ならこんなもんか
そのうち小学生が同じ質問してくるんやろなあ

0043風吹けば名無し2022/06/24(金) 00:46:41.23ID:JnNyeP9z0
>>42
知らんくせに何か偉そうで草

0044風吹けば名無し2022/06/24(金) 00:48:32.69ID:gjYuywSK0
>>42
無知の知

■ このスレッドは過去ログ倉庫に格納されています