Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2009-03-30

ギブアップとヒント表示をつけよう!

| 21:44

 昨日は妹が遊びに来ていたので、成績表表示の確認を兼ねて15パズル大会を開催しました! 妹とはいえ、人にやらせるのは初めてだから、嬉しいね☆

 ちなみに、なかなか盛り上がっていた。

 ・・・なんと暇でバカで微笑ましい姉妹であろうか(汗)


 さて、昨日ので好きな画像で15パズルが遊べるようになったのはいいけど、難しすぎて解けない!という大問題が!!(汗)

 折角選んだ画像の完成形が見れないのは、悲しい・・・

 あと、完成図が見えていれば、パズルの難易度もぐっと下がるはず。


 というわけで、ヒントを見る機能と、ギブアップする機能を追加しようと思う。

 ギブアップは簡単。裏画面のを母艦コピーしてやればOKじゃん?

 メニューにギブアップの項目を追加する。

 バージョン情報のメニューをヘルプに変えて、の下にヒントとギブアップとバージョン情報をいれるよ。世の中の一般的なアプリケーションはこんな感じになってるはず!(ヘルプやヒントの意味が若干違うけどね;)

 折角だから(?)二択のダイアログでも使ってみよー。

 ギブアップを選択したら、「本当に?」とたずねて、はいのときだけ処理をする。

 もっと嫌味なことを言うと面白いかと思ったけど、使うのはどうせ自分なのに、なんかムカツクからやめた(爆)


 で、こんな感じ。

#-----ぎぶあっぷ-----------------------------------------------
*ギブアップ
  「本当に?」と二択。
    もしそれはいならば
      裏画面を母艦の15,15へ画像コピー。
      新規ゲーム待ちは「オン」
      初期化。
#--------------------------------------------------------------

 あれれ~? 書き換わらない

 マウスをクリックしたら変わるんだけど、おっかしいなあ。

 完成のときに同じように裏画面を母艦コピーしたときには問題なかったよ?

 意味わかんなーい!

 この機能を、実にスゥィ~トに考えていただけに、ドはまりしてしまってショック!!

 とりあえず、命令一覧をずっと眺めて「描画処理反映」を追加したら、正常動作しました。ちなみに、母艦再描画は、なぜかラベルが消えてしまってダメっぽい。

 問題は解決したけど、意はわからず・・・


 次に、ヒント機能です。

 これは、小さいサイズにリサイズした完成画像を、表示させる機能。

 手数とタイムの下が、無駄っぽく開いているから、こに表示させる。

 の学習内容は、メニューチェックオンオフで、ヒントの表示、非表示をトグルさせるよ!

#-----ヒント表示-----------------------------------------------
*ヒント表示
  もし、(ヒントメニューチェックオフ)ならば
    ヒントメニューチェックオン。
    作業用を盤サイズ,盤サイズで画像リサイズ。
    裏画面を作業用の0,0へ画像コピー。
    作業用を150,150で画像リサイズ。
    作業用を母艦の455,260へ画像コピー。
    文字サイズは18。文字色は$AA0000。
    母艦の478,230へ「☆ヒント☆」を文字描画。
    描画処理反映。
  違えば
    ヒントメニューチェックオフ。
    線色は$FFBBBB。塗り色は$FFBBBB。
    母艦の455,230から610,410へ四角。
    ラベル3の可視はオフ。
    描画処理反映。
#--------------------------------------------------------------

 これは、比較的簡単に出来たよ! 描画処理反映も忘れず!!

 最初「もし、(ヒントメニューチェックオフ)ならば」の行の書き方が、どこか悪かったのか、ちゃんと動作しなくてしばらく悩んだのは内緒(汗)

 いろいろ違うコト書いたりしてもダメで、も一度書いてみたらあっさり動いたという・・・


 前、画像変更機能を付けたときに、ファイル選択のときに「いいえ」を押したら、っ白になってしまう現象が発生し、避する処理を加えた。

 ーいえば、しょっぱなに「15パズル.jpg」を読み込んでますけど、これが万一なかったらどーなるんだ? と思い、ためしに消してみたら案の定エラー出て止まった;

 これ避するには、もし無かったら、画像変更機能へ飛ばして、任意の画像を選ぶようにするのが簡単そうだとおもったんだけど、やっぱりやめて以下のようにしてみた。

#-----しょぼい15パズル画面作成-------------------------------
*十五
  裏画面のWは盤サイズ。裏画面のHは盤サイズ。
  裏画面を$FFFFAAで画面クリア
  線色は$AAAAAA。線太さは0。
  数を0から15まで繰り返す
    x=数%4。
    y=数/4を切り下げ。
    yで条件分岐
      0ならば
        塗り色は$AAAAFF
      1ならば
        塗り色は$FFAAAA
      2ならば
        塗り色は$FFDDAA
      3ならば
        塗り色は$AAFFAA

    裏画面のx*駒サイズ,y*駒サイズからx*駒サイズ+駒サイズ,y*駒サイズ+駒サイズへ四角。
    文字サイズは42。文字色は$006600
    もし、(数>8)ならば
      x=20+(数%4)*駒サイズ。
    違えば
      x=35+(数%4)*駒サイズ。
    y=数/4を切り下げ。y=20+y*駒サイズ。
    もし、数=15ならば
      裏画面のx,yへ「★」を文字描画
    違えば
      裏画面のx,yへ(数+1)を文字描画
  
  裏画面を母艦の15,15へ画像コピー。
#--------------------------------------------------------------

 これで、何の画像も無くても、15パズルの画面が出ます。

 意外と簡単で、はまりどころも無くすぐできちゃったよ!

 ていうか、最初にしょぼい画像に半日かけたワタシって一体・・・?(哀)

 成績表のテキストも、無いときは自動生成出来るようにしないとダメだね。

#--------------------------------------------------------------
もし、「成績表.txt」が存在するならば
  「成績表.txt」を毎行読んで反復
    成績¥回数対象違えば
  「成績表.txt」に保存。     #成績表が無かったら作成する
#--------------------------------------------------------------

 今日ここまで。

 課題も大体解決してきてるけど、それは明日UPするよ!

トラックバック - http://nadesiko.g.hatena.ne.jp/snowdrops89/20090330