投稿
l-oxygen_k KOKO929292
このコードを短縮したいのですが、どうすればいいのですか?
2そうだね
プレイ済み
返信[1]
親投稿
l-oxygen_k KOKO929292
実行結果は画像の通りです。 オリジナルグラフィックを使ってるのでデフォルトのスプライトとは違います。
0そうだね
プレイ済み
返信[2]
親投稿
てっく tekpro
二重ループを活用すれば短縮できそうですね 二重ループとはFOR〜NEXTの中に別のFOR〜NEXTを入れて効率よくループする方法です
0そうだね
プレイ済み
返信[3]
親投稿
Godot orz_127
FOR~NEXTの処理は、ほぼ同じように見えます。 それぞれの異なる部分を把握してください。 次にDEFを使って一つのFOR~NEXT分の処理を命令にします。 先程把握した異なる部分は命令の引数として渡されるものとして命令内の処理は渡された値を使うように調整します。 こんな感じで如何でしょうか?
0そうだね
プレイ済み
返信[4]
親投稿
まげ MAGE_LOVEMARINE
変数Iから座標を割り出す方法です。REM文は、少しだけ高度なX座標の求め方です。 ただ場合によっては、てっくさんの方法が有効なこともありますよ。
0そうだね
プレイ済み
返信[5]
親投稿
まげさんの回答が一番シンプルかな。 僕の場合はXとYはすぐ使うので変数にいれずにMODとDIVを使って、 SPOFS I,(I MOD3)*100+20,(I DIV 3)*60 とやるかもですね。ただ上記の命令が1行に収まらない長さだったら一度変数に入れてからにしますね。
0そうだね
プレイ済み
返信[6]
親投稿
まげ MAGE_LOVEMARINE
ちなみに、3、4、5行目を消して、6行目を SPOFS I,(I MOD 3)*100+20,FLOOR(I/3)*60 に代えると、より短くなります。 あと、コメントが時間差になっちゃいましたが、同じ処理を何度も行う場合、Godotさんのおっしゃる方法でまとめると、プログラムがグッと短くなりますね。ちょっとムズカしいですけど(^^;)。
0そうだね
プレイ済み
返信[7]
親投稿
まげ MAGE_LOVEMARINE
あ〜、DIV忘れてました(^^;)。ひとつの方法で解決すると、他の方法を模索しなくなっちゃうのは、悪いクセです。反省…。(でもって、また時間差…)
0そうだね
プレイ済み
返信[8]
親投稿
皆さん頭いいですね
0そうだね
未プレイ
返信[9]
親投稿
l-oxygen_k KOKO929292
皆さんありがとうございます! 現在まげsの方法で試してます…
1そうだね
プレイ済み
返信[10]
親投稿
l-oxygen_k KOKO929292
解決しました!!
1そうだね
プレイ済み