def make_confetti():
    stage.event_interval(None)
    confetti.show()
    confetti.set_bottom(250)
    confetti.set_rotation(random.randint(0, 360))
    confetti.glide_to(0, -300)
    confetti.hide()
    for bulb in light_bulbs:
        if bulb.on == True:
            bulb.load_image("bulb_off_bdb")
            bulb.set_size(0.4)
            bulb.on = False
    binary_sprite.set_text("00000000")
    stage.event_interval(interval, 1)
def click(sprite):
    global random_int, score, timer
    if sprite.get_image_name() == "bulb_off_bdb":
        sprite.load_image("bulb_on_bfc")
        sprite.on = True
    else:
        sprite.load_image("bulb_off_bdb")
        sprite.on = False
    sprite.set_size(0.4)
    # sprite.say(sprite.value, .5)
    # add other actions...
    total_value = 0
    binary_value = ""
    for bulb in light_bulbs:
        if bulb.on == True:
            total_value += bulb.value
            binary_value += str(1)
        else:
            binary_value += str(0)
    
    value_sprite.set_text(total_value)
    binary_sprite.set_text(binary_value)
    
    if total_value == random_int:
        make_confetti()
        score+=1
        score_display.update(score)
        random_int = random.randint(0, 255)
        target_value.set_text(random_int)
        timer += 2
        timer_display.update(timer)
# Title: confetti_355
# License: 
# Source: https://docs.google.com/drawings/d/e/2PACX-1vScbnkuF5R5uoGh9X9XMBfFTcKP8ZuHywqDxs4p4VpiOT3bflrkvK2cZg0bkZ83dDiXnbhyEClmkbfF/pub?w=365&h=348
confetti = codesters.Sprite("confetti_355", 0, 500)
confetti.hide()
confetti.set_size(1.3)
confetti.set_speed(5)
label_num = 128
x = -210
light_bulbs = []
for c in range(8):
    sprite = codesters.Sprite("bulb_off_bdb", x, 75)
    sprite.set_size(.4)
    label = codesters.Text(label_num, x, 165)
    sprite.value = label_num
    sprite.on = False
    label_num/=2
    x += 60
    light_bulbs.append(sprite)
    sprite.event_click(click)
value_sprite = codesters.Text(0, 0, -75, "red")
value_sprite.set_text_size(72)
binary_sprite = codesters.Text("00000000", 0, -195, "purple")
binary_sprite.set_text_size(65)
random_int = random.randint(0, 255)
target_value = codesters.Text(random_int, 0, 220, "blue")
score = 0
timer = 30
#my_display = codesters.Display(my_var, x, y)
score_display = codesters.NewDisplay(score, 210, 225, "Score:")
timer_display = codesters.NewDisplay(timer, -210, 225, "Time")
def interval():
    global timer
    timer -=1
    timer_display.update(timer)
    if timer <= 0:
        for bulb in light_bulbs:
            bulb.event_click(None)
        stage.event_interval(None)
        value_sprite.set_text("Game Over!")
        binary_sprite.set_text("Click Run and try to beat your high score!")
        binary_sprite.set_text(15)
stage.event_interval(interval, 1)
####################################################
# This code creates the optional instructions      #
####################################################
stage.event_interval(None)
run_instructions = stage.ask("Do you want to read instructions? Type yes or no").lower()
if run_instructions == "yes" or run_instructions == "y":
    import codesters
    import random
    from codesters.demo import Demo
    from codesters import Text
    
    # Create Demo instance
    demo = Demo()
    
    class newDemo(Demo):
        def create_continue_button(self):
            text = "Continue"
            background_sprite = codesters.Rectangle(-203, -219, 125, 62.5, "green", "black")
            button = self.create_button(text, -197, -220, True, "white", "#07A7E0", 90, 200, "white")
            self.stage.remove_sprite(button.background_sprite)
            button.background_sprite = background_sprite
            self.add_hover_opacity_element(button)
            return button
    
    demo = newDemo()
    
    blocker = codesters.Square(0, 0, 500, "white", "black")
    blocker.set_line_thickness(25)
    
    instructions = Text("Play this game to convert decimal numbers\n\nto binary numbers!\n\n")
    stage.wait(3)
    instructions.set_text("Play this game to convert decimal numbers\n\nto binary numbers!\n\nClick the continue button!")
    demo.continue_action()
    
    target_value.move_to_front()
    instructions.set_text("This blue number is the number you will convert!\n\n")
    stage.wait(3)
    value_sprite.move_to_front()
    instructions.set_text("This blue number is the number you will convert!\n\nThis red number is the binary number\n\nyou have created.")
    stage.wait(2)
    demo.continue_action()
    
    binary_sprite.move_to_front()
    instructions.set_text("Lastly, this purple number is the red number\n\n - in binary!")
    stage.wait(2)
    demo.continue_action()
    
    instructions.set_text("")
    opacity = .9
    
    for counter in range(10):
        blocker.set_opacity(opacity)
        stage.wait(0.05)
        opacity -= .1
    
    instructions.set_y(instructions.get_y()-20)
    instructions.set_text("Click a light bulb to add a 1 in that binary place value.\n")
    stage.wait(2)
    instructions.set_text("Click a light bulb to add a 1 in that binary place value.\nConvert the blue number!")
    stage.wait(5)
    stage.remove_sprite(instructions)
else:
    stage.wait(0.5)
    stage.event_interval(interval)