In this game, the dancer performs a sequence of moves. You need to remember this sequence and make him repeat it using the four arrow keys on the keyboard.
This is the modificated code of the game:
from random import randint WIDTH = 800 HEIGHT = 600 CENTER_X = WIDTH / 2 CENTER_Y = HEIGHT / 2 move_list = [] display_list = [] score = 0 current_move = 0 count = 4 dance_length = 4 say_dance = False show_countdown = True moves_complete = False game_over = False dancer = Actor("start-dancer") dancer.pos = CENTER_X + 5, CENTER_Y - 40 up = Actor("up") up.pos = CENTER_X, CENTER_Y + 110 right = Actor("right") right.pos = CENTER_X + 60, CENTER_Y + 170 down = Actor("down") down.pos = CENTER_X, CENTER_Y + 230 left = Actor("left") left.pos = CENTER_X - 60, CENTER_Y + 170 def draw(): global game_over, score, say_dance global count, show_countdown if not game_over: screen.clear() screen.blit("stage", (0, 0)) dancer.draw() up.draw() down.draw() right.draw() left.draw() screen.draw.text("Score: " + str(score), color="black", topleft=(10, 10)) if say_dance: screen.draw.text("Dance!", color="black", topleft=(CENTER_X - 65, 150), fontsize=60) if show_countdown: screen.draw.text(str(count), color="black", topleft=(CENTER_X - 8, 150), fontsize=60) else: screen.clear() screen.blit("stage", (0, 0)) screen.draw.text("Score: " + str(score), color="black", topleft=(10, 10)) screen.draw.text("GAME OVER!", color="black", topleft=(CENTER_X - 130, 220), fontsize=60) return def reset_dancer(): global game_over if not game_over: dancer.image = "start-dancer" up.image = "up" riht.image = "right" down.image = "down" left.image = "left" return def update_dancer(move): global game_over if not game_over: if move == 0: up.image = "up-lit" dancer.image = "up-dancer" clock.schedule(reset_dancer, 0.5) elif move == 1: right.image = "right-lit" dancer.image = "right-dancer" clock.schedule(reset_dancer, 0.5) elif move == 2: down.image = "down-lit" dancer.image = "down-dancer" clock.schedule(reset_dancer, 0.5) else: left.image = "left-lit" dancer.image = "left-dancer" clock.schedule(reset_dancer, 0.5) return def display_moves(): global move_list, display_list, dance_length global say_dance, show_countdown, current_move if display_list: this_move = display_list[0] display_list = display_list[1:] if this_move == 0: update_dancer(0) clock.schedule(display_moves, 1) elif this_move == 1: update_dancer(1) clock.schedule(display_moves, 1) elif this_move == 2: update_dancer(2) clock.schedule(display_moves, 1) else: update_dancer(3) clock.schedule(display_moves, 1) # else: say_dance = True show_countdown = False return def countdown(): global count, game_over, show_countdown if count > 1: count = count - 1 clock.schedule(countdown, 1) else: show_countdown = False display_moves() return def generate_moves(): global move_list, dance_length, count global show_countdown, say_dance count = 4 move_list = [] say_dance = False for move in range(0, dance_length): rand_move = randint(0, 3) move_list.append(rand_move) display_list.append(rand_move) show_countdown = True countdown() return def next_move(): global dance_length, current_move, moves_complete if current_move < dance_length - 1: current_move = current_move + 1 else: moves_complete = True return def on_key_up(key): global score, game_over, move_list, current_move if key == keys.UP: update_dancer(0) if move_list[current_move] == 0: score = score + 1 next_move() else: game_over = True elif key == keys.RIGHT: update_dancer(1) if move_list[current_move] == 1: score = score + 1 next_move() else: game_over = True elif key == keys.DOWN: update_dancer(2) if move_list[current_move] == 2: score = score + 1 next_move() else: game_over = True elif key == keys.LEFT: update_dancer(3) if move_list[current_move] == 3: score = score + 1 next_move() else: game_over = True return generate_moves() music.play("undertale") def update(): global game_over, current_move, moves_complete if not game_over: if moves_complete: generate_moves() moves_complete = False current_move = 0 else: music.stop()