お知らせ掲示板 | 質問掲示板 | 不具合報告掲示板 | 機能要望掲示板 | 雑談掲示板

  新規投稿 ┃全記事一覧 ┃検索 ┃設定 ┃サポートフォーラムトップ  
17 / 387 ツリー ←次へ | 前へ→

文字列で画面に表示されない文字列を表示させたい ゆう 2022/10/31(月) 1:13
Re:文字列で画面に表示されない文字列を表示させたい ぽてと 2022/11/6(日) 10:03
Re:文字列で画面に表示されない文字列を表示させたい ゆう 2022/11/6(日) 16:05

文字列で画面に表示されない文字列を表示させたい
 ゆう  - 2022/10/31(月) 1:13 -
  
お世話になります、ゆうです。

yu-ris_0487_016を更新しながら使っています。

画面に空のスプライトを作り、文字列を表示しているのですが、
どうしても表示されないスプライトが出て困っています。

以下、スクリプトです。

;1つ目--------------------------------------------------
\BG.CMXYZ(0, 0, 0)
\BG(WHITE, , 0, 0)

$L(11)="お金"
\GOSUB(cin_0001t)

@L(11)=0
\GOSUB(cin_0001g)

$L(12)="日数"
\GOSUB(cin_0002t)

@L(12)=1
\GOSUB(cin_0002g)

;---------------------------------------------------------
;gosub元

#cin_0001t
//文字列。
\SP.ECG(500,50)
\SP.ZXY(-344,-240, 0)
\SP.TXL(0011,L)
\SP.2A(0,256,0)
\SP.GO(cin_0001t)
\RETURN

#cin_0001g
//数字(11〜
\SP.ECG(500,50)
//\SP.ZXY(-344,-280, 0)
\SP.ZXY(-270,-240, 0)
\SP.TXG(0011,L)
\SP.2A(0,256,0)
\SP.GO(cin_0001g)
\RETURN

#cin_0002t
//文字列。
\SP.ECG(500,50)
//\SP.ZXY(8,0,0)
\SP.ZXY(-344,-288, 0)
\SP.TXL(0012,L)
\SP.2A(0,256,0)
\SP.GO(cin_0002t)
\RETURN

#cin_0002g
//数字(12〜
\SP.ECG(500,50)
\SP.ZXY(-344,-288, 200)
\SP.TXG(0012,L)
\SP.2A(0,256,0)
\SP.GO(cin_0002g)
\RETURN

;--------------------------------------------------------------------
一番下、4つ目の#cin_0002gのスクリプト元だけ、何をしても画面に表示されません。
デバッグウィンドウにはあるのですが、画面には表示されないので、お手上げです。

これ以外の3つはきちんと文字列として画面に表示されています。
どうぞ、よろしくお願いいたします。
引用なし
パスワード

Re:文字列で画面に表示されない文字列を表示させた...
 ぽてと  - 2022/11/6(日) 10:03 -
  
ぽてとです。

\SP.TXL命令と\SP.TXG命令の使い方が間違っているようです。
\SP.TXL命令は$L変数を表示する。\SP.TXG命令は$G変数を表示します。
具体的にはcin_0002gは$Gの変数内容を表示するのに、@Lに変数を代入しているため表示されていません。

■各命令の簡単な説明
・\SP.TXL(011,L)
$L(011)の中身を文字フォントLで表示する

・\SP.TXG(011,L)
$G(011)の中身を文字フォントLで表示する

■補足
スプライト命令で文字列を描画する場合は基本的には$Lの変数を利用したほうが良いです。
$Lと$Gの違いをざっくり説明すると下記の通りです。
・$Lはセーブデータ単位で表示する内容を変化させるときに使用
・$Gはゲーム全体(クリア後等で引き継ぐ情報等)で表示する内容を変化させるときに使用

■つまり
今回4つの文字列を描画するのに@L(11)、@L(12)、$L(12)、@L(12)の4変数に代入しています。
$L(11)〜$L(14)の4つに代入しそれぞれを表示するように変更すればよいかと思います。

■サンプル(具体的な記述)
$L(11)="お金"
$L(12)="0"
$L(13)="日数"
$L(14)="1"

#cin_0001t
//文字列。
\SP.ECG(500,50)
\SP.ZXY(-344,-240, 0)
\SP.TXL(0011,L)
\SP.2A(0,256,0)
\SP.GO(cin_0001t)
\RETURN

#cin_0001g
//数字(11〜
\SP.ECG(500,50)
\SP.ZXY(-270,-240, 0)
\SP.TXG(0012,L)
\SP.2A(0,256,0)
\SP.GO(cin_0001g)
\RETURN

#cin_0002t
//文字列。
\SP.ECG(500,50)
\SP.ZXY(-344,-288, 0)
\SP.TXL(0013,L)
\SP.2A(0,256,0)
\SP.GO(cin_0002t)
\RETURN

#cin_0002g
//数字(12〜
\SP.ECG(500,50)
\SP.ZXY(-344,-288, 200)
\SP.TXL(0014,L)
\SP.2A(0,256,0)
\SP.GO(cin_0002g)
\RETURN

■補足2
サンプルは\SP.TXLで表示させていますが必要に応じて\SP.TXGに変更して$G変数を表示させてください。

以上、お役に立てればと思います。
引用なし
パスワード

Re:文字列で画面に表示されない文字列を表示させた...
 ゆう  - 2022/11/6(日) 16:05 -
  
>ぽてとです。
>
>\SP.TXL命令と\SP.TXG命令の使い方が間違っているようです。
>\SP.TXL命令は$L変数を表示する。\SP.TXG命令は$G変数を表示します。
>具体的にはcin_0002gは$Gの変数内容を表示するのに、@Lに変数を代入しているため表示されていません。
>
>■各命令の簡単な説明
>・\SP.TXL(011,L)
>$L(011)の中身を文字フォントLで表示する
>
>・\SP.TXG(011,L)
>$G(011)の中身を文字フォントLで表示する
>
>■補足
>スプライト命令で文字列を描画する場合は基本的には$Lの変数を利用したほうが良いです。
>$Lと$Gの違いをざっくり説明すると下記の通りです。
>・$Lはセーブデータ単位で表示する内容を変化させるときに使用
>・$Gはゲーム全体(クリア後等で引き継ぐ情報等)で表示する内容を変化させるときに使用
>
>■つまり
>今回4つの文字列を描画するのに@L(11)、@L(12)、$L(12)、@L(12)の4変数に代入しています。
>$L(11)〜$L(14)の4つに代入しそれぞれを表示するように変更すればよいかと思います。
>
>■サンプル(具体的な記述)
>$L(11)="お金"
>$L(12)="0"
>$L(13)="日数"
>$L(14)="1"
>
>#cin_0001t
>//文字列。
>\SP.ECG(500,50)
>\SP.ZXY(-344,-240, 0)
>\SP.TXL(0011,L)
>\SP.2A(0,256,0)
>\SP.GO(cin_0001t)
>\RETURN
>
>#cin_0001g
>//数字(11〜
>\SP.ECG(500,50)
>\SP.ZXY(-270,-240, 0)
>\SP.TXG(0012,L)
>\SP.2A(0,256,0)
>\SP.GO(cin_0001g)
>\RETURN
>
>#cin_0002t
>//文字列。
>\SP.ECG(500,50)
>\SP.ZXY(-344,-288, 0)
>\SP.TXL(0013,L)
>\SP.2A(0,256,0)
>\SP.GO(cin_0002t)
>\RETURN
>
>#cin_0002g
>//数字(12〜
>\SP.ECG(500,50)
>\SP.ZXY(-344,-288, 200)
>\SP.TXL(0014,L)
>\SP.2A(0,256,0)
>\SP.GO(cin_0002g)
>\RETURN
>
>■補足2
>サンプルは\SP.TXLで表示させていますが必要に応じて\SP.TXGに変更して$G変数を表示させてください。
>
>以上、お役に立てればと思います。


ぽてと様

返信等いつもありがとうございます。

サンプルスクリプトや詳細な説明のおかげで、文字列変数を使えばいいとわかり、変数の違いもわかりました!
また無事に動きましたので、どなたかの参考になるかもしれないのでスクリプトを書いておきます。


//1つ目----------------------------------------------------------
#a01_001

\BG.CMXYZ(0, 0, 0)
\BG(BLACK, , 0, 0)

//初期化---------------------------

$L(11)="お金"
\GOSUB(cin_0001t)

@L(12)=0
$L(12)="0"
\GOSUB(cin_0001g)

$L(13)="日数"
\GOSUB(cin_0002t)

@L(14)=1
$L(14)="1"
\GOSUB(cin_0002g)
//ここまで-----------------------------

初期化済み。以降確認のためのループ。

#a01_002
//@L(14)に1を足す
@L(14)=@L(14)+1
//↓は過去の掲示板から参考にしました。左文字列変数に右変数を文字列変換していれたもの。
\LET($L(14)=$(@L(14)))

日数が増えています。(確認のため日数のみ増えます)

\GO(a01_002)

//2つ目------------------------------------
#cin_0001t
//文字列。(文字列変数は11〜。10以下は汎用で。)
\SP.ECG(500,50)
\SP.ZXY(-344,-240, 0)
\SP.TXL(0011,L)
\SP.2A(0,256,0)
\SP.GO(cin_0001t)
\RETURN

#cin_0001g
//数字(11〜
\SP.ECG(500,50)
\SP.ZXY(-270,-240, 0)
\SP.TXL(0012,L)
\SP.2A(0,256,0)
\SP.GO(cin_0001g)
\RETURN

#cin_0002t
//文字列。(文字列変数は11〜。10以下は汎用で。)
\SP.ECG(500,50)
//\SP.ZXY(8,0,0)
\SP.ZXY(-344,-288, 0)
\SP.TXL(0013,L)
\SP.2A(0,256,0)
\SP.GO(cin_0002t)
\RETURN

#cin_0002g
//数字(12〜
\SP.ECG(500,50)
\SP.ZXY(-270,-288, 200)
\SP.TXL(0014,L)
\SP.2A(0,256,0)
\SP.GO(cin_0002g)
\RETURN

//ここまで----------------------------------------------

です。ぽてと様、今回は本当にありがとうございました!
引用なし
パスワード

  新規投稿 ┃全記事一覧 ┃検索 ┃設定 ┃サポートフォーラムトップ  
17 / 387 ツリー ←次へ | 前へ→
58,564
(SS)C-BOARD v3.8.1β4 is Free.