現在以下のようなルールのパズルゲームを制作中です。(C#)
- 縦10マス × 横10マスのフィールドがある(2次元配列で管理)
- 数字がかかれたブロックを1つずつフィールドに設置していく
- 設置したブロックから上下左右につながったブロックの数値を再帰的に合計し、合計10になるブロックを消す
#やりたいこと
フィールド上の数値をチェックし、合計10になる組み合わせを探す。
この時に、2次元配列の縦横のインデックス(位置)のリストを、組み合わせ毎に取得したい。
組み合わせ毎に取得したい理由は、「この組み合わせで10ができた!」という表示を個別に分けてしたいため。
#例
フィールドが以下のような場合
||[0]|[1]|[2]|[3]|[4]|
|--|--|:--:|--:|
|[0]||||||
|[1]| |1| |4| |
|[2]| |2|3|3||
|[3]| | |5|1| |
|[4]| | | | | |
|[5]| | | | | |
得たい結果はインデックスを(x,y)と表現すると、
{(1,1) (1,2) (2,2) (3,2) (3,3)} {(1,2) (2,2) (2,3)} {(2,2) (3,2) (3,1)}
という、10ができる組み合わせ毎のインデックスリストを得たいです。
ぷよぷよのアルゴリズムような再帰関数での取得を考えましたが
インデックスの組み合わせを考えると上手く実装できません。
良いアルゴリズムはありますでしょうか。
実装例も合わせて提示していただけると助かります。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/02 00:52
2020/07/02 01:09 編集