smilebasic(プチコン3号)入門(プチコン4号にも対応中)

記事
IT・テクノロジー
プチコンというのは、NintendoDSでプログラミング
できるアプリです。

当然NintendoDSで動くインタプリタ型言語なのでマシン語なんて
使えません。なので、ある程度の処理の遅さを念頭に入れないと
いけません。

また、プチコン4号を使うためにキーボードを買う必要はあまり
ありません。市販のゴム製のタッチペンが売られています。
が、一応店員さんにこれはスイッチに対応してますか?
と質問したりとかネットで調べてから買った方が良いと思います。

まずは、次のプログラムを入力してください。
input A
print A

恐らく実行
結果は
?52
52とか52を入力するとそんな感じに出力されると
思います。

では、次に
input A
input B
print A+B

実行結果は、
?100
?128
228
と100と128を入力すると、228が入力されると
思います。

では次はどうなるでしょうか?
input X
input Y
GFILL X,Y,X+32,Y+32,RGB(255,0,0)

?60
?52
と入力すると、
指定したX座標と数学のグラフとは反転したY座標に
赤いの四角が表示されるはずです。

今度はif文です。
input y
if(y>240-32) y=240-32
while 1
gcls
if button(0)==4 then x=x-2
if button(0)==8 then x=x+2
GFILL X,Y,X+32,Y+32,RGB(255,0,0)

vsync 1
wend
入力されたyが240-32より大きければ240-32にして
左ボタンが押されたら左へ
右ボタンが押されたら右へ
赤い四角が動くプログラムです。
プチコン4号を使っている方は、
if button(0)==4
...の部分を
if (button(0,#B_LLEFT,0))==1 then

if button(0)==8
...の部分を
if (button(0,#B_LRIGHT,0))==1 then




では、さらに、
mx=3:my=1
x=10:y=10
cls
while 1
    gcls
    x=x+mx
    y=y+my
    if(x<0 or x>400) mx=-mx
    if(y<0 or y>240) my=-my
    gcircle x,y,2,rgb(255,0,0)
    vsync 1
wend

これはいわゆるブロック崩しのアルゴリズムに少々似ています。

A=GSPOIT(X,Y)
if((A>>16)AND 255)!=0 THEN
    MY=-MY
    GPAINT X,Y,RGB(0,0,0)
END IF
とこれを追加してさらにブロックのグラフィックを追加
すれば、任意のブロックに対してぶつかった
あとにブロックを消しつつ動きを反転できます。

ブロックのグラフィックを実現するには
for文を使います。

for 変数=初期値 to 終了値 step 増分
です。step 増分は省略できます。

for i=0 to 400/16
     for j=0 to 48/16
          gfill i*16,j*8,i*16+16,j*8+8,rgb(0,255,0)
     next
next

このグラフィックは破壊されることを前提に作られているので
メインループより前に描画する必要があります。

あるいは、画面が汚くなるのを気にするのならばflagをそれぞれのブロックにつけて矩形の当たり判定で判定して当たっていれば、該当するグラフィックだけフラグを消すと良いです。

あとは、ループで回してフラグがあるブロックだけ描画すればOKです。

これでOKのはずです。(デバッグしていないのでどこまで合っているか
分からないですが)


サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら