HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0401
kaien文字で飛ばす4解決


kaien

リンク

2007/4/1(Sun) 14:21:26|NO.6774

初めまして、kaienです。今後もよろしくお願いします
質問です。
まず、このスクリプトを見てください。

*tit screen 0,600,400 title "今作っているゲーム" pos 55,50 font "MS ゴシック",80,16 color 255,100,0 mes "製作中ゲーム" color 0,255,200 pos 190,200 font "",50,16 mes "ストーリー" pos 150,270 mes "タイムアタック" stop *main 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
これは、今作っているゲームのタイトル画面なんですが、
「ストーリー」、「タイムアタック」の
文字の部分を押すと

*mainに飛べるようにしたいのですが、 どうすれば、できますか? よろしくお願いします。



この記事に返信する


93

リンク

2007/4/1(Sun) 15:41:41|NO.6781

自分も使うかなと思ったのでつくりました。制限時間のオプションは・・・(´ω`∪)
がんばってください。


#module "text_menu" // // テキストメニューの初期化 // #deffunc menu_init // 変数を初期化 dim _len_,1 : _len_ = 32 // 配列数 dim _flag_, _len_ dim _x_, _len_ dim _y_, _len_ sdim _text_, 64, _len_ dim _fsize_, _len_ return // // テキストメニューの追加 // // p1 = ID // p2 = x座標 // p3 = y座標 // p4 = テキスト // p5 = 文字の大きさ // #deffunc menu_add int p1, int p2, int p3, str p4, int p5 // 配列数を超えてないか確認 if (p1 >= 0)&(p1 < _len_) { _flag_(p1) = 1 _x_(p1) = p2 _y_(p1) = p3 _text_(p1) = p4 _fsize_(p1) = p5 } return // // テキストメニュー // // p1 = 選択したID // p2 = 制限時間(省略時はずっと待機) // #deffunc menu var p1, int p2 // 変数初期化 p1 = -1 // 制限時間の補正 if (p2 <= 0) { time = -1 } else { time = p2 } // 待機 repeat time // クリック取得 getkey click, 1 // 領域判定 repeat _len_ : i = cnt // もし使用されてるなら if (_flag_.i == 1) { // フォント設定 font msgothic, _fsize_.i, 17 // 現在の位置と大きさを考える size = strlen(_text_.i)*_fsize_.i // 描画 redraw 0, _x_.i, _y_.i, size+_x_.i, _fsize_.i+_y_.i if (mousex > _x_.i)&(mousex < size+_x_.i)&(mousey > _y_.i)&(mousey < _fsize_.i+_y_.i) { // テキスト内を選択中 color 255, 0, 0 : pos _x_.i, _y_.i : mes _text_.i // クリック確認 if (click == 1) { // クリックされてるならidを更新 p1 = i break } } else { // テキスト外 color 128, 128, 128 : pos _x_.i, _y_.i : mes _text_.i } redraw 1, _x_.i, _y_.i, size+_x_.i, _fsize_.i+_y_.i } loop // idの確認 if (p1 != -1) { break } // 待機 await 100 loop return #global // // ここから // *tit menu_init menu_add 0, 190, 200, "ストーリー", 20 menu_add 1, 150, 270, "タイムアタック", 50 menu id cls title "選ばれたのは "+id



kaien

リンク

2007/4/1(Sun) 16:27:18|NO.6783

ありがとうございます。
それにしてもすごく難しいですね。
何をやっているかさっぱりです。
これから、調べていきます。

まだまだこれ以外のやり方があったら、
教えてください。



KIMU

リンク

2007/4/1(Sun) 16:57:04|NO.6785

>それにしてもすごく難しいですね。
決められた範囲にマウスカーソルがあるか
クリックされたかを調べるだけなので、
難しくは無いと思いますよ。


*tit screen 0,600,400 title "今作っているゲーム" pos 55,50 font "MS ゴシック",80,16 color 255,100,0 mes "製作中ゲーム" color 0,255,200 story_px=190 story_py=200 pos story_px,story_py font "",50,16 mes "ストーリー" //ginfo(14)、ginfo(15)は mesで文字を表示させた範囲が入ってる story_hx=ginfo(14)/2 ;文字を描画した範囲の半分を判定範囲に使用 story_hy=ginfo(15)/2 story_cx=story_px+story_hx ;描画された文字列の中心座標 story_cy=story_py+story_hy time_px=150 time_py=270 pos time_px,time_py mes "タイムアタック" time_hx=ginfo(14)/2 time_hy=ginfo(15)/2 time_cx=time_px+time_hx time_cy=time_py+time_hy repeat await 10 getkey ml,1 //abs()は-でも+の数値に変換する関数 if abs(mousex-story_cx)<story_hx and abs(mousey-story_cy)<story_hy { ;マウス座標から文字列の中心座標を引いて、+-判定範囲内か判定 title "ストーリー" if ml=1 { selmod=1 goto *main } }else{ if abs(mousex-time_cx)<time_hx and abs(mousey-time_cy)<time_hy { title "タイムアタック" if ml=1 { selmod=2 goto *main } }else{title "今作っているゲーム"} } loop *main color boxf color 0,255,200 pos 0,0 if selmod=1 {mes "ストーリー" } if selmod=2 {mes "タイムアタック"} stop
これも基本的には 93さんのと変わりませんが
仕組みを見るには分かりやすいかな・・・



kaien

リンク

2007/4/1(Sun) 17:16:15|NO.6786

解説ありがとうございます。
僕でも分かりました。
93さんとKIMUさん本当に
ありがとうございました。今後とも
よろしくお願いします。
 
                  **解決**



ONION software Copyright 1997-2023(c) All rights reserved.