プチコン3号 SmileBASIC コミュニティプレイ日記すっとこどっこい suttokodokkoy2015/10/28 19:43:49『プチコン3号』を買ってはみたけど、どこから手をつけたらいいかわからない方むけに、ふと思い立って、このプログラムについて、1行1行作りながら説明してみたいと思います。10そうだね 13返信プレイ済み2017/11/03 15:22:45に取得
プチコン3号 SmileBASIC コミュニティ返信[1]親投稿すっとこどっこい suttokodokkoy2015/10/28 19:46SPSET 0,2 -------------------- まずはこの1行だけ。2番目の数字をいろいろ変えてみて、[START]で結果を確かめましょう。0そうだね プレイ済み2017/11/03 15:22:45に取得
プチコン3号 SmileBASIC コミュニティ返信[2]親投稿すっとこどっこい suttokodokkoy2015/10/28 19:48SPSET 0,2 SPOFS 0,150,50 -------- 説明を忘れていました。 1行目:スプライト番号0を、キャラクタ番号2(さくらんぼ)にする。 2行目:スプライト番号0(さくらんぼが入っている)の表示する位置を、左から150、上から50の位置にする。 2行目の2つめ、3つめの数字をいろいろ変えてみましょう。0そうだね プレイ済み2017/11/03 15:22:45に取得
プチコン3号 SmileBASIC コミュニティ返信[3]親投稿すっとこどっこい suttokodokkoy2015/10/28 19:51SPSET 0,2 X=150:Y=50 SPOFS 0,X,Y -------- SPOFSの2番目と3番目の数字を変えれば、スプライトが動かせそうな感じです。そこで(変数の)XとYに数字を入れます。結果は同じですが、ここからはXとYをいろいろ変えればスプライトが動かせそうです。0そうだね プレイ済み2017/11/03 15:22:45に取得
プチコン3号 SmileBASIC コミュニティ返信[4]親投稿すっとこどっこい suttokodokkoy2015/10/28 19:53SPSET 0,2 X=150:Y=50 SPOFS 0,X,Y WHILE 1 WEND -------- 見なれないかもしれませんが、「WHILE 1」と「WEND」を作ります。この中では命令がずーっとくり返されます。0そうだね プレイ済み2017/11/03 15:22:45に取得
プチコン3号 SmileBASIC コミュニティ返信[5]親投稿すっとこどっこい suttokodokkoy2015/10/28 19:54SPSET 0,2 X=150:Y=50 SPOFS 0,X,Y WHILE 1 PRINT "BAKA" WEND -------- ためしにPRINT文で確かめましょう。ずっと文字が表示されますね。0そうだね プレイ済み2017/11/03 15:22:45に取得
プチコン3号 SmileBASIC コミュニティ返信[6]親投稿すっとこどっこい suttokodokkoy2015/10/28 19:55SPSET 0,2 X=150:Y=50 SPOFS 0,X,Y WHILE 1 PRINT "BAKA"; WEND -------- PRINT文のうしろに「;」(セミコロン)を打つと、文字が横にならびます。これで「WHILE 1」から「WEND」の間がずっとくり返されることが理解できましたか。0そうだね プレイ済み2017/11/03 15:22:45に取得
プチコン3号 SmileBASIC コミュニティ返信[7]親投稿すっとこどっこい suttokodokkoy2015/10/28 19:57ACLS SPSET 0,2 X=150:Y=50 WHILE 1 SPOFS 0,X,Y WEND -------- 1行目は、最初に画面を全部消す命令です。SPOFSを「WHILE〜WEND」の中に入れたことで、何回も命令が実行されますが、XとYの値が変わっていないので、スプライトは動きません。0そうだね プレイ済み2017/11/03 15:22:45に取得
プチコン3号 SmileBASIC コミュニティ返信[8]親投稿すっとこどっこい suttokodokkoy2015/10/28 20:07ACLS SPSET 0,2 X=150:Y=50 WHILE 1 STICK OUT SX,SY X=X+SX SPOFS 0,X,Y WEND -------- STICKは、その時のアナログスティックのヨコとタテの具合を、ここではSXとSYに入れます。 次の行で「新しいXの値は、これまでのXの値にSXを足したもの」として、新しいXの値を代入します。 試しにアナログスティックを「ゆっくり」操作してみましょう。すぐにスプライトが画面の外に飛んでいきます。0そうだね プレイ済み2017/11/03 15:22:45に取得
プチコン3号 SmileBASIC コミュニティ返信[9]親投稿すっとこどっこい suttokodokkoy2015/10/28 20:07ACLS SPSET 0,2 X=150:Y=50 WHILE 1 STICK OUT SX,SY X=X+SX SPOFS 0,X,Y VSYNC WEND -------- スプライトが画面の外に飛んでいったのは、「WHILE〜WEND」の中がとてつもなく多く実行されたからです。(1秒に何百回とか何千回) そこで、VSYNCを書き足して1秒間に60回(3DSが1秒間に画面を書きかえる速さと同じ)くらいまでくり返される回数を減らします。 これで移動のスピードはおそくなりましたが、こんどはおそくなりすぎてしまいました。0そうだね プレイ済み2017/11/03 15:22:45に取得
プチコン3号 SmileBASIC コミュニティ返信[10]親投稿すっとこどっこい suttokodokkoy2015/10/28 20:09ACLS SPSET 0,2 X=150:Y=50 WHILE 1 STICK OUT SX,SY X=X+SX*5 SPOFS 0,X,Y VSYNC WEND -------- そこで、Xに対して移動する量を設定していたSXをふやします。 この例では5倍にしています。数字をいろいろ変えてみて、自分の好きな倍数にしてみましょう。0そうだね プレイ済み2017/11/03 15:22:45に取得
プチコン3号 SmileBASIC コミュニティ返信[11]親投稿すっとこどっこい suttokodokkoy2015/10/28 20:11ACLS SPSET 0,2 X=150:Y=50 WHILE 1 STICK OUT SX,SY X=X+SX*5 Y=Y-SY*5 SPOFS 0,X,Y VSYNC WEND -------- ヨコ移動が完成したら、タテ移動についてもやってみましょう。 SYの手前がマイナスである点に注意。 STICK命令で入るタテ方向のアナログスティックは、上方向でプラス、下方向でマイナス。これ対して表示画面では上方向がマイナス、下方向がプラスなので、SYの手前をマイナスにする必要があります。0そうだね プレイ済み2017/11/03 15:22:45に取得
プチコン3号 SmileBASIC コミュニティ返信[12]親投稿すっとこどっこい suttokodokkoy2015/10/28 20:16ACLS SPSET 0,2 X=150:Y=50 WHILE 1 STICK OUT SX,SY X=X+SX*5 Y=Y-SY*5 IF X<0 THEN X=0 SPOFS 0,X,Y VSYNC WEND -------- このままではまだキャラクターが画面の外に飛び出てしまうので、画面の上下左右に、カベを作ってスプライトが画面の外に飛び出ないようにします。まずは画面の左側から。 「もしも(IF)、Xが0よりも小さい(X<0)ならば(THEN)、Xを0にしなさい(X=0)」 という意味です。 もし手前のXの計算でXが0よりも小さくなったとしても、Xを0にもどしてくれるので、ぜったいにスプライトは左側からはみ出ることはありません。左側にカベが出来たのと同じことになります。0そうだね プレイ済み2017/11/03 15:22:45に取得
プチコン3号 SmileBASIC コミュニティ返信[13]親投稿すっとこどっこい suttokodokkoy2015/10/28 20:18ACLS SPSET 0,2 X=150:Y=50 WHILE 1 STICK OUT SX,SY X=X+SX*5 Y=Y-SY*5 IF X<0 THEN X=0 IF X>384 THEN X=384 IF Y<0 THEN Y=0 IF Y>224 THEN Y=224 SPOFS 0,X,Y VSYNC WEND -------- ここまでわかれば、残りの3行も同じようにわかるのではないでしょうか。右、上、下にも同じようにカベを作ります。これで完成です。0そうだね プレイ済み2017/11/03 15:22:45に取得