【はじめてのプチコン】サブルーチン解説(DISPSC,DISPHS,DISPN) | りょうのゲーム塾

りょうのゲーム塾

再開、準備中。

$りょうちゃんのゲーム企画塾

@DISPHS(DISPlay Hi-Score)はハイスコアの表示位置を LOCATE 文で指定した後、変数Nに得点を代入して @DISPN(DISPlay Number)へ進みます。

@DISPSC(DISPlay SCore)はスコアの表示位置を LOCATE 文で指定した後、変数Nに得点を代入して @DISPN(DISPlay Number)へ進みます。

@DISPN(DISPlay Number)は変数Nに代入された値を得点として文字列に変換して表示します。

このときの変換とは数値を7桁の数字列に変換しています。
数値は実際には10倍で表示されているので注意が必要です。
一応、今回の得点は最小値が10点にしようと思っています。

それでは、変数Nの値が1の場合の変換をみてみます。

N$=STR$(N)

ここで変数Nの値は1です。
STR$関数は数値を数字列に変換しています。
よって変数N$の値は

"1"

です。
MID$関数の1番目の引数は、

"00000"+N$+"0"

なのでその結果は。。。

"0000010"

となります。
MID$の2番目の引数は、

LEN(N$)-1

です。
これは変数N$の文字列の長さを表しますから、
今回は1となります。

MID$関数の意味は各引数をX,Y,Zと置き換えると、

MID$(X,Y,Z)の意味は、

Xの文字列のY桁目からZ文字分を切り取るという意味なので。。。

"0000010"の0桁目から7文字を切り取るということになります。

先頭が0桁目なのでそこから7文字とすると結果は。。。

"0000010"となります。


なんだ、何も変わってないと思っている方は同じように今度は変数Nの値を123にしてやってみましょう。

N=123 なので
N$=STR$(N)は"123"です。

1番目の引数は。。。

"00000"+"123"+"0" → "000001230"となります。

LEN(N$)-1 は文字列の長さが3なので1引いて2となります。

要するに"000001230"の2桁目から7文字分ということですね。

000001230
↑ここが0桁目ですから。。。

000001230
__↑ここが2桁目ですね。ここから7文字なので。。。

0001230という結果になります。

得点を10倍した値の先頭を0で埋めた7桁の数字列ということです。
これを表示し、もとへ戻ります。