ゲームブロックでフルーツキャッチゲームを作ろう


フルーツキャッチゲームは上から落ちてくる落下物を一番下でキャッチするゲームになります。

フルーツキャッチゲームはゲームブロックで操作スプラウトと落下物のスプラウトがぶつかった時の処理を追加しようまでで作ってきましたコードを少し変えるだけで作る事ができます。


前回までのコードから追加する機能は、落下物(フルーツ)スプラウトの出現箇所のX座標を0〜4のランダムの数字にすることと、落下物(フルーツ)をプレイヤースプライトがキャッチできた(ふれた)時に点数を追加することになります。


最初に落下物(フルーツ)スプライトの生成時にX座標を0〜4の範囲の乱数(ランダムな数字)を生成するように変更します。





次に落下物(フルーツ)をキャッチした時に点数(スコア)を増やす仕組みを追加します。


※最初だけブロックの1行目に点数を 0 にするブロックを追加しています。


※ずっとブロックの4行目に点数を 1 だけ増やすブロックを追加しています。


これでシンプルなフルーツキャッチゲームの完成です。

後は三回取りこぼしたらゲームオーバーといった機能を追加して、ゲームをより面白いものになるように挑戦してみましょう。




今回のコードをMicroPythonで書き換えてみます。

from microbit import *
import random

# スコア
score = 0

# 落下物の座標
falling_object = [random.randint(0, 4), 0]

# プレイヤーの座標
player = [2, 4]

ticks = 20
current_tick = 0

# renderを止める為に必要
render_active = True

def render():
	global falling_object, player, render_active

	# GAME OVERを表示したらrender関数を止める
	if not render_active:
		return
    
	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)

# 点を表示後に次に点を表示する箇所を指定する
def update_falling_object():
	global falling_object, player, current_tick, ticks, score, render_active

	current_tick += 1

	if current_tick >= ticks:
		current_tick = 0

        # プレイヤーと落下物が接触した場合は音を出して、新しい落下物を用意する
		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
			if ticks > 0:
				ticks -= 1
		else:
			# 落下物が一番下まで到達した
			if falling_object[1] > 4:
				display.scroll("GAMEOVER SCORE ")
				display.show(str(score))
				render_active = False
			else:
				falling_object[1] += 1
    
run_every(render, ms=50)
run_every(update_falling_object, 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
京都の東本願寺で開催されているプログラミング教室で講師をしています。
詳しくはTera schoolを御覧ください。
同じカテゴリーの記事
マインクラフト用ビジュアルエディタを開発しています。

詳しくはinunosinsi/mcws_blockly - githubをご覧ください。