福野泰介の一日一創 - create every day

かつてのあこがれ、ラジコンヘリ。福井の河川敷、ラジコンヘリクラブにおじゃまして、先輩と共同で買ったエンジンで動くラジコンヘリを飛ばせるようになろうとホバリングの練習を何度かやるも、自在に飛ばせるようになるには至らず。 今や数千円で同じ4ch操作のドローンが手に入ってしまう時代。今のこどもがうらやましい!

昔のラジコンヘリの操作は左手の左右で重心左右移動(モード1)でしたが、どうやら前後左右の重心移動を右側で行うもの(モード2)が標準なようです。 いずれも4ch、普通の車のラジコンでも方向が変わった状態での右左は慣れないと分かりにくいものですが、上下と左右重心移動が加わるドローン操作は、もうちょっと大変。 うまくなる方法は何事も一緒、練習あるのみ。

飛行時間が短いドローン、練習不足はシミュレーターで補いましょう。 せっかくなので、IchigoJamで、ドローン風操作で操り、すばやくすべてのイチゴを撃つゲームを作ってみました。
どんどんイチゴが増える、全5ステージのタイム、まずは100秒切れるか?そして最速タイムは!?

どうせやるなら楽しく学習しましょう!きっと、どんな教科にも通じますよ。



DRONE-SHOOT15 on Vine

プログラムはこちら(Kidspods;からMixJuiceを使ってダウンロードもできます)

1 'DRONE-SHOOT15 10 LET[0],2,1,3,0,3,1,0,2,0,-1,1,0,0,1,-1,0 20 T=0 30 CLT 35 T=T+1:IF T>5 ?"TIME:";TICK()/60:END 36 S=T*3:X=16:Y=12:GOSUB 400 37 A=X:B=Y:D=0:U=0 39 'MAIN 40 K=INKEY() 50 IF K=ASC("C") D=(D+1)%4 60 IF K=ASC("X") D=(D+3)%4 70 E=K-LEFT:IF E>=0 AND E<4 E=([E+4]+D)%4:A=X+[E*2+8]:B=Y+[E*2+9] 80 IF U=0 AND K=SPACE U=1+D:V=X:W=Y 180 IF A<>X OR B<>Y LC X,Y:?" ":X=A:Y=B 190 LC X,Y:?CHR$(224+[D]) 191 IF U GOSUB 300:IF S=0:LC10,12:?"STAGE CLEAR!":WAIT30:GOTO35 192 LC8,0:?"STAGE:";T;" TIME:";TICK()/60 195 WAIT 5 200 GOTO 40 300 'SHOT 301 IF X<>VORY<>W:LCV,W:?" " 310 V=V+[U*2+6]:W=W+[U*2+7] 320 LCV,W:IF SCR()=255 S=S-1:U=0:?" ":RETURN 325 IF V<0ORV>31ORW<0ORW>21 U=0:RETURN 330 ?"*":RETURN 400 'INIT 405 SRNDT+2:CLS:LCX,Y:?" " 410 FOR I=1 TO S 420 LC RND(32),RND(19)+1:IF SCR() CONT 425 ?CHR$(255):NEXT 430 RETURN

操作方法
カーソル:重心移動(前後左右)
X:左回転
C:右回転
SPACE:ショット!

見どころは、配列を使ったドローン風操作。
配列に、0-3がキャラクタ表示用、4-7が上下左右キーを方向に変換、8-15が方向に応じたXY移動量をいれておき、70行などで使っています。

乱数でステージをつくると難易度がばらついてしまいます。
そこで便利なのが、乱数初期化コマンド(SRND)。値を指定すると乱数パターンが固定化されます。 これを使ってステージを生成すると、必ず同じ配置がでるので自分との戦いや、友達とのタイムアタックができます! SRND T+2 の「2」を他の数に変えるがらっとステージが変わります。

300行が弾を撃つ処理、400行がステージをつくる処理。GOSUB/RETURNを使って機能ごとに分割するとつくりやすいです。

こどもパソコンIchigoJam

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY 福野泰介 - Taisuke Fukuno / @taisukef / アイコン画像 / プロフィール画像