7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MakeCode Arcadeで遊んで見る

Last updated at Posted at 2020-01-25

#MakeCode Arcade
今年プログラミングが必修になるということで話題になっていたScratchとはどんなものだろうと思って見に行ってみました。
なるほどグラフィカルに簡単にプログラミングが出来るのか面白そうだなと思いましたが、もうちょい調べると似た感じのもので、MicroSoftのMakeCodeなるものがあることがわかりました。
しかもその中のMakeCode Arcadeは2Dゲームを作ることに特化しているということでちょっと遊んでみようと思ったわけです。
プログラミング経験のある人はパッと見で使い方がわかると思いますが、導入にはこちらの記事あたりが良いかも知れません。

で、何かをやってみようと思うと、こんにちはマイコン世代なので、まずはテニスゲームというかパドルとボールだけのスカッシュ的なものを作ってみてしまうのです。

こちら

カーソルキーか[A],[D]キーでパドルの左右移動です。Aボタンが[Z]か[スペース]、Bボタンが[X]です。
まあ単純で面白いというほどのものでもないですが、一応段々と玉が早くなるので限界が来ます。
これが数分~10分くらいで作れてしまうので楽しいです。

##プログラムの説明
簡単にプログラムの説明をしてみます。
mc001a.png
これがパドルとボールの動きです。
on start
 動作開始時に呼ばれるブロックです
set dialog frame to タイプ
 ダイアログを出して[A]ボタンが押されるのを待ちます
show long text テキスト 位置
 位置をbottomにしてテキストを表示します
set score to 0
 スコアを0にリセットします
set "paddle" to sprite 絵 of kind "player"
 絵を指定してスプライトを"paddle"という名前、"player"という種類で登録します
set "paddle" to position to x 80 y 96
 "paddle"の位置を(80,96)にします
move "paddle" with buttons vx 150 vy 0
 "paddle"をボタンで動かします、X速度(横方向)は150、Y速度(縦方向)は0
 つまり横にだけ動かせるように指定します
set "paddle" stay in screen ON
 "paddle"は画面内に留まるように指定します
 これによって画面端まで動かしたときに止まります
set "ball" to projectile 絵 from "paddle" with vx 50 vy -50
 "ball"を発射体として絵を指定して、"paddle"から発射します
 X速度(横方向)50,Y速度(縦方向)-50ですから斜め右上に向かって飛んでいきます
set "ball" bopunce on wall ON
 "ball"は壁で跳ね返ると指定します

mc001b.png
これはパドルとボールの当たり判定です
on sprite of kind projectile overlaps otherSprite of kind "Player"
 発射体(ここではボール)が種類"Player"の他のスプライトと重なったらという条件でこのブロック内の処理をします
if "ball" vy(velocity y) > 0 then
 もし"ball"のY速度が0より大きかったら、つまり下向きだったら以下の処理をします
 上からボールが飛んできたときにだけパドルが跳ね返すようにします
 これがないとボールとパドルが重なったときに引っかかって変な動きをするときがあります
set "ball" velocity to vx "ball" vx(velocity x) vy "ball" vy(velocity y) x -1
 長いですが、"ball"のX速度はそのままでY速度はかける-1する(反転する)という処理です
 これによってボールがパドルに当たったときに跳ね返ります
change score by 1
 スコアに1点加えます
play tone at High C for 1/8 beat
 高いドの音を短く鳴らします

mc001c.png
ここはゲームオーバーの判定です
forever
 このブロックは常に動いています
if "ball" y > 112 then
 もし"ball"のY座標が112よりも大きかったら以下を処理します
 パドルに当てられず画面の下まで行ってしまったらということです
game over LOSE
 ゲームオーバー(負け)ということです
 この1文だけでゲームオーバーの処理をしてくれるのは楽です

mc001d.png
ここでは5秒毎にボールの速度を上げることでだんだんと難しくしています
forever
 このブロックは常に動いています(繰り返しています)
pause 50000ms
 5000ミリ秒(5秒)待ちます
 これで以下を5秒に1回処理することになります
以下の処理で横(X)、縦(Y)それぞれの速度を増します
if "ball" vx(velocity x) > 0 then
 もし"ball"の横方向速度が0より大きかったら
set "ball" vx(velocity X) to ball vx(velocity x) + 5
 X速度を5増やす(速くする)
else
 そうじゃなかったら("ball"の横方向速度が0以下だったら)
set "ball" vx(velocity X) to ball vx(velocity x) - 5
 X速度を5減らす(速くする)
同じことをY速度にも行います

という感じでプログラムを解説してみました。
需要があるとは全く思えないですけど楽しかったので(^_^;

MakeCode Arcade結構楽しいのでもう少し凝ったものも作ってみたいです。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?