stage.set_background("moon")
sprite = codesters.Sprite("hedgehog", 0, -210)
score = 0
#my_display = codesters.Display(my_var, x, y)
score_display = codesters.Display(score, -210, -210)
time = 60
#my_display = codesters.Display(my_var, x, y)
time_display = codesters.Display(time, 210, -210)
def left_key():
rotation = sprite.get_rotation()
print(rotation)
sprite.set_rotation(rotation+3)
# add other actions...
stage.event_key("left", left_key)
def right_key():
rotation = sprite.get_rotation()
print(rotation)
sprite.set_rotation(rotation-3)
# add other actions...
stage.event_key("right", right_key)
def interval():
global time
time -=1
time_display.update(time)
if time % 2 == 0:
x = random.randint(-230,230)
y = random.randint(0,230)
star = codesters.Star(x, y, 5, 20, "yellow")
if time == 0:
stage.remove_all_events()
stage.event_interval(interval, 1)
def release_key(sprite):
sprite.say("BLAST OFF!", 1, "white")
# add other actions...
sprite.event_key_release("space", release_key)
t = codesters.Teacher()
func = t.find_text('release_key')
call = t.find_function('event_key_release')
moves = t.get_parameters_for_function('move_forward')
move_text= t.find_text('move_forward')
waits = t.get_parameters_for_function('wait')
wait_text = t.find_text('wait')
goes = t.get_parameters_for_function('go_to')
goes_text = t.find_text('go_to')
try:
def_line = int(func[0][0])
def_line_indent = t.get_indent_at_line(def_line)
except:
def_line = -1
def_line_indent = -1
try:
call_line = int(call[0][0])
call_line_indent = t.get_indent_at_line(call_line)
except:
call_line = -1
call_line_indent = -1
try:
tval1 = int(moves[0][0])
move_line = int(move_text[0][0])
tval1_indent = t.get_indent_at_line(move_line)
except:
tval1 = -1
move_line = -1
tval1_indent = -1
try:
tval2 = float(waits[0][0])
wait_line = int(wait_text[0][0])
tval2_indent = t.get_indent_at_line(wait_line)
except:
tval2 = -1
wait_line = -1
tval2_indent = -1
# try:
# tval3a = int(goes[-1][0])
# tval3b = int(goes[-1][1])
# goes_line = int(goes_text[0][0])
# tval3_indent = t.get_indent_at_line(goes_line)
# except:
# tval3a = -1
# tval3b = -1
# goes_line = -1
# tval3_indent = -1
event_check = TestObjective()
event_check.add_success(len(func) == 4 and def_line != -1 and def_line_indent == 0 and call_line_indent == 0, "Great job! Make sure to hit the spacebar!")
event_check.add_failure(def_line == -1, "Oops! Did you delete your Key Release event?")
event_check.add_failure(def_line_indent > 0 or call_line_indent > 0, "Oops! Make sure your Key Release event is NOT indented inside another event.")
t1 = TestObjective()
t1.add_success(tval1 == 575 and tval1_indent == 4 and (def_line < move_line < call_line), "Great job! Make sure to hit the spacebar!")
t1.add_failure(tval1 == -1, "Did you add Move Forward to the Key Release event?")
t1.add_failure(tval1 != -1 and tval1 != 575, "Did you change the argument in .move_forward() correctly?")
t1.add_failure(tval1_indent != 4, "Make sure you indent .move_forward() (4 spaces total)!")
t1.add_failure(not (def_line < move_line < call_line), "Make sure Move Forward is inside your key release event!")
t2 = TestObjective()
t2.add_success(tval2 == 0.1 and tval2_indent == 4 and (def_line < wait_line < call_line), "Great job! Make sure to hit the spacebar!")
t2.add_failure(tval2 == -1, "Did you add Wait to the Key Release event?")
t2.add_failure(tval2 != -1 and tval2 != 0.1, "Did you change the argument in .wait() correctly?")
t2.add_failure(tval2_indent != 4, "Make sure you indent .wait() (4 spaces total)!")
t2.add_failure(not (def_line < wait_line < call_line), "Make sure Wait is inside your key release event!")
# t3 = TestObjective()
# t3.add_success(tval3a == 0 and tval3b == -210 and tval3_indent == 4 and (def_line < goes_line < call_line), "Great job!")
# t3.add_failure(tval3a == -1, "Did you add Go To to the Key Release event?")
# t3.add_failure(tval3a != 0 or tval3b != -210, "Did you change the arguments in .go_to() correctly?")
# t3.add_failure(tval3_indent != 4, "Make sure you indent .go_to() (4 spaces total)!")
# t3.add_failure(not (def_line < goes_line < call_line), "Make sure Go To is inside your key release event!")
tester = TestManager()
tester.add_test_list([event_check, t1, t2])
tester.run_tests()
tester.display_first_feedback()