• # Un simple exemple

    Posté par . En réponse au message aide Turtle. Évalué à 2.

    Voici un simple exemple.

    import turtle
    SQUARE_SIZE = 60
    MAZE = (
     '1111111111',
     '1000000001',
     '1011111101',
     '1010101001',
     '1010001011',
     '1010111101',
     '1010000001',
     '1011011101',
     '1000001001',
     '1111111111',
    )
    SCREEN_WIDTH = (len(MAZE[0]) + 2) * SQUARE_SIZE
    SCREEN_HEIGHT = (len(MAZE[1]) + 2) * SQUARE_SIZE
    TOP = -SCREEN_HEIGHT // 2
    LEFT = SCREEN_WIDTH // 2
    PLAYER = dict(
     turtle=turtle.Turtle(),
     color='blue',
     x=1,
     y=1,
    )
    def square_draw(x, y, size, color):
     turtle.up()
     turtle.goto(x, y)
     turtle.down()
     turtle.fillcolor('red')
     turtle.begin_fill()
     for _ in range(4):
     turtle.forward(size)
     turtle.right(90)
     turtle.up()
     turtle.end_fill()
    def maze_draw(maze):
     for y, line in enumerate(maze):
     for x, value in enumerate(line):
     if value == '1':
     square_draw(
     x * SQUARE_SIZE - LEFT + SQUARE_SIZE,
     y * -SQUARE_SIZE - TOP - SQUARE_SIZE,
     SQUARE_SIZE,
     'red'
     )
    def player_draw(player):
     player['turtle'].clear()
     player['turtle'].up()
     x = player['x'] * SQUARE_SIZE - LEFT + SQUARE_SIZE * 1.5
     y = player['y'] * -SQUARE_SIZE - TOP - SQUARE_SIZE * 1.75
     player['turtle'].goto(x, y)
     player['turtle'].down()
     player['turtle'].fillcolor(player['color'])
     player['turtle'].begin_fill()
     player['turtle'].circle(SQUARE_SIZE // 4)
     player['turtle'].end_fill()
    turtle.hideturtle()
    turtle.speed(0)
    screen = turtle.Screen()
    screen.setup(SCREEN_WIDTH, SCREEN_HEIGHT)
    PLAYER['turtle'].hideturtle()
    PLAYER['turtle'].speed(0)
    maze_draw(MAZE)
    player_draw(PLAYER)
    def player_move_left(maze, player):
     if maze[player['y']][player['x'] - 1] == '1':
     return
     player['x'] -= 1
     player_draw(player)
    def player_move_right(maze, player):
     if maze[player['y']][player['x'] + 1] == '1':
     return
     player['x'] += 1
     player_draw(player)
    def player_move_up(maze, player):
     if maze[player['y'] - 1][player['x']] == '1':
     return
     player['y'] -= 1
     player_draw(player)
    def player_move_down(maze, player):
     if maze[player['y'] + 1][player['x']] == '1':
     return
     player['y'] += 1
     player_draw(player)
    turtle.onkeypress(lambda: player_move_left(MAZE, PLAYER), 'Left')
    turtle.onkeypress(lambda: player_move_right(MAZE, PLAYER), 'Right')
    turtle.onkeypress(lambda: player_move_up(MAZE, PLAYER), 'Up')
    turtle.onkeypress(lambda: player_move_down(MAZE, PLAYER), 'Down')
    turtle.listen()
    turtle.done()

    Y a sans doute des trucs à revoir, et si t'es familier avec l'objet python, faire des classes.