Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1170 171 172 173 174 175 176 177 178 179 180 181 182 183 184
次のページ(過去)
返信[1]
親投稿
BGPUT 1,X,Y ってエラーにならないんですか? 引数が少ないような…
0そうだね
プレイ済み
返信[9]
親投稿
てかなんだかんだで投稿って流れて言っちゃうのであまり目にする人は居ないかもなぁ…。なので続きはまた気が向いたときにでも…(ないかも)
0そうだね
プレイ済み
返信[8]
親投稿
11行目の続きです。 (K AND 32)はボタン入力の結果に対してビット演算のANDをしています。ビット演算については知らない人には説明が大変なので省略しますが、この結果、32(Bボタン)が押されている場合は、32、そうで無い場合は0になります。 ただしこれをさらに((K AND 32)>0)としているので、この式により、Bボタンが押されていたら1,そうでなければ0になります。 最後にその結果をさらに2倍した値をDXに入れているので結果、DXの値はBボタンが押されていたら2,押されていなければ0になることになり、この値を移動の際にダッシュする場合に使っています。 今回は1画面に収めるためにこういう書き方をしてしまいましたが、素直に、 IF K AND 32 THEN DX=2 ELSE DX=0 としてしまっても問題ないです。てか、今回でもそれでも入ったかも…
0そうだね
プレイ済み
返信[7]
親投稿
解説も続きます! ここからメインループの中身です。 8:ここにループさせるために用意しておくラベルです。定番ですね。 9:現在の定義番号をNDに待避して新しい定義番号の為の変数Dを用意します。これは定義番号が変わったときだけアニメーションを切り替えるための準備です。 11:ボタンの内容を変数Kに取得しています。この時の引数は省略しているので0になり、ボタンが押している限りはその値が入ります。ボタンの内容を変数に入れるのは定番ですね。 :(コロン)はマルチステートメントといって同じ行に複数の命令を書くときに挟みます。なのでこの行はもう一つ、命令を書いています。 マルチステートメントは便利ですが、あまり1画面に詰め込みすぎるとプログラムは見にくくなるので推奨しません。あくまで見やすさを考えて配分を考えるのがいいと思います。
0そうだね
プレイ済み
返信[6]
親投稿
ぱっと見ですが、SPANIMのところが抜けてますね。たぶん文字が着色されて画面だと見づらくなってしまったんでしょうね。 その部分は、 SPANIM 1,"I",4,D,4,D+1,4,D+2,4,D+3,0 になってます。なので"I"が抜けている感じです。 たぶんそこを直せば大丈夫だと思うのですが、もし変だったら言ってください。ではでは。
0そうだね
プレイ済み
返信[4]
親投稿
この内容に合わせた感じなら22行目辺りに、 IF BUTTON(2) AND 16 && SPCHK(1) == 0 THEN SPSET 1,3352:SPPOS 1,X+12,Y+20 SPANIM 1,"XY",-10,X+12,-16 BEEP 11 ENDIF みたいな感じですかね〜
0そうだね
プレイ済み
返信[3]
親投稿
実装のしかたは色々ありますが、うくじーさんの動作ならどんな感じに書くか載せてみました。 実装方法の一つとして参考にしてみてくださいー。
1そうだね
プレイ済み
返信[4]
親投稿
5:使用するに各変数を初期化してます。 実は本当はD=0でDも初期化しておいた方がいいです。抜けてましたが致命的ではないのでそのままです。 6:キャラクタを表示しています。 管理番号は0から指定出来ますが、このサンプルではなんとなく1を使ってしまいました。管理番号1に対して定義番号500の正面を向いたキャラを割り当ててます。 この時点ではキャラは画面の左上に表示されるのですが、最後のVSYNCの前のSPOFSで位置を指定しているので結果的に始めの位置に登場することになります。なのでこの段階では位置の指定は省略しています。 あとプログラムを追うとわかりますが、この正面を向いたキャラを指定しているのはここだけなので一度でもボタンで動かすとキャラが表面を向くことはありませんー。
0そうだね
プレイ済み
返信[3]
親投稿
共感が思ったより多いんで、ちょっと解説をプラス(^^; まあほんとは質問された方が答えやすいんだけど、質問がないって事は、この辺りはだいぶマスターされてきてるのかなって感じるところですね。 まずループに入るまでの説明。 1:ほとんどお約束の画面を初期化するための命令ですね。 2〜3:背景(BG)部分を描画しています。BGFILLはBGの範囲をキャラで埋める命令です。レイヤー0番(第1引数)に対して上部分を空。下部分を草で埋めてます。埋める範囲は第2引数からでX位置, Y位置, Xサイズ, Yサイズでの指定になりますが、BG画面は初期では25×15の画面サイズをもっているので、その部分を埋めるようにしています。
0そうだね
プレイ済み
返信[21]
親投稿
SPANIMが無くてもアニメーションしないだけなのでとりあえずコメントアウトして他の動作を見てみるのもいいかもです。 というか、SPSETも設定内容が正しくないと思うのでちゃんと表示されないのではないかと思います。 SPSETは正しければそれだけで画面の左上にキャラクタされるので、DIRECTモードの方でその行だけ打ってちゃんと表示されるか調べてみるといいと思いますよ。
0そうだね
プレイ済み
返信[19]
親投稿
けいさんのいうようにSPSETで出したキャラを動かす場合、SPANIMで指定する第1引数は同一になります。なので違うという時点でおかしい感じです。 命令マニュアルをしっかり調べて使い方を調べた方がいいですよ。他の人がSPAMINをどう使っているかなども他の投稿でも話題やサンプルが出てるので参考になると思いますよ。
0そうだね
プレイ済み
返信[4]
親投稿
たぶん10行目が提供されたサンプルと違うんでしょうねー…
1そうだね
プレイ済み
返信[5]
親投稿
プログラムは上から下に走っていて最後まで行くと終わってしまいます。 上記のみなさんのサンプルではAボタンが押されるまでのループを作っているので、そこで処理は一旦止まる(正確にはループしている)感じですが、Aボタンを押したら下に動き出して数字を表示したら終わっちゃいます。 なので何度も繰り返したい場合は、その後もループが続くようにしないといけないです。ちなみにキー入力待ちはほぼ大丈夫ですがメインループにはなるべくVSYNCを挟んだ方がいいです。ということで、感じ的には、たくやさんのをベースにするとすると、 @MAIN REPEAT:UNTIL BUTTON(1) AND 16 ? RND(100) VSYNC GOTO @MAIN みたいな感じになります。
0そうだね
プレイ済み
返信[2]
親投稿
とりあえずちょっとだけプログラムの補足。気が向いたら増やしていくかもしれないけど、まず変数の説明のみ。 GD:地面の位置にするY座標値 X,Y:キャラクタの座標 AY:キャラクタのY加速度(ジャンプ用) ND:前回の移動方向によるキャラクタ定義番号(トップ) D:現在の移動方向によるキャラクタ定義番号 ※NDとDは0の時はキャラクタ定義番号ではなくアニメなし K:ボタン状態(入力) DX:ダッシュの速度(ダッシュじゃない時は0) てな感じです。
1そうだね
プレイ済み
返信[7]
親投稿
文法(命令)の使い方は、命令のところで?ボタンを押すと読めるヘルプが便利ですよ。 例えばCLEAR命令のところで押すとこの命令はDIRECTモード専用と書いてあるのでエラーになっているのだとわかります。(つまり不要) 他にもエラーが出たら、とりあえずその行にある命令を調べて使い方を間違ってないか見てみるのがいいと思います。
1そうだね
プレイ済み
返信[1]
親投稿
ソースです。1画面ですし公開キーは載せる予定はないのでご了承くださいー。 コメントつけてないので、質問などは(あったら)答えます。
2そうだね
プレイ済み
投稿
ただのサンプルです。 以前、質問に対する回答としてのせたやつですが、キャラクターの移動やジャンプをさせてみたい初心者は多そうなので、見つけやすいように再度投稿しました。 ソースは次に載せます。
23そうだね
プレイ済み
返信[2]
親投稿
動作させてるわけじゃ無いので想像ですが、PRINTした座標に前の描画が残ってて変な値に見えてるんじゃないですかね? PRINT TX;" "のようにして後ろにスペースをいれて前のを消すようにすれば正確な値になってるかもですよ。
0そうだね
プレイ済み
返信[5]
親投稿
あと始めに載せた画面の方がシンプルだったのにあとの方はさらに複雑になってますねー。 とりあえず始めに載せた方のプログラムが正常に動く状態になってから色々と付け足していった方がいいと思いますよ。その方が不具合があったときの特定もしやすくなりますしね。
0そうだね
プレイ済み
返信[3]
親投稿
書き込みが前後しちゃいましたね。エラーが出たら一つ一つ潰していきましょう。エラー時にエラー行が出てますよね? ちなみにエラーが出た行でマルチステートメント(:)で1行にしている行はとりあえず2行にするとエラー時に行番号が変わるのでどっちが原因か調べやすくなりますよ。
1そうだね
プレイ済み