def show_hexagram(number): for i in range(6): tile_grid[5 - i] = (number >> i) & 0x01 def show_name(number): hexname.text = HEXAGRAMS[number] hexname.anchored_position = (120, 180) #=================================== # MAIN CODE #=================================== print("shake") # wait for shake while not clue.shake(shake_threshold=SHAKE_THRESHOLD): pass # calibrate the mystic universe x, y, z = clue.acceleration random.seed(int(time.monotonic() + abs(x) + abs(y) + abs(z))) # cast a reading reading = random.randrange(64) print("reading = ", reading, HEXAGRAMS[reading]) # play a melody for note, duration in MELODY: clue.play_tone(note, duration) # prompt to show
select_label.x = 120 - (select_label.bounding_box[2] // 2) roll_label.text = '' mode = SELECTING update_display(number_of_dice, side_selection) while True: button_a.update() button_b.update() if mode == SELECTING: if button_a.rose: number_of_dice = ((number_of_dice + 1) % MAX_NUMBER_OF_DICE) update_display(number_of_dice, side_selection) elif button_b.rose: side_selection = (side_selection + 1) % len(SIDES) update_display(number_of_dice, side_selection) elif clue.shake(shake_threshold=25): mode = ROLL_RESULT if SIDES[side_selection] == 100: # only roll one percentile number_of_dice = 0 update_display(number_of_dice, side_selection) roll(number_of_dice, SIDES[side_selection]) else: if button_a.rose or button_b.rose: # back to dice selection mode = SELECTING update_display(number_of_dice, side_selection) elif clue.shake(shake_threshold=25): # reroll roll(number_of_dice, SIDES[side_selection])