投稿
Daisuke 0909daiki09
プチコン初心者です。一画面プログラムを調べて書き込んでみたんですが、10行目から後が分かりません… 10行目まではランダムで255個のスプライト定義。←これであってますよね?
2そうだね
プレイ済み
返信[1]
親投稿
あきと SideBurnsM
あってます。 「調べて書き込んでみた」の意味はよく分からないですけど。
0そうだね
プレイ済み
返信[2]
親投稿
Daisuke 0909daiki09
あきとさん»すみません。国語が苦手なので…言葉が変になってしまいました… 正しくは 調べたプログラムを写しました。 です。
0そうだね
プレイ済み
返信[3]
親投稿
Daisuke 0909daiki09
12行目は分かりました!255個のスプライトの中からランダムで一個動かすんですね!
0そうだね
プレイ済み
返信[4]
親投稿
Daisuke 0909daiki09
じっくり考えたら13~15行目以外は分かりました。
0そうだね
プレイ済み
返信[5]
親投稿
あきと SideBurnsM
なるほどそういう事だったんですね。 ダウンロードした1画面プログラムにとりゅふさんが何か追加で書き込んだのかと思ってしまいました。 ところでこのソースコード結構前のではないですか?今のバージョンだと途中でエラーがでるかも。
0そうだね
プレイ済み
返信[6]
親投稿
Daisuke 0909daiki09
はい…エラーが出ます…原因は分かりません…
0そうだね
プレイ済み
返信[7]
親投稿
あきと SideBurnsM
直すためには12行目のあたりを SP=RND(255) IF SPUSED(SP)==TRUE THEN SPANIM SP,"XY",RND(304),RND(224)+240 とすると動くようになると思います。(未確認ですが) エラーの理由はプチコンのバージョンアップでスプライトの使用状況のチェックが厳しくなったからです。最初はSPSETで有効にしてなくてもいきなりSPOFSとか使えたのですが、途中のバージョンアップでエラーがでるようになりました。
0そうだね
プレイ済み
返信[8]
親投稿
Daisuke 0909daiki09
エラーが出なくなりました!ありがとうございます!
0そうだね
プレイ済み
返信[9]
親投稿
ツララ LongIceSword
プログラムの流れを考えてみるときは引数とかをザックリ消して単純化して、どの命令がどんな順番で使われているかを頭に処理番号を振ってみると分りやすいかもですね。 SAVEしておけばどんなに変更加えてもLOADで戻せますし。 注意しとかないといけないのは「=」や「?」も代入やPRINT命令の短縮なのと、IF文などで使われている条件式は一つ前の処理で、例えば15行目のは (適当な条件判断用の変数)=H!=-1 みたく一つの変数として計算し直す処理を足してやると、より分りやすくなるかもですね。 そういえばプチコン3号は編集モードだと構文解釈で自動的に文字の色を変えてくれるのでかなり分りやすくなってますけど、mk2は命令を熟知してないと只の変数か命令なのか分からなくて、他の人のプログラムを見るのも大変だったなぁ(遠い目)。
0そうだね
プレイ済み
返信[10]
親投稿
Daisuke 0909daiki09
ツララさん»なるほど!足し算や引き算をしている変数とは別に変数を作ってその変数に足し算や引き算をしている変数を入れる方法だと初心者の僕でも分かりやすそうです!ありがとうございます!
0そうだね
プレイ済み
返信[11]
親投稿
ツララ LongIceSword
ある程度アルゴリズムが固まってくれば、この変数は他の式に使い回ししないから式に置き換えて省略しても問題無いなってのが分かってくるんですけど、勉強中なら極力省略しない方がいいですよね。 ちょっと前にnatto-さんのトピックでとりゅふさんが質問されていた A=ABS(A-(B==1)*((A>0)+(!A*2))+(B==2)) MOD 3 っていう式も短縮しないで書くと IF B==1 THEN IF A>0 THEN A=A-1 ELSE A=A-2 ENDIF ENDIF IF B==2 THEN A=A+1 A=ABS(A) A=A MOD 3 という複数の処理に分解して書けますよん。(「A=」という代入処理が何回も出て来るのに注目してみてね)
0そうだね
プレイ済み
返信[12]
親投稿
Daisuke 0909daiki09
この前ツララさんが書いたプログラムを分解するとそんな感じになるんですか…僕は難しくて分解する事すら出来なかったです…
0そうだね
プレイ済み