'list' object is not callable

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

hello !

cette erreur est pourtant tres connue, je bute dessus, pourtant je ne n'appel pas de list en tant que fonction :/

le code :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import ctypes
import pygame

#constants
TILE_HEIGHT = 30
TILE_WIDTH = 30

# level dimensions
width, height = ctypes.windll.user32.GetSystemMetrics(0) // 30 + 30, 20

# sun position
sun = (0, 0)

liste_passe = [
    'd', 'q', '0', 'v', 'l', 'k',
    'g', 'f', 'P', 'W', 'X', 'C',
    'V', 'az', 'ze', 'io', 'op', 'pq'
    ]

def get_fov_tiles(fov, player_pos, level) -> list:
    # clamp
    x_offset = fov[0]//2
    y_offset = fov[1]//2
    x = sorted([0, player_pos[0]+(x_offset//2), width])[1]
    y = sorted([0, player_pos[1]+(y_offset//2), height])[1]

    fov_tiles = []
    for line in level[y-y_offset:y+y_offset]:
        fov_tiles.append(line[x-x_offset:x+x_offset])

    return fov_tiles


def line(pos1: tuple, pos2: tuple) -> iter:
    offset = (pos1[1] - pos1[1]) / (pos1[0] - pos2[0])
    pos = list(pos1)
    while pos != pos2:
        pos[0] += 1
        pos[1] += offset
        yield pos


def get_shadowed_tiles(fov, player_pos, level) -> list:
    shadowed = []
    for y, line in enumerate(get_fov_tiles(fov, player_pos, level)):
        for x, tile in enumerate(line):
            if tile in liste_passe:
                continue
            for intertile in line(sun, (x, y)):
                if intertile not in liste_passe:
                    shadowed.append((x, y))
                    break
    return shadowed

def ombrage_bloc(fov, player_pos, screen, level) -> None:
    tile_dimensions = (TILE_WIDTH, TILE_HEIGHT)
    color = pygame.Color(0, 0, 0, 0xDD)
    for shadowed in get_shadowed_tiles(fov, player_pos, level):
        rect = shadowed + tile_dimensions
        pygame.draw.rect(screen, color, rect)

la ligne de l'erreur : n°49, avec for intertile in line(sun, (x, y)), apparement c'est line(..) qui merde mais je ne comprend pas pourquoi :/ j'ai bien essayé un line[…] mais rien n'y fait !

help !

Ma chaine YouTube ! | Seventh, un micro langage communautaire ! | Mon projet : Unamed (en pleine reprogrammation en C++11/SFML2.4) | Mon tuto sur Pygame !

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte