変数のトグルとしての使い方について見てみよう

変数をトグル(toggle)として利用する方法を見ていきます。



プログラミングにおけるトグルとは、2つの状態を切り替える動作を指しまして、変数のフラグとしての使い方について見てみようで見ましたスイッチのオンとオフも2つの状態を切り替えていますのでトグルであると言えます。


トグルが活躍する場面は、乗り物が前進している時に、ボタンを押す等のイベントをきっかけにして後進するといったこともトグルになります。


今回はカウントアップしている状態から、ボタンAを押すとカウントダウンに切り替わる仕組みを考えてみます。



はじめに回数を記録する変数のと、1ずつ数を増やす為の変数の向きを作成します。

変数の数の値を1ずつ増やす時は、向きの値だけ増やすようにします。


続いて、ボタンAを押したら数を一ずつ減らす仕組みを作ります。



ボタンAを押した時、向きに-1をかけることで、1と-1を切り替えるようにします。

これで、ボタンAを押す度に、1ずつ増やすか-1ずつ減らすかといった切り替えが行えるようになりました。




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

# Imports go at the top
from microbit import *

# ボタンAを押された回数を記録する(変数の初期化)
times = 1
# 1ずつ増やすか、1ずつ減らすかのトグル
direction = 1

while True:
	if button_a.was_pressed():
		direction *= -1
		sleep(200)

	display.show(times)
	times += direction
	sleep(500)

トグルの処理の箇所の

if button_a.was_pressed():

のwas_pressed()ですが、変数のフラグとしての使い方について見てみようで使用しましたis_pressed()が現在ボタンが押されているか?の判定に対して、was_pressed()はボタンが押された事があるか?の判定になります。


今回のコードで何故was_pressed()にする必要があるか?と言いますと、最後の行にあります

sleep(500)

の実行中にis_pressed()ですと、スリープ実行中にボタンを押しても判定されないことがあります。


この問題を回避するために、was_pressed()を利用しています。

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

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