노래하며 말판 이동하기
아래와 같이 코드를 작성하면 말판을 이동하는 동안 다른 일을 할 수 없습니다.
from roboid import *
hamster = Hamster()
hamster.board_forward() # 말판 위에서 한 칸 앞으로 이동한다.
hamster.board_left() # 말판 위에서 왼쪽 방향으로 제자리에서 90도 회전한다.
hamster.board_forward() # 말판 위에서 한 칸 앞으로 이동한다.
hamster.board_right() # 말판 위에서 오른쪽 방향으로 제자리에서 90도 회전한다.
hamster.board_forward() # 말판 위에서 한 칸 앞으로 이동한다.
마찬가지로 아래와 같이 코드를 작성하면 음악을 연주하는 동안 다른 일을 할 수 없습니다.
from roboid import *
hamster = Hamster()
for i in range(2):
hamster.note(Hamster.NOTE_C_4, 0.5)
hamster.note(Hamster.NOTE_E_4, 0.5)
hamster.note(Hamster.NOTE_G_4, 0.5)
for i in range(3):
hamster.note(Hamster.NOTE_A_4, 0.5)
hamster.note(Hamster.NOTE_G_4, 1)
hamster.note(0, 0.5)
이 두 가지 일을 동시에 하려면 어떻게 해야 할까요?
parallel 함수를 사용하면 여러 가지 일을 동시에 할 수 있습니다.
우선 각각의 일을 함수로 만듭니다.
from roboid import *
hamster = Hamster()
def move():
hamster.board_forward()
hamster.board_left()
hamster.board_forward()
hamster.board_right()
hamster.board_forward()
def play_music():
for i in range(2):
hamster.note(Hamster.NOTE_C_4, 0.5)
hamster.note(Hamster.NOTE_E_4, 0.5)
hamster.note(Hamster.NOTE_G_4, 0.5)
for j in range(3):
hamster.note(Hamster.NOTE_A_4, 0.5)
hamster.note(Hamster.NOTE_G_4, 1)
hamster.note(0, 0.5)
이제 이 함수들을 parallel 함수에 넣어 주면 됩니다.
parallel 함수에 넣는 다른 함수의 개수는 제한이 없습니다.
from roboid import *
hamster = Hamster()
def move():
hamster.board_forward()
hamster.board_left()
hamster.board_forward()
hamster.board_right()
hamster.board_forward()
def play_music():
for i in range(2):
hamster.note(Hamster.NOTE_C_4, 0.5)
hamster.note(Hamster.NOTE_E_4, 0.5)
hamster.note(Hamster.NOTE_G_4, 0.5)
for j in range(3):
hamster.note(Hamster.NOTE_A_4, 0.5)
hamster.note(Hamster.NOTE_G_4, 1)
hamster.note(0, 0.5)
parallel(move, play_music)
노래하고 말판 이동하며 LED 깜박이기
양쪽 LED도 빨간색으로 깜박여 봅시다.
from roboid import *
hamster = Hamster()
def move():
hamster.board_forward()
hamster.board_left()
hamster.board_forward()
hamster.board_right()
hamster.board_forward()
def play_music():
for i in range(2):
hamster.note(Hamster.NOTE_C_4, 0.5)
hamster.note(Hamster.NOTE_E_4, 0.5)
hamster.note(Hamster.NOTE_G_4, 0.5)
for j in range(3):
hamster.note(Hamster.NOTE_A_4, 0.5)
hamster.note(Hamster.NOTE_G_4, 1)
hamster.note(0, 0.5)
def blink():
for i in range(5):
hamster.leds(Hamster.LED_RED, Hamster.LED_RED)
wait(500)
hamster.leds(0, 0)
wait(500)
parallel(move, play_music, blink)