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


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0325
sorrymes命令のあと(同じ行に)にエフェクトを持って行きたい!6解決


sorry

リンク

2010/3/25(Thu) 19:03:00|NO.31567

HSPのプログラミングについては初心者です。

 所で、HSP で 「かきくけこ」と入力した同じ行(「こ」の後ろに)に「◇」を点滅 させるには(プログラムを実行した状態)どのようコマンドと組み方をしたらいいのかわかりません。
やはり pos のコマンドを毎度「かきくけこ」の後ろの座標を打ち込むしか手段は無いのでしょうか?
以下のやり方では 「かきくけこ」の直後に「◇」は点滅されません・・・ posを用いず自動的に文末に「◇」を点滅されるようにはどのようにしたらいいのでしょうか?

cls 0 font "HGPゴシックE",25 pos 5,350 mes "あいうえお" mes " かきくけ" ;この行の「け」の直後(同じ行)に*ef1 の効果を表示させるようにしたい( posを使用せず) gosub*ef1 wait 10 *ef1;文字を点滅させる効果です font "HGPゴシックE",30 repeat color 255,255,255 mes "□" wait 10 color 0,0,0 mes "□" pos 400,455 mes "text" wait 10 loop stop
なにか良い組み方がないのでしょうか? 
何もかも下手ですみません。 よろしくお願いします。



この記事に返信する


ESZET

リンク

2010/3/25(Thu) 19:32:46|NO.31569

mesで書き出した文字の横・縦幅はginfo_mesxとginfo_mesyで出るのでそれを応用して

cls 0 font "HGPゴシックE",25 pos 5,350 mes "あいうえお" mes " かきくけ" ;この行の「け」の直後(同じ行)に*ef1 の効果を表示させるようにしたい( posを使用せず) x = 5 + ginfo_mesx y = 350 + ginfo_mesy gosub*ef1 wait 10 *ef1;文字を点滅させる効果です font "HGPゴシックE",30 repeat color 255,255,255 pos x,y mes "□" wait 10 color 0,0,0 pos x,y mes "□" pos 400,455 mes "text" wait 10 loop stop
のようにすればいいと思います。(posはどうしても使用してしまいますが)
参考までに、HGPゴシックEはすべてのパソコンで表示出来ません。MS Pゴシックがいいと思います。



ESZET

リンク

2010/3/25(Thu) 19:37:42|NO.31570

あと、サブルーチンジャンプ(gosub)の使い方が間違っています。
というかサブルーチンジャンプの使い所ではないと思うので

gosub*ef1 wait 10


goto *ef1
にした方がいいと思います。



inovia

リンク

2010/3/25(Thu) 19:42:34|NO.31571


font "HGPゴシックE",30 mes "かきくけこ" x=ginfo(14) y=(ginfo(23)-ginfo(15)) repeat pos x,y:mes "◇":wait 50 pos x,y:color 255,255,255 boxf ginfo(22),ginfo(23),ginfo(22)+ginfo(14),ginfo(23)+ginfo(15) color:wait 50 loop </@re>



sorry

リンク

2010/3/25(Thu) 20:32:19|NO.31572

回答ありがとうございます。
とりあえず疑問は解消できてうれしく思います。

 emes と言うコマンドを用いた場合はどうなるのでしょうか? もしよければご指導願います。
text 50
emes "かきくけ"と入力したら 上手く表示されません。 よろしくお願いします。



あり

リンク

2010/3/26(Fri) 15:24:22|NO.31580

emesは仕様上textでウエイトを指定すると
正確な文字幅が取得出来ません。
なのでemesを少し改造して合計の文字幅を取得できるようにしてみました。
(注.あくまで全文字幅の合計なので改行コードがあると表示がおかしくなります)

; hsp3util.as内のemesを改造 #module #deffunc text int _p1 stwait=_p1 return ;---------- hsp3util.asのemesと置き換えても動作に支障は出ません ---------- #deffunc emes str _p1 meswidth=0 mesmax=strlen(_p1) if mesmax<=0 : return mestmp=_p1 messg="" mescur=0 a=0 orgx=ginfo_cx if ( stmode ) { strval2=ginfo_r stgval2=ginfo_g stbval2=ginfo_b } if stwait<=0 { x=ginfo_cx:y=ginfo_cy messg=mestmp gosub *emes_aft return } repeat if mescur>=mesmax : break x=ginfo_cx:y=ginfo_cy a=peek(mestmp,mescur) mescur++ if a<32 { if a=13 { if peek(mestmp,mescur)=10 : mescur++ mes "":pos orgx } continue } poke messg,0,a poke messg,1,0 if a>=128 { poke messg,1,peek(mestmp,mescur) poke messg,2,0 mescur++ } gosub *emes_aft pos x+ginfo_mesx,y await stwait loop mes "":pos orgx return meswidth *emes_aft if stmode=0 { mes messg meswidth+ginfo(14) return } if stmode=1 { pos x+stdiff,y+stdiff color strval,stgval,stbval mes messg pos x,y color strval2,stgval2,stbval2 mes messg meswidth+ginfo(14) return } if stmode=2 { color strval,stgval,stbval: pos x+stdiff,y:mes messg pos x-stdiff,y:mes messg pos x,y-stdiff:mes messg pos x,y+stdiff:mes messg pos x,y color strval2,stgval2,stbval2 mes messg meswidth+ginfo(14) return } return #global ;---------- モジュールここまで ---------- *main font "HGPゴシックE",30 text 150 emes "かきくけこ" x=stat ;statに文字幅が返ってくる y=(ginfo(23)-ginfo(15)) repeat pos x,y:emes "◇":wait 50 pos x,y:color 255,255,255 boxf ginfo(22),ginfo(23),ginfo(22)+x,ginfo(23)+ginfo(15) color:wait 50 loop



sorry

リンク

2010/3/26(Fri) 17:06:18|NO.31583

 あり さんありがとうございます。 おかげで問題は改善でき大変うれしい限りです。 
今後ともよろしくお願い申し上げます。



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