Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
114 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34184
次のページ(過去)
返信[6]
親投稿
11: WHILEに対応しているWENDですね。メインループの範囲です。 14: 8行目のGOSUBで呼び出されるサブルーチン用のラベルです。 15: SPSETでコウモリの定義番号(1036)のスプライトを表示しています。 この時に、OUTを使う事でスプライト管理番号は指定しません。この記述の場合、自動的に空いている(SPSETされてない)スプライト管理番号に割り当ててもらえます。そして、割り当てた管理番号はOUT先の変数Nに返ってきます。 以降、このNを使えば、今回表示したスプライトに対する処理を行う事が出来ます。確認用に?(PRINT)命令でSPSETしたこのNの値を表示したので、どのスプライト管理番号が割り当てられたかがわかると思います。
0そうだね
プレイ済み
返信[5]
親投稿
9: この行がSPFUNCを使う場合のキーとなる命令です。 この呼び出しをすることで、SPFUNCされた全てのスプライトのSPFUNCで設定されたプログラムが呼び出されます。 例えばスプライトが3体出ていて、それら全てにSPFUNCしていた場合は、この行(命令)でそれぞれのスプライトに対してSPFUNCのプログラムの呼び出しが行われます。(3体だった場合は3回) SPFUNCされたスプライトが無い場合(まだ出てないときなど)は何も行われません。具体的なSPFUNCで呼び出されるプログラムは@SPGOのサブルーチンで設定されるので@SPFCになりますが、その時にまた説明します。 10: メインループには欠かせないVSYNC命令です。ほとんどお約束みたいな感じです。
0そうだね
プレイ済み
返信[4]
親投稿
7: ここからメインループです。プログラム動作中は、ここからWENDの11行目までを永久(TRUE)ループします。 8: ここが一定周期でキャラを表示させる為の処理になります。 MAINCNTというシステム変数は、自動的に毎フレーム(VSYNC)+1されていくカウンタ用の変数です。今回はこの変数を使って時間を計測しています。 MODは割り算の余りを求める命令です。なので、MAINCNTを数字で割ったときに余りが0になるタイミングがちょうどその周期での実行タイミングになります。 今回は60*5(60フレームが1秒なので5秒)毎に登場させています。登場処理自体はGOSUB命令で@SPGOラベル先のプログラムに任せています。 (GOSUBなのでRETURNで戻ってくる)
0そうだね
プレイ済み
返信[3]
親投稿
と言うことで、コメント行はスキップしますが、ほぼ全ての行の解説をします。 1: お約束の画面初期化命令です。僕のプログラムはほとんどこの命令から始まっていると思います。 3〜4: 背景用のBGを描画&アニメーションしています。 無制限横スクロールっぽい表現をする為にBGSCREEN命令で全画面より横1ブロックだけ大きなBGサイズにしてます。そして、そこにBGFILLで木の絵を敷き詰めています。 BGANIM命令ではBGを無限スクロールさせています。 "XY+"と指定する事で、BGの位置を初期値から相対的に移動させることが出来ます。そして、-60で60フレーム(1秒間)かけての線形補間移動で16ドット(1ブロック)分スクロールさせています。 スクロール後は、1フレーム(つまり瞬間)で(0,0)の座標に戻すことで無限スクロールにみえるように処理しています。
0そうだね
プレイ済み
返信[2]
親投稿
と、その前に内容の解説です。 実行すると一定周期でキャラ(コウモリ)が左から右に向かって飛びます。コウモリは画面外になると消えます。 一度にたくさんのキャラが出ることになるので空いているスプライト管理番号を使って登場させています。一度に512体(スプライト最大数)を超えるとエラーになると思いますが、内容的にそんなにたくさん出ないので問題ないです。 (周期や速度を変更してたくさん出るようにしたらエラー発生するかも) あくまでサンプルなので動かしたら見ていることしか出来ません…。ゲームを期待していた人はすいません。 とにかくたくさんのキャラをSPFUNCなる命令も使って出してみたいなーって人には参考になるかも? 程度の内容ではありますが、よろしくお願いします。
0そうだね
プレイ済み
返信[1]
親投稿
プログラムはこんな感じです。 ……実は他の人の投稿に参考でアップしたプログラムを少しだけいじった感じの使い回しです…(^^; 内容的には、 ・一定周期での処理の実行 ・SPANIMのアニメーション ・SPFUNCでの後始末 辺りが参考になるんじゃないかと思います。 次から各行の解説をしていきます。
0そうだね
プレイ済み
プレイ日記
ただのサンプルです。 最近少し話題に出てきたSPFUNCも使ってます。 またしばらく書き込めなくなるかもなので、久しぶりに解説つきサンプル投稿をしてみようかと思いました。
15そうだね
プレイ済み
返信[15]
親投稿
ロード入れたらエラーになるということなので、とりあえずロード付近のプログラムも載せてみるのがいいかと…
1そうだね
プレイ済み
返信[2]
親投稿
初心者かな? 命令的にはRNDやSTR$などの命令が該当すると思います。 命令について知りたいときは、PCが使えるならプチコン3号公式ページの命令表を一通り眺めてみるのがいいと思います。それほど多くもないですし、細かい使い方までは覚えなくても眺めてどんな機能があるのかを知っておくと、いざ何か作ろうとしたときに役に立ちますよ。 命令名がわかっていて使い方を忘れてしまった場合は、プチコン3号には命令からヘルプを表示する機能があるので、それがとても役に立つと思います。
1そうだね
プレイ済み
返信[20]
親投稿
なるほど〜。背景増えてるんですね。僕は適当に検索しただけだったので…、笑 BGは16×16がベースになるので、スプライトやグラフィックはそれに合わせて調整する必要があります。 ただBG自体を少し動かす的な感じでよければ、BGOPS 0,0,4(かな?-4かな?)とかすればBGのY座標を全体的にずらすことは出来ます。(実際はスクロールのために使う事が多いですが) という感じで調整していくしかないかなと思います。
0そうだね
プレイ済み
返信[18]
親投稿
棒バトの動画を見てみましたが、なるほどスピード感がありますね。 (って見た動画がイメージと合ってるかはわかりませんが…) 棒バトの動画にはあまり背景は無かったですし、別に必ずしもBGが無ければスクロールできないというわけではないので無くても大丈夫だとは思いますよ。 ただその分うまく雰囲気を再現しないとスクロール感を出すのが難しくなる可能性はありますが、とりあえずプログラム上は必ず必要というわけではないです。 ……という感じですが頑張ってください!
0そうだね
プレイ済み
返信[11]
親投稿
ふむふむ。一つ確認したいんですが、OPTION STRICTを使ってる感じですか? エラー的には二重定義なんですよね。
0そうだね
プレイ済み
返信[16]
親投稿
とりあえずBGは使ってないようなので最後に書いたSPLINKでスプライトの動きを同期させるやり方がいちばん近いのかなぁ? って思ったりしますが、イメージがあってるかどうかの問題があるので、その辺はまだ不明…。 ちなみにSPLINKを使う場合、透明のスプライトに対してSPLINKすることで、その透明スプライトを動かすとそれにリンクされているスプライトを全て動かすことが出来ます。つまり画面全体が動いているに近い動作になるわけですね。 まあSPLINKを使わなくても出現しているスプライトを全て一定方向に動かすようにすればスクロールしている風に感じはします。 僕のサンプルではメインのキャラはSPLINKに乗せてないけど、全部乗せればダミーである透明キャラを動かすことがカメラを動かすことに近い動作になります。 ただBGがスクロールしないと動いた感が薄いかもですが…。
0そうだね
プレイ済み
返信[13]
親投稿
あ、直前の投稿はプログラムを見る前のものです。 ちょっとプログラムを見てみて気づいた事があったらまたコメントしますね。 ではでは。
0そうだね
プレイ済み
返信[12]
親投稿
おお…。なんとBGを使わないという衝撃的事実が…。BGを使わずにスプライトの動きがスクロールしている風?みたいなイメージですかね? 添付したプログラムはBGスクロールしていますが、その中の人に関してはスプライトなので、この部分だけの動きなら目的に近い? ちなみにこれはSPLINKを使う事でスプライトの動きをBGに追従させるような処理ですが、BGが無くても似たような動きには出来ます。 と言うことなのかなぁ?
0そうだね
プレイ済み
返信[7]
親投稿
それともキャラクターは中央固定で必ず背景の方がスクロールするパターンですかね? 色んなパターンがありますが、どれもやることは出来るので、イメージが掴めればと言う感じですね…。
0そうだね
プレイ済み
返信[6]
親投稿
いえいえ。なんかうまくイメージがわからなくてすいません…。 基本的には出来る話だと思うんですが、イメージが掴みきれてなくてうまく返事が出来ません…。 例えば普通のスクロールみたいに画面の1/3まで進んだらBGがスクロールして移動出来るというのは始めに僕が書いたイメージです。 それに対して初代ゼルダ風というのは、基本画面は固定ですが、キャラクタが一番端まで行くと、画面全体がスクロール(その時にキャラも動く)して、その先の画面が1画面分現れます。 と言うことなのかなと思ったのですが、それもちょっと違うのかもしれない?とも思ったりもしてイマイチ自信が持てません。 とりあえずBGをスクロールするにはBGANIMという命令があるので、それを使うとスクロール自体は簡単に行う事が出来ます。 と書いていたらまた書き込みが…。やっぱり始めのイメージの方が近いのかな…?
0そうだね
プレイ済み
返信[3]
親投稿
初代ゼルダの伝説みたいなスクロールの事ですか?
0そうだね
プレイ済み
返信[5]
親投稿
いえいえー。 ちなみにSPANIMに色んな方法があるのは、たぶんだけど 直接:動きが完全に決まっているパターンのアニメーション 配列:動きを動的に変化させたい場合のアニメーション DATA:動きのパターンは決まっているけど、その中から切り替えて選びたい場合のアニメーション みたいな感じかなと思います。ではでは〜。
0そうだね
プレイ済み
返信[26]
親投稿
@SPMOVEの中でSPOFSやSPCHKをしているようですが、それだと出現した瞬間しか表示されないと思いますし、またもしこの@SPMOVEがメインループで毎回呼び出された場合は、毎回SPANIMをする事になるのでおかしな動作になってしまいます。
1そうだね
プレイ済み