- 締切済み
五目並べ
五目並べで 5つ並べば1を返すプログラムを組みたいのですが どのようにすればいいのかわかりません N[8][8]=1のとき黒、=2のとき白と設定して碁盤を組んでます よろしくお願いします
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yama5140
- ベストアンサー率54% (136/250)
五目並べプログラムには、 ・禁じ手などを考慮した黒(白)の「手を思考する」部分。 ・手順毎に、勝敗(5つ並んだか)を「判定する」部分。 が必要と思います。 >5つ並べば1を返すプログラムを組みたいのですが、どのようにすればいいのかわかりません ・黒白の手順が一手一手進む中で「5つ並べば」、という「判定する」部分ですね。 (手の思考を経て)手順が進んでいる → 「手を思考する」部分はできている。 ------------------------------------- 「手を思考する」部分には、「ここに打てば○つ並ぶ」という思考部分がありますよね。 ★そこの○を5にしたものを、「判定する」部分に流用するだけ、と思いますが・・。 てか、「手を思考する」部分ができていれば、今回の質問は発生しなかったはず・・。 う~ん、質問主旨が判らなくなってきた。 ------------------------------------- 《具体的に書かれた部分を基に、「補足」をお願いします》 >N[8][8]=1のとき黒、=2のとき白と設定して碁盤を組んでます ・なにを「基」として、= 1 や = 2 になるのですか?。 ・「碁盤を組んで」とは、「手順を進めて」のことですか?。 ・碁盤は、何路盤ですか?(0~8の9路盤?)。
- arain
- ベストアンサー率27% (292/1049)
わからないのはどの部分でしょうか。 単純に「同じ値がn個並んでいるか確認」という処理を考えればよいです。 以下には両方を同時に行う処理概要を記載していますが、「白だけ」「黒だけ」を確認する処理であれば比較的簡単にできます。 >=1のとき黒、=2のとき白と設定 では足りないので、 a.マスに碁を置いていない時を「0」とする。 b.比較対照の初期値として「0」を入れておく。 c.並んでいる数のカウンタ(count)を0にしておく。 d.横一列(縦一列)を最初から最後まで見ていく。 →比較対照とN[][]の値が一致しなかったら、N[][]の値を比較対照に代入し、countを1にする。 (0の場合は比較対象外のためカウントしない) →比較対象の値とN[][]の値が「0以外で」一致したらcountを+1する。 →countが5になったら終了し、比較対照に入れている値を返す(これで、ついでに黒/白の判定もできる) e.d.を縦一列(横一列)分繰り返す。 f.同様に、斜め(左上~右下、左下~右上)についても行う。 g.5個連続でなければ0(五つ並んでいない)を返して終了。 # 斜めについてはあえて書きません。