ぷよのグループ管理
ぷよが同色で並んだかどうかとか、同色でつながった数はいくつになったかとか、そういうのを把握するためにもう1つ配列変数を用意した。
前の、配列変数には座標上のぷよの色が記録されていたんだけど、今回のはグループナンバーが記録される。
処理の流れはこんな感じ。
例えば最初に赤が二つのペアを右隅に置くと、
~前略~
000000
000000
000002
000001
こんな感じになる。
同色であってもいったん、別のグループとして記録される。
その後、フィールド内を順に検索して、同色が隣り合っている場合は、片方のグループに結合してしまう。
その際に、互いのグループのメンバー数を足し、それぞれの座標も生き残る方のグループ番号が引き継ぐ。
結合されてしまった方のグループ番号は未使用のフラグになるので、いずれ新しく落ちてきたぷよに使われる事になる。
~前略~
000000
000000
000002
000002
検索によって赤が隣り合っている事が判明したので、グループ2番で結合。
次に緑、黄色の組み合わせをとなりにおとすと、
~前略~
000000
000000
000012
000032
こんな感じになる。
グループ番号は若い順に使用中じゃないものを見つけ次第、それを使用する。
これをくりかえして、メンバー数が4以上になったグループは消して、消えたマスの上のぷよをスライドさせる処理をする。
グループ管理に使う変数はまとめて構造体にした。
group.Index [gn] ・・・そのグループ番号が使用中かどうかを表すフラグ
group.Color [gn] ・・・そのグループの色
group.Member [gn] ・・・そのグループのメンバー数
group.MemberX [gn] [no] ・・・グループメンバーのX座標
group.MemberY [gn] [no] ・・・グループメンバーのY座標
gnはグループ番号
noはメンバーの番号
で、ながながと書いてきて、なんだけども、現在バグバグである(笑)
グループの結合処理を行うごとに、とりあえず1~10までのグループデータを表示させて、原因を探索中。
うまくグループ分けできてる時と、そうじゃない時があって、その分岐要因がわからないのよ。
いちお、デバッグ中のバージョン置いときます。
操作は前回と一緒。
落下するごとにデータを表示して一時停止しますんで、そのつどなにかキーを押してください。
毎度ですがzipなんで解凍してから実行してください。
http://u7.getuploader.com/game/download/50/%E3%81%B7%E3%82%88%E5%86%8D%E7%8F%BE%E3%83%81%E3%83%A3%E3%83%AC%E3%83%B3%E3%82%B8%EF%BC%8310.zip
引き続きバグ取りしますW
地味に時間のかかる作業なので、ブログの更新が遅れるかも・・・
ぷよが同色で並んだかどうかとか、同色でつながった数はいくつになったかとか、そういうのを把握するためにもう1つ配列変数を用意した。
前の、配列変数には座標上のぷよの色が記録されていたんだけど、今回のはグループナンバーが記録される。
処理の流れはこんな感じ。
例えば最初に赤が二つのペアを右隅に置くと、
~前略~
000000
000000
000002
000001
こんな感じになる。
同色であってもいったん、別のグループとして記録される。
その後、フィールド内を順に検索して、同色が隣り合っている場合は、片方のグループに結合してしまう。
その際に、互いのグループのメンバー数を足し、それぞれの座標も生き残る方のグループ番号が引き継ぐ。
結合されてしまった方のグループ番号は未使用のフラグになるので、いずれ新しく落ちてきたぷよに使われる事になる。
~前略~
000000
000000
000002
000002
検索によって赤が隣り合っている事が判明したので、グループ2番で結合。
次に緑、黄色の組み合わせをとなりにおとすと、
~前略~
000000
000000
000012
000032
こんな感じになる。
グループ番号は若い順に使用中じゃないものを見つけ次第、それを使用する。
これをくりかえして、メンバー数が4以上になったグループは消して、消えたマスの上のぷよをスライドさせる処理をする。
グループ管理に使う変数はまとめて構造体にした。
group.Index [gn] ・・・そのグループ番号が使用中かどうかを表すフラグ
group.Color [gn] ・・・そのグループの色
group.Member [gn] ・・・そのグループのメンバー数
group.MemberX [gn] [no] ・・・グループメンバーのX座標
group.MemberY [gn] [no] ・・・グループメンバーのY座標
gnはグループ番号
noはメンバーの番号
で、ながながと書いてきて、なんだけども、現在バグバグである(笑)
グループの結合処理を行うごとに、とりあえず1~10までのグループデータを表示させて、原因を探索中。
うまくグループ分けできてる時と、そうじゃない時があって、その分岐要因がわからないのよ。
いちお、デバッグ中のバージョン置いときます。
操作は前回と一緒。
落下するごとにデータを表示して一時停止しますんで、そのつどなにかキーを押してください。
毎度ですがzipなんで解凍してから実行してください。
http://u7.getuploader.com/game/download/50/%E3%81%B7%E3%82%88%E5%86%8D%E7%8F%BE%E3%83%81%E3%83%A3%E3%83%AC%E3%83%B3%E3%82%B8%EF%BC%8310.zip
引き続きバグ取りしますW
地味に時間のかかる作業なので、ブログの更新が遅れるかも・・・
PR
この記事にコメントする
- ABOUT
やってやれないことはないっ!たぶん・・・
- カレンダー
04 | 2025/05 | 06 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 最新コメント
[11/09 CALL MY NAME]
[11/09 erin]
[08/18 うずランド]
[07/11 うずランド]
[06/23 うずランド]
- プロフィール
HN:
Call my name
年齢:
50
性別:
男性
誕生日:
1974/05/22
職業:
スロ屋店員
趣味:
いろいろ
自己紹介:
やる気だけはあるつもりです。
はい。
はい。
- ブログ内検索
- カウンター
- アクセス解析