Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
118 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38184
次のページ(過去)
返信[17]
親投稿
使い慣れてないコマンドのテストはダイレクトモードでやってみるのもいいですよ。 さっきのPRINT分もダイレクトモードで直接打てば結果が表示されますし。 ただBG表示されてないといけないんで、ちょっと文字が見にくくなるかもしれませんけどね…
0そうだね
プレイ済み
返信[14]
親投稿
PRINT BGGET(0,7,12) とするとBGGET命令で取得した値をPRINT(プリント)で画面に表示することが出来ます。 ""で囲ってしまうと、その囲った内容の文字列(テキスト)が表示されるだけですよ〜
0そうだね
プレイ済み
返信[12]
親投稿
そこに書いても駄目ですよ。それがエラーになる理由がわからないとちょっと厳しいかもしれませんね…。 命令を続けて1行に書くときは:(コロン)で繋ぐ必要があります。ただその場合でも上記の書き方だとBGGETの戻り値を処理してないので、?(PRINT)や変数などを使って戻ってきた値を処理する必要があります。 僕の書いた ?BGGET(0,7,12) はその位置のBGキャラ番号をPRINTする為の命令です。
0そうだね
プレイ済み
返信[8]
親投稿
578は47行目でBGPUTしているBGキャラ番号ですよ。この番号が何の絵だったかは覚えてませんが、絵の番号のことです。
0そうだね
プレイ済み
返信[5]
親投稿
ちなみにBG(ブロック)座標というのは、BGPUTなどで指定している場所と同一です。なので、例えば47行目でBGPUTしている場所の場合は、 ?BGGET(0,7,12) とすれば、578と返ってきます。この場合はBG座標で指定しているのでフラグは指定していません。
0そうだね
プレイ済み
返信[4]
親投稿
BGとの当たり判定に困ってる感じですね。 BGはスプライトと違って、それ自体に当たり判定がつくわけではありませんので、自分でその位置にあるBGを調べて判定する必要があります。 レイヤーはBGPUTなどでBGを配置している時にも指定しているはずです。それが自分の置いたレイヤーです。なので、そのレイヤーに対しての位置を指定して、そこにあるキャラ番号を取得して、その番号によって当たりかどうか判定するわけです。 フラグは指定しなかったり0にした場合は、BG(ブロック)座標での指定になります。BGキャラは16×16ドットで構成されているので、通常スプライトの座標からBG座標にするには16で割る必要があります。ただフラグを指定するとこの16で割らなくてもよくなるのでスプライトの位置などからBG当たり判定する場合はフラグを指定するのが便利です。
0そうだね
プレイ済み
返信[3]
親投稿
ループ用のカウンタとしてはプチコンではMAINCNTというのが用意されていて、これは垂直同期(VSYNC)毎に自動的に+1されるので、これを使うのも便利ですよ。 使い方はスーさんの回答のように、このMAINCNTを値で割ってあまりが0の時に処理するとかすると、タイミングを変えられます。 IF MAINCNT MOD 5 == 0 THEN みたいな感じですね。
1そうだね
プレイ済み
返信[7]
親投稿
DIALOG””はおそらくボタンウエイト代わりに使ってるのかなと思いますが、ちょっと違和感はありますね。 ただそれはいいとしても、やっぱりIFは誰が見ても問題があるというかおかしいと思われるので、その辺はちゃんと理解した方が良さそうですね。 IFはIF 式 THENという形式で、式の結果によって分岐する命令です。なので、式の部分が0>1というのは普通じゃ考えられないというかIF(もし)0>1(0が1より大きい)THEN(ならば)という明らかに矛盾した判定をしているので絶対に成立しないのです。(絶対に成立しない式として書いている意図なら正しいですが) と言うことで、色々と大変だとは思いますが、頑張ってください!
1そうだね
プレイ済み
返信[12]
親投稿
REPEATで行っている処理とVSYNCは完全に等価じゃないと思いますし、なんとなく勘違いをしているような気がします。 VSYNCは垂直同期をとる命令で、それがたまたま?1/60秒周期なわけで1/60秒のウエイトをする命令ではないですしね。
1そうだね
プレイ済み
返信[2]
親投稿
ラベルの変数の中身を変更する事でプログラムで飛び先を変えられるのが大きな利点です。あまさとさんのいう「動的」ってやつです。 ただ機能をどう生かすかはプログラマの創意工夫な部分もあります。意味を見いだすのもまたプログラマの工夫とも言えますし色々考えてみるのがいいと思いますよ。
1そうだね
プレイ済み
返信[8]
親投稿
配列 便利 覚える お得!
1そうだね
プレイ済み
返信[2]
親投稿
なぜ IF 0>1 THEN で判定ができると思ったのかが知りたい…。いや、どう勘違いしたのか知ることで、なにかわかるかもしれないという純粋な興味です。
4そうだね
プレイ済み
返信[9]
親投稿
何故(動かない)の理由だけなら簡単。解説は他の人が色々書いてるんで省略。 今のプログラムは、 STICK命令は、スティックの傾けた方向を-1〜1の範囲で取得する命令。 STICKで取得した値(-1〜1)をスプライトの座標として設定。 と言うことでスプライトの座標は左上から±1ドットの位置が最大になる。ただしオワたずさんの言われるように誤差があるので、実際は動くようには見えないぐらいの位置範囲しかない。 って事です。
1そうだね
プレイ済み
返信[2]
親投稿
みむ*mimさんと同感です。 とくにスクリーンショットの49行目がBGGETの途中になっている感じですが、コード上、そこにBGGETを入れる意味があるようには感じないので、イマイチどうしたいのかがわかりにくい感じがありますね…。 命令の使い方だけなら教えられますが、それで意味があるのかもわからず…。 BGGET命令自体はヘルプでも調べられるので、そのヘルプ文章でわからない事があれば具体的に聞いた方がいいかもしれません。
3そうだね
プレイ済み
返信[10]
親投稿
ん? VSYNCを使ってないプログラムなのでちょっと意味がわかってません…。 すいません。
0そうだね
プレイ済み
返信[7]
親投稿
普通に使う分にはそんなに難しくないですよ。質問などがあれば答えますし…。 ただDATAでやる場合も前に投稿したのでリンクを書いておきますね。 日付:2014/12/19 BGをREAD,DATAを使ってプログラムで配置するサンプルです。 https://miiverse.nintendo.net/posts/AYIHAAAEAADHVHhkXOo6ng
0そうだね
プレイ済み
返信[15]
親投稿
大抵の関数はOUTを使った命令にすることも出来るみたいですね。 ただまあ関数の方が記述がわかりやすい気もするので、あまり使うこともない書き方かもしれませんね。
1そうだね
プレイ済み
返信[5]
親投稿
あああああああああ!さんも言われているように()をつけるのは計算上の優先度の問題ですね。優先度に問題がないケースでは()をつけなくても大丈夫ですし。 ちなみにスクリーンショットのプログラムでは()を外しても影響はないと思います。(同じ結果) 順番を詳しく知りたい場合、プチコンの説明書のBASIC基本仕様(だったかな?)の中に演算子優先順位というのがあるので、それを見ると計算される順番がわかりますよ。
2そうだね
プレイ済み
返信[2]
親投稿
関数じゃなくて式ですね
1そうだね
プレイ済み
返信[3]
親投稿
PRINTはコンソールと呼ばれるレイヤーにテキストを表示する為の機能なので絵は表示出来ません。(フォントとしてなら表示可能だけど) プチコンでドット絵を表示する場合は主にスプライトやBGを使います。線や図形などはグラフィックと呼ばれる機能もありますが、とりあえずはそんな感じです。と言うことでプチコンで画面に表示する方法としては、 1 コンソール(テキスト系) 2 グラフィック(LINEなどの描画系) 3 BG(タイル状に配置して背景として表示する機能) 4 スプライト(画面に自由に配置出来る定義された絵)※数の制限はある になります。チーズさんの用途ではおそらく4のスプライトが適しているのではないかと思いますが、その辺を使い分けてみてください。
3そうだね
プレイ済み