カレンダー

09 | 2017/10 | 11
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 - - - -

FC2ブログランキング

気に入ったら押してくださいな~

FC2ブログランキング

1日1回のクリック有効です。

HSPについて

おにたま氏作成の無料で使える プログラム言語です。

こちらからダウンロード出来ます。

最近の記事

最近のこめんと~

最近のトラックバック

月別あ~かいぶ

かてごり~

ぷろふぃ~る

BYTE

Author:BYTE
QMAプレイヤー。
もはや1ヶ月に10プレイ程度の
今も昔も鍍金賢者。

カード名は明かせないな(w

りんく~

ブロとも申請フォーム

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

lesson 四文字 5-3 BOXの表示と選択肢のクリック

四文字のBOX


前回、順番当ての宿題で出した黒板に表示するBOXの描画です。
順番当てのBOX表示の参考になると思います。


//黒板にBOX画像を転送
pos (ginfo_winx - 200)/2 , 160
gcopy ID_BUTTON , 0 , 70 , 200 , 50


まず、BOXの表示はこれでおしまい。
Xの位置は、センター合わせです。
この ginfo_winx はメイン画面のXサイズです。
つまり 640 が入っていることになります。
次の 200 はBOX 1つが50。
4つなので 200 となっています。
それを 2 で割るとセンター合わせになります。
よく使うので参考にしてください。

Yの位置は160です。いじらないほうがいいです。
そして、仮想画面2からBOXだけを転送して描画しています。

ここから選択肢のクリックの説明になります。
まずボタン10個分の位置を設定しなければいけません。
クリックの座標判定に使います。


//選択肢の位置設定
repeat 5
sentakusi_x_pos.cnt = (ginfo_winx - 390)/2 + (cnt*80)
sentakusi_y_pos.cnt = 250
sentakusi_x_pos.(cnt+5) = (ginfo_winx - 390)/2 + (cnt*80)
sentakusi_y_pos.(cnt+5) = 250 + 80
loop


こんな感じでボタン1つ1つの左上の座標だけ設定していきます。
ボタンのサイズは 70×70 なので、
左上、右上、左下、右下の4点は求められます。
その4点の範囲内がクリックされていたら、処理を始めます。


*四文字選択処理
push_sign = 1

gsel ID_BUTTON
font "MS ゴシック" , 32 , 16
color 255 , 255 , 255
textmode 0
pos yonmoji_push * 50 + 8 , 78
emes "" + value
your_choice = your_choice + value

gsel 0
pos (ginfo_winx - 200)/2 + yonmoji_push * 50 + 3 , 160 + 3
gcopy ID_BUTTON , yonmoji_push * 50 + 3 , 70 + 3 , 44 , 44

yonmoji_push = yonmoji_push + 1
if yonmoji_push = 4 : yonmoji_push = 0 : gosub * 正解判定
push_sign = 0
return


push_sign = 1 は連打防止用のフラグです。
終わり行の return の手前に
push_sign = 0 がありますね。
要はこのpush_sign = 1 から push_sign = 0 の間にクリックされると、
制御されていない場合 また最初の *四文字選択処理 から始まってしまいます。
最後の return が実行されないのです。
この実行されない return が溜まっていくと、スタック領域がオーバーフローを起こして、エラーがでます。
その防止策なのです。

今までにやった、○×、四択、連想、順番当て、
すべてに何気なくきっちりこの処理は入れてあります。
この処理は大変重要なので、覚えておいてください。

gsel ID_BUTTON
は、今から仮想画面2(ID_BUTTON)に書きますよ~って事です。
ここでは、仮想画面のBOX内に文字を描いています。

「文字なんて直接メイン画面に描けばいいじゃ~ん?」

ダメです。
クリックした瞬間でも、メイン画面の黒板には問題文がリアルタイムで描画されていきます。
BOXの文字の色は color 255 , 255 ,255 (白)です。
黒板に表示される問題文の色抜きは color 0 , 0 , 0(黒)です。
gmode の特性上、途中で color 命令が入ると、その色が色抜き色として
設定されてしますのです。
大変やっかいです。
途中から黒板の問題文の色抜きがされなくなります。

これの対処方法は gmode は他の画面の color 命令には適用されないので、
仕方なく仮想画面にBOX用の文字を描く事になります。
大変難しいですね。

your_choice = your_choice + value

順番当てのときと同じような処理ですね。
答えの文字を足していきます。

gsel 0
pos (ginfo_winx - 200)/2 + yonmoji_push * 50 + 3 , 160 + 3
gcopy ID_BUTTON , yonmoji_push * 50 + 3 , 70 + 3 , 44 , 44

それから、メイン画面にBOXの文字を転送して描画します。
数字が細かいのは微調整です。いじらないほうが良いです。

★ lesson 四文字 5-3.hsptxt のダウンロード ★
.txt なので lesson 四文字 5-3.hsp にリネームして実行してください。
きちんと遊べるレベルになっています。

ランキング下降中w 勉強になった!と少しでも思ったら押してくださいね。

スポンサーサイト

テーマ : クイズマジックアカデミー - ジャンル : ゲーム


コメント

コメントの投稿


管理者にだけ表示を許可する

 BLOG TOP 


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。