c言語でオセロのプログラム作りたいんやが
■ このスレッドは過去ログ倉庫に格納されています
白黒を入れ替える方法がどうも思いつかん
わかる人おる? for文で回して色を識別して
そこからまた次のマスのの色をforで識別してとかよくわからん 石置いた時に上下左右斜め全て探索かけて置いた色と同じ石を見つけてその間全て別の色の石が置かれてたら色反転みたいな感じやないか >>3
考えてなかった、switchでいけるんかな? アホやな実際にやってみて自分の頭の中のプロセスそのままトレースするだけやろ脳みその理解しとる手順自問自答して細分化しろ >>4
そこが鬼門になるのはわかってたけど
とりあえずやってみよっかーって感じで作ろうと思ったんや
そこが出来たら後いけるで 1方向だけで考えると
置いた色と同じ色→処理継続
違う色→今まで通ったところを反転して処理終了
空白マスもしくは端まで到達してしまった→反転せずに処理終了
でどうや? >>10
変に考えて何もやらんやつが多い中とりあえず手を動かしてて偉い あとはとりあえず色々試して所望の動作なるまで頑張るだけや 答えなんかググったらいくらでも出てくるやろ >>7
ワイもイメージはそんな感じや
けどどう表したらええのかわからん >>13
全マスを二次元配列とかで表してるなら置いた位置から+1/-1した場所を全部見ればいけるんちゃうこ >>12
ありがとうやで、ただちょっと自分で考えたいんやで
ロジックだけ理解はしたいんや まず3かける3くらいのサイズで手でプロセスやってみたら >>15
オセロやりながら手動かして今ワイは何を基準に手動かしたんやって一個一個言語化すればええやろ >>17
気持ちはわかるわ けどようわからん!で辞めてもうたら意味ないから行き詰まったら答え見てからロジック理解するのもありやと思うで >>11
ワイもその考えなんやけど
そうしたら自分の色のところに着いたときにどう処理してええのか分からなくなったんやで
処理継続やってもその時点では色変え出来へんやろ? >>16
二次元配列使っとるし、斜めはそのやり方で考えてるで >>1
for(int i=0; i<10; i++){
arr[i]=0;
i=0;
} 最初からコード書こうとしたらアカン 紙に手順書きながら考えるんや >>25
いきなり計算でコード短くしようとするのもあかん 経験の上でならええけど >>1
ワイ元SEオセロ組んだことあるけど
具体的には何がどう分からんの?
「置ける場所探すロジック」とか「置いた場合にコマを裏返す(白を黒にするとか)ロジック」のこと? >>18
アドバイスありがとやで、まず簡単にしてやってロジックをつかむのもええかもな オセロ書くならこれを読め
https://web.archive.org/web/20210106085938/https://megalodon.jp/2019-0105-0145-49/note.mu/kotofurumiya/n/n31d401fce782 >>29
置ける場所を探すロジックは出来とるで
置いた場所に駒を裏返すロジックが出来へんのやで 勝手に書いておくとまず二次元配列は10×10にして「盤面の外壁」まで入れておくとやりやすいかも。
ワイの場合たとえば盤面空きを0。白を1、クロを2、壁を3と仮定する
裏返すには、たとえば2,2に白を置いたときに、2,3..2,4..
すまん睡眠薬効いてきてめちゃくちゃ眠い java研修のときに暇だったから勝手にマインスイーパー作ったけどオセロも楽しそうやな >>26
白を'a'
黒を'b'として
この場合だと
for(i;i<8;i++){
for(j;j<8;j++){
if(koma[j+1][i+2]=='a'){
この後の処理が考えられへん >>36
ボードゲームやとオセロが一番簡単そうやしそれで選んだんやで >>32
違う色全部裏返して同じ色なかったら元に戻せ ほんま申し訳ないけど立ってても首がガクンとするくらい眠くてアドバイスできない
目が覚めてたらいろいろ協力したかった
ごめんなさい ■ このスレッドは過去ログ倉庫に格納されています