Hatena::Groupnadesiko

雪乃☆雫のなでしこ日和

2009-04-15

基本の画面ができたよ!

| 21:33

【せんせい】

 今日は、一昨日作った画面に問題を表示。さらには、画像をクリックして答できるようになりましたよ。

 一昨々日の「問題集.csv」があるフォルダに保存してから実行しないとエラーが出ちゃいますので気をつけてください。

【でし】

 ぱちぱちぱち~。

 前の基本形が、しょぼいグラフィックに置き換わっただけですが、こんな画像でもゲームらしさはかなりアップしますね!

【せんせい】

 しょぼいとか、こんな画像とか、余計です!

 懸案の文字遅延描画ですが、結局画像を全部母艦コピーして、座標指定でクリック位置を判別するようにしました。

 15パズルのように、こちらがクリックしない限り、先には進めないゲームと違い、繰り返しのループで勝手に次々先へ進んでいくので困りました(汗)

 マウス押された時~は、別にマウスが押されるまで待っていてくれるわけじゃないんで。

 結局、繰り返しはやめて、マウスのクリックがあって正答か誤答の判定が出た後に、問題表示のサブルーチンを呼び出すようにしました。

 しかしまだ問題もあって、ふつうクイズゲームだと、問題を表示している途中でも、答することが出来ると思うんですが、それを可能にしようとすると、次の問題が最後まで表示された後、前の問題のキャンセルされた部分が表示されてしまうのです。

【でし】

 早押し問題には出来ないんですね。

【せんせい】

 ーなんです。

 戻るとか抜けるとか使っても、どうもうまく行かないようなんですよねー。

【でし】

 要修行ですね。

【せんせい】

 はいぃ~・・・って、どーしていつもいつも弟子のほうがエラーなんですか?!

【でし】

 ♪~~(逃亡)

#-----母艦設計------------------------------------------------
!母艦設計=「母艦の可視はオフ母艦のタイトルは「クイズ」
母艦の幅は640。母艦の高さは480。
母艦を$FFFFAAで画面クリア母艦のスタイルは「枠固定」
母艦オフに最大化ボタン有効変更。
母艦中央移動
母艦の可視はオン。
#-------------------------------------------------------------

#-----宣言----------------------------------------------------
黒板xとは整数。黒板x=15。
黒板yとは整数。黒板y=15。
黒板幅とは整数。黒板幅=400。
黒板高さとは整数。黒板高さ=220。

選択板xとは整数。選択板x=15。
選択板yとは整数。選択板y=250。
選択板幅とは整数。選択板幅=400。
選択板高さとは整数。選択板高さ=40。
選択板隔とは整数。選択板隔=10。

裏画面とはイメージの可視はオフ。
裏画面の幅は黒板幅。
裏画面の高さは黒板高さ+選択板高さ*2。
裏画面を$000000で画面クリア。

表画面とはイメージの可視はオフ。
表画面の幅は母艦の幅。
表画面の高さは母艦の高さ。
表画面を$FFFFAAで画面クリア。

処理用とはイメージの可視はオフ。
マスク画像とはイメージの可視はオフ。

データとは配列。
問題とは文字列。
答えとは文字列。
選択肢とは配列。
正解数とは整数。正解数=0。
番号とは整数。番号=0。
#-------------------------------------------------------------

#-----クイズデータセット--------------------------------------
「問題集.csv」を開く。
データはそれ。

データを配列シャッフル。
問題数はデータの要素数。

#-------------------------------------------------------------

#-----メインルーチン------------------------------------------
画面準備
問題設定

#-------------------------------------------------------------

#-------------------------------------------------------------
*問題設定
  マウス待ち=「オフ」    #問題表示し終えるまでマウス判定しない
  マウス判定

  もし、番号=問題数ならば  #最後の問題まで終わっていたら終了
    終了判定

  問題はデータ¥番号,0
  答えはデータ¥番号,1
  選択肢は「{データ¥番号,1}{改行}{データ¥番号,2}{改行}{データ¥番号,3}{改行}{データ¥番号,4}」
  選択肢を配列シャッフル。
  番号=番号+1
  出題

*出題
  クリア
    文字サイズは18。文字色黒色。
    数を0から3まで繰り返す
    母艦の選択板x+50,選択板y+5+(選択板高さ+選択板隔)*数へ選択肢¥数を文字描画。
    0.1秒待つ。
    描画処理反映。

    0.5秒待つ文字サイズは18。文字色白色母艦の黒板x+30,黒板y+30へ問題を100で文字遅延描画。
    マウス待ち=「オン」     #マウス入力待ち
    マウス判定。
#-------------------------------------------------------------

*マウス判定
  もし、マウス待ち=「オンならば
    母艦のマウス押した時は
      数を0から3まで繰り返す
        もし、(母艦のマウスX>選択板x)かつ
        (母艦のマウスY>選択板y+(選択板高さ+選択板隔)*数)かつ
        (母艦のマウスX<選択板x+選択板幅)かつ
        (母艦のマウスY<選択板y+選択板高さ+(選択板高さ+選択板隔)*数)ならば
          もし、選択肢¥数が答えならば
                  正解数=正解数+1。
            「当たり」と言う
            問題設定
          違えば
            「ハズレ。答えは{答え}」と言う
            問題設定

  違えば
    母艦のマウス押した時は
      戻る終了判定
    正解数で条件分岐
    問題数ならば
      ダイアログタイトルは「パーフェクト!」
    0ならば
      ダイアログタイトルは「もっとがんばりましょう」
    違えば
      ダイアログタイトルは「よくできました」

    「正解数{正解数}問
誤答数{問題数-正解数}問
正解率は{正解数/問題数*100を四捨五入}%です」と言う。

    終わり

#-------------------------------------------------------------
*画面準備
  塗り色は$008800。
  裏画面の0,0から黒板幅,黒板高さへ四角。

  塗り色は$DD9900。線色は$000001。
  裏画面の20,黒板高さから選択板幅,黒板高さ+選択板高さへ四角。
  塗り色は$FFFFFF。線太さは2
  裏画面の0,黒板高さから40,黒板高さ+選択板高さへ 


  裏画面の0,0,黒板幅,黒板高さを表画面の黒板x,黒板yへ画像部分コピー。

  処理用の幅は選択板幅。処理用の高さは選択板高さ。
  裏画面の0,黒板高さ,選択板幅,選択板高さを処理用の0,0へ画像部分コピー。

  マスク画像の画像は「処理用」
  マスク画像を$000000で画像マスク作成。

  数を0から3まで繰り返す。

    マスク画像を表画面の選択板x,選択板y+(選択板高さ+選択板隔)*数へ画像ANDコピー。
    処理用を表画面の選択板x,選択板y+(選択板高さ+選択板隔)*数へ画像ORコピー。

    数で条件分岐
      0ならば
        番号色=$BB0000
      1ならば
        番号色=$0000AA
      2ならば
        番号色=$EE8800
      3ならば
        番号色=$00AA00

    表画面の選択板x+20,選択板y+20+(選択板高さ+選択板隔)*数を番号色で塗る。
    文字サイズは24。文字色白色。
    表画面の26,選択板y+4+(選択板高さ+選択板隔)*数へ数+1を文字描画。

*クリア
  表画面を母艦の0,0へ画像コピー。

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