フルーツキャッチゲームは上から落ちてくる落下物を一番下でキャッチするゲームになります。
フルーツキャッチゲームはゲームブロックで操作スプラウトと落下物のスプラウトがぶつかった時の処理を追加しようまでで作ってきましたコードを少し変えるだけで作る事ができます。
前回までのコードから追加する機能は、落下物(フルーツ)スプラウトの出現箇所のX座標を0〜4のランダムの数字にすることと、落下物(フルーツ)をプレイヤースプライトがキャッチできた(ふれた)時に点数を追加することになります。
最初に落下物(フルーツ)スプライトの生成時にX座標を0〜4の範囲の乱数(ランダムな数字)を生成するように変更します。
※最初だけブロック内のコードの2行目の落下物スプライトの生成のXに0〜4までの乱数ブロックを追加しています。
※ずっとブロック内のコードの6行目の落下物スプライトの生成のXに0〜4までの乱数ブロックを追加しています。
次に落下物(フルーツ)をキャッチした時に点数(スコア)を増やす仕組みを追加します。
※最初だけブロックの1行目に点数を 0 にするブロックを追加しています。
※ずっとブロックの4行目に点数を 1 だけ増やすブロックを追加しています。
これでシンプルなフルーツキャッチゲームの完成です。
後は三回取りこぼしたらゲームオーバーといった機能を追加して、ゲームをより面白いものになるように挑戦してみましょう。
今回のコードをMicroPythonで書き換えてみます。
from microbit import *
import random
# スコア
score = 0
# プレイヤーの座標
player = [2, 4]
# 落下物の座標
falling_object = [random.randint(0, 4), 0]
ticks = 20
current_tick = 0
render_active = True
def render():
global score, player, falling_object, current_tick, ticks, render_active
if not render_active:
return
current_tick += 1
# 落下物の移動に関する処理
if current_tick >= ticks:
current_tick = 0
falling_object[1] += 1
# プレイヤーと落下物を同時に描写する
coord = ""
for y in range(0, 5):
for x in range(0, 5):
if player[0] == x and player[1] == y:
coord += "9"
elif falling_object[0] == x and falling_object[1] == y:
coord += "9"
else:
coord += "0"
coord += ":"
img = Image(coord)
display.show(img)
#落下物が一番下まで到達した
if falling_object[1] > 4:
display.scroll("GAME OVER SCORE ")
display.show(str(score))
render_active = False
# プレイヤーと落下物が接触した場合は音を出して、新しい落下物を用意する
if player[0] == falling_object[0] and player[1] == falling_object[1]:
audio.play(Sound.HAPPY)
score += 1
falling_object[0] = random.randint(0, 4)
falling_object[1] = 0
run_every(render, ms=50)
# プレイヤーの操作に関する処理
while True:
if button_a.was_pressed():
if player[0] > 0:
player[0] -= 1
if button_b.was_pressed():
if player[0] < 4:
player[0] += 1