GameMaker 日本語掲示板

どこがおかしいのか教えてくださいm(__)m

5 コメント
views
16 フォロー

serifu=ord("abcdefghijklm");
count=1;
display=1;

function moji(){
if(count<=13){
string_copy(serifu,display,1)
count+=1
display+=1
}
}

draw_text(200,200,moji())

文字を一文字ずつ表示されるように作ったつもりなんですが、これを実行すると実行画面に"undefind"と表示されるのですがどうすればいいですか?

qaws
作成: 2023/12/09 (土) 01:39:18
最終更新: 2023/12/09 (土) 01:48:03
通報 ...
1

undefinedと表示されるのは、moji()が何も返さない関数だからだと思います。
draw_text(200,200,moji()) で何かを表示するにはmoji()が何らかの結果を返す必要があります。

それとは違う問題になるのですが
serifu=ord("abcdefghijklm"); の部分で、
serifuの内容を表示するとどうなるか確認するといいと思います。
(ord()は渡した1文字の文字コードを返す関数です)

4

なるほど....ありがとうございます!!

2

ーーーここは作成イベントであらかじめ製作しておくものーーー
serifu = "abcdefghijklm"
count=1;
display=1;
serifu2 = 0;

ーーーここから先をGUI描画でやるーーー
if(count<=13)
{
serifu2 = string_copy(serifu,1,display);//string_copy(表示したいもの,何文字目から,何文字目まで);

draw_text(200,200,string(serifu2));//string関数は、文字列として表示する場合に使用。

count   += 1;
display += 1;
}
else{//elseは上記のif文が当てはまらなかった場合。
//ゲームメーカーは、表示しつづけないと消えてしまう。なので13以上になった場合はここで表示し続ける。
draw_text(200,200,string(serifu2));
}

ーーーーーーーーーーーー
恐らく想定しているであろう処理に直してみました。
これで1フレームずつ文字を表示し、最終的にはすべての文が表示しつづけられるコードになっているはずです。
functionは後々serifuに違う文字を代入した場合に使いまわせるように定義したかったのかもしれませんが多少複雑な書き方が必要になるので省略しました。

5

正に作りたかった処理です!!!!ありがとうございます!!!!

3

asaさん、lizu さんありがとうございました!!解決できました!!😆