完成品の確認
慧编程作品社区
慧编程作品社区
準備をしよう
下のURLをクリックして、mBlockを開いてください。
https://ide.mblock.cc/#/?cloudProjectId=3336477
プログラミングする
「Panda」のプログラム
初めの設定
下のコードを入れて下さい。
from mblock import event
@event.greenflag
def on_greenflag():
sprite.size = 80
sprite.x = 0
sprite.y = -125
Pandaの大きさと位置を決めています。
左右キーで移動
下のコードを入れて下さい。
@event.keypressed('left arrow')
def on_keypressed():
sprite.x = sprite.x + -20
@event.keypressed('right arrow')
def on_keypressed1():
sprite.x = sprite.x + 20
イベントとして以下の動きを作っています。
- 左キーが押されたら左に移動する
- 右キーが押されたら右に移動する
- if文の後に、ゲームオーバーを作っておきます。この後、if文をネストしていく形で、次の問題を作っていきますので、最後までいくとゲームクリアになります。ゲームクリアできないと、このゲームオーバーが動いてしまい、ゲームオーバーになる、ということにしています。_
プログラム確認
緑の旗を押して、動きを確認してください。以下が確認できればOKです。
- Pandaが画面中央下のあたりに登場する
- 左キーを押すと、左に移動する
- 右キーを押すと、右に移動する
「Rocket15」のプログラム
初めの設定
下のコードを入れて下さい。
from mblock import event
import random
import time
@event.greenflag
def on_greenflag():
# 初めの設定
sprite.size = 80
sprite.direction = 180
Rocket15の大きさと向きを決めています。下向きにするために、directionを180にしています。
ロケットを落下処理後、ゲームクリア
下のコードを入れて下さい。(青のイタリック(斜体)の文字は、すでに入力したコードです。)
sprite.direction = 180
# 落下処理(5回)
for count in range(5):
# 中身は後で作ります
# ゲームクリア
sprite.play_until_done('Win')
sprite.stop_all()
- 5回の繰り返し処理を作って、ロケットを落下させます。中身は後で作ります。
- ロケットが無事に落下したら、ゲームクリアになるようにします。
後ほど作るロケットの落下処理の中で、ゲームオーバーのプログラムも作ります。このゲームオーバーに引っかからずに5つの落下するロケットを避けきれたら、ゲームクリアになるようにしています。
落下処理の中身
下のコードを入れて下さい。(青のイタリック(斜体)の文字は、すでに入力したコードです。)
さきほどのコードの間に挿入する形で入れます。
# 落下処理(5回)
for count in range(5):
# 落下準備
sprite.x = random.randint(-210, 210)
sprite.y = 110
time.sleep(0.3)
sprite.play('pop')
# 下端まで落下
while not sprite.touching('edge'):
sprite.y = sprite.y + -7
# ゲームオーバー
if sprite.touching('Panda'):
sprite.play_until_done('Lose')
sprite.stop_all()
# ゲームクリア
sprite.play_until_done('Win')
sprite.stop_all()
- 落下準備では、xをランダムの位置に、yを上の位置にしています。
- 下端まで落下では、下端に触れるまで、yを7ずつ下げています。
- ゲームオーバーでは、落下中にPandaに触れたら、ゲームオーバーになるようにしています。
プログラム確認
緑の旗を押して、動きを確認してください。以下が確認できればOKです。
- 画面上部、横はランダムな位置から、ロケットが出てきて、下まで落下する
- 下まで行くと、次のロケットが再度上から出てくる
- ロケットに当たると、ゲームオーバーになる
- 5つのロケットすべて避けれれば、ゲームクリアになる
すべてのプログラム(完成コード)
Panda
from mblock import event
@event.greenflag
def on_greenflag():
sprite.size = 80
sprite.x = 0
sprite.y = -125
@event.keypressed('left arrow')
def on_keypressed():
sprite.x = sprite.x + -20
@event.keypressed('right arrow')
def on_keypressed1():
sprite.x = sprite.x + 20
Rocket15
from mblock import event
import random
import time
@event.greenflag
def on_greenflag():
# 初めの設定
sprite.size = 80
sprite.direction = 180
# 落下処理(5回)
for count in range(5):
# 落下準備
sprite.x = random.randint(-210, 210)
sprite.y = 110
time.sleep(0.3)
sprite.play('pop')
# 下端まで落下
while not sprite.touching('edge'):
sprite.y = sprite.y + -7
# ゲームオーバー
if sprite.touching('Panda'):
sprite.play_until_done('Lose')
sprite.stop_all()
# ゲームクリア
sprite.play_until_done('Win')
sprite.stop_all()
今回は、mBlockのゲーム作成の第2回ということで、「ロケット避けゲーム」を紹介しました。
次回もお楽しみに♪