ゲームブロックで操作スプラウトと落下物のスプラウトを同時に設置してみよう


ゲームブロックで落下するスプライトを作ろうで作りました落下物のスプライトに、ゲームブロックを使ってみようで作りましたボタンを押して左右に動くスプライトを追加してみます。


最初だけブロックをに



プレイヤーという変数を作ってスプライトを追加します。

このスプライトに対して、



ボタンAとボタンBの動作を追加します。

これで今回の改修は終了です。




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

MicroPythonの場合は、MakeCodeのボタンAが押された時というイベントブロックに該当するものがありませんので、while True:内でボタンのイベントを追加する必要があります。


ここで一点注意がありまして、while True:内でsleep()を使うとボタンのイベントを追加することができなくなりますので、while True:とrun_everyをうまく使い分ける必要があります。


from microbit import *

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

# 落下物の座標
falling_object = [2, 0]

ticks = 20
current_tick = 0

def render():
	global player, falling_object, current_tick, ticks
    
	current_tick += 1

	# 落下物の移動に関する処理
	if current_tick >= ticks:
		current_tick = 0

		if falling_object[1] == 4:
			falling_object[1] = 0
			if ticks > 0:
				ticks -= 1
		else:
			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)

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
京都の東本願寺で開催されているプログラミング教室で講師をしています。
詳しくはTera schoolを御覧ください。
同じカテゴリーの記事
マインクラフト用ビジュアルエディタを開発しています。

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