空想曲線

吉里吉里2/KAG3でのゲーム制作に使える小ネタ置き場。ゲーム用素材も置いてます。

諦めが悪いというのはこういうことだ  

2012-10-04[Thu]
cm0
tb0

久しぶりの吉里吉里ネタ。
でも半分くらい備忘録なので制作雑記カテゴリに。

以前マグマグガンバの答えを勝手に出してくれるツールを
吉里吉里で作ったけど処理が遅すぎて役に立たないと書いた。
その後、何とかならないものか色々調べて組み直してみた。

結果:ダメだった_| ̄|○

以下、その原因と悪あがきについて。
吉里吉里ネタなので興味ない人はスルーで。

中央の数字を除く1~9までの数字を重複ナシで適当に当てはめるには
1~9の数字を格納した配列変数から中央の数字を除いてシャッフルさせればいいので
whileを使って混ぜ混ぜする。

ごちゃ混ぜにした配列をパネルの一つ目から順番に当てはめて
列の合計(の下一桁)が端っこの数字と合っているかチェック。
6列全てが合っていれば解答を表示、合っていなければ再びシャッフル。
ちなみに今回は速度優先のため全てTJSで組んでいる。

この処理を吉里吉里に頑張ってもらっていたが
シャッフル→チェック→シャッフル→チェック→シャッフル→チェック……
これが数百行続く。コンソールログを見たら気持ち悪いことになっていた。
処理にかかる時間は数秒~1分以上。ぶっちゃけ自力で解いた方が速い。

……
…………
………………仕方ない、諦めよう。(´・ω・)つ[ゴミ箱]


なんて言うとでも思ったか!(`・ω・´)

ここまで作って投げるのも勿体無いので、フツーにマグマグガンバを作ることにした。
練習ツールとしても普通のゲームとしても遊べていいじゃないか、が。
組み方としては解答ツールを逆に考えていけばいいだけ。これならカンタンにできるぞ。

しかし、ここで問題が発生した。

重複した数字の文字色を変更する方法がわからん。

ユーザーが入力した数字は全て配列変数f.ans に格納しているが、
その中に同じ数字が2つ以上あるかどうかをチェックするには
どうすればいいんだろうかとゴロゴロしながら考えて、そのまま寝落ちする。

後日、苦肉の策として思いついたのがこれ。

[iscript]
f.ans=[]; // ユーザーが入力した数字を入れておく配列
f.ans[0]= '' // 一つ目のパネル
f.ans[1]= '' // 二つ目のパネル
.
.
f.ans[8]='' // 九つ目のパネル

※f.ans[4](中央のパネル)は数字固定。

// 数字の重複チェック
tf.ck = [0,0,0,0,0,0,0,0,0];// 数字使用カウント
for (var i=0; i < tf.ck.count; i++)
 {
  if(f.ans[i] !== void)
  {
   tf.ck[f.ans[i]] += 1;
  }
 }
[endscript]

配列変数f.ansの要素を頭からチェックしていく。
f.ans[i]voidではないとき、tf.ckの添字f.ans[i]番目にを足す。

例えば、f.ans[0]が入っていたとすると
i = 0のときtf.ck[f.ans[0]]+= 1、つまりtf.ck[4] += 1となる。
これを最後まで続ければ、どの数字を何回使ったかチェックできる。

実際の表示はエンティティと三項演算子を使って

[font color="&tf.ck[f.ans[0]] > 1 ? 0x00BFFF : 0x444444"]
[emb exp="f.ans[0]"]

数字の使用回数が2回以上なら文字の色を0x00BFFFに、それ以外なら0x444444で表示する。
おお、できた!ヾ(*´∀`*)ノ< うはーっ!

まだ組んでいない箇所があるけど大体こんなカンジ。
水色の文字が重複している数字、黄色の文字は列の合計が合っている部分。
「マグプラ」ゲーム画面
インターフェースをそれっぽくしてみたが、そこはかとなく漂うパチモン臭さは拭い切れない。
いいんだよ、パチモンだから。

ところで、ハッカーズのすれ違い回数がなかなか増えない。
あの仕様を考えたのは誰だ。この悪魔め。


関連記事

コメント

コメントの投稿

Secret

トラックバック

トラックバックURL
→http://kopacurve.blog33.fc2.com/tb.php/271-df8bbf2f
この記事にトラックバックする(FC2ブログユーザー)

現在のページ

Category

Link

Comment

Mailform

Author

Twitter