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


HSPTV!掲示板


未解決 解決 停止 削除要請

2019
0223
窓辺ゆっくり文字を並べる(テストスクリプト...)6未解決


窓辺ゆっくり

リンク

2019/2/23(Sat) 19:25:34|NO.86651

キーを押すと文字を表示させるプログラムを作ったのですが
*command_main

getkey a,65
getkey b,66
getkey c,67
getkey d,68
await 20

if a=1:gosub*MA
if b=1:gosub*MB
if c=1:GOTO*MC
if d=1:goto*MD
goto*command_main


*MA


mes "A"
await 50
goto*command_main
stop
*MB


mes "B"
await 50
goto*command_main

*MC

mes"C"
*MD

mes"D"

このスクリプトの場合、たとえばAキーを押した後Bキーを押したとすると改行してしまいます....(´・ω・`)

改行せずに横に文字を並べさせるにはどうすればいいでしょうか....?



この記事に返信する


daichan

リンク

2019/2/23(Sat) 19:42:01|NO.86652

スクリプトエディタに入力されたmesにカーソルを当ててキーボードのF1キーを押してください



𝙿𝚘𝚗𝚢𝚘

リンク

2019/2/23(Sat) 19:53:43|NO.86653

文字列変数をつかいます。変数xが存在するとします。
この時、「x = x + "A"」の場合は変数Xに文字Aを追加するという意味になります。
「x = x + "ABC"」の場合は変数Xに文字ABCを追加するという意味になります。
mesを使い変数を出力できることを理解すれば、できます。

変数をリアルタイムに出力するにはrepeat〜loopが必要となります。
あ、awaitは絶対に忘れないように(*'▽')



沢渡

リンク

2019/2/24(Sun) 00:03:53|NO.86657

gosubで飛んだ先からgotoで戻るのは「やってはいけないこと」です。
(何度も繰り返しているとそのうちエラーになります)
gosubで飛んだ先からは、必ずreturnで戻るようにしてください。

(参考までに、個人的にgotoはここぞという時に使う『必殺技』という位置づけで、
通常技のようにポンポン使うと、流れの掴みにくいスパゲッティコードになるという考え。
基本的には、ループはrepeat〜loopで、他ルーチンへのジャンプはgosub〜returnでというのが
自分内でのルールです)



Kain

リンク

2019/2/24(Sun) 10:09:39|NO.86662

勝手ながらソースをいじらせてもらいました
沢渡さんの言う通り、gosubから移動したラベルはreturnで戻るようにしないとエラーになってしまいます。



mes_info="" *command_main repeat redraw 0 color 255,255,255:boxf color pos 0,0 mes mes_info;メッセージを表示 redraw 1 getkey a,65 getkey b,66 getkey c,67 getkey d,68 await 20 if a=1:gosub*MA if b=1:gosub*MB if c=1:gosub*MC if d=1:gosub*MD loop *MA mes_info=mes_info+"A";「A」を横に追加みたいな await 50 return stop *MB mes_info=mes_info+"B" await 50 return stop *MC mes_info=mes_info+"C" await 50 return stop *MD mes_info=mes_info+"D" await 50 return stop



Mc.H

リンク

2019/2/24(Sun) 11:01:04|NO.86663

mes の 改行スイッチを使ったらどうでしょうか


*command_main getkey a,65 getkey b,66 getkey c,67 getkey d,68 await 20 if a=1:gosub*MA if b=1:gosub*MB if c=1:gosub*MC if d=1:gosub*MD goto*command_main stop *MA mes "A",1 await 50 return *MB mes "B",1 await 50 return *MC mes "C",1 await 50 return *MD mes "D",1 await 50 return



Densya

リンク

2019/2/24(Sun) 13:25:25|NO.86681

mes命令の改行スイッチを使ったほうが良いと思います。


mes "あ",1 mes "い",0 // 1 だと改行しない // 0 だと改行する //未指定だと自動で 0 になる



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