Index error: list index out of range
Résolu
A voir également:
- Index error: list index out of range
- Index telephonique france - Guide
- Cmos checksum error ✓ - Forum Carte-mère/mémoire
- Eespt technical error ✓ - Forum TNT / Satellite / Réception
- Index equiv 3 critères - Forum Bureautique
- Error 0x80070643 - Accueil - Windows
3 réponses
yg_be
Messages postés
23337
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 novembre 2024
Ambassadeur
1 551
Modifié le 16 févr. 2024 à 20:57
Modifié le 16 févr. 2024 à 20:57
bonjour,
dans carte[j][i], i et j doivent être plus petits que 11.
def maps(): for j in range(11): for i in range(11): if carte[j][i]==0: fill_rect(j*20,i*20,20,20,(0,150,0))
Willi_2121
Messages postés
1
Date d'inscription
vendredi 16 février 2024
Statut
Membre
Dernière intervention
17 février 2024
17 févr. 2024 à 07:39
17 févr. 2024 à 07:39
Merci
Salut,
Il serait judicieux de passer des arguments à ta fonction de façon à ce que tu n'as pas besoin de la modifier au cas où tu souhaites changer la carte, les dimensions des rectangles ou leurs couleurs.
La carte ne devant pas être modifiée, il est aussi opportun d'utiliser un tuple au lieu d'une liste.
Ce qui pourrait aboutir à :
board = ( (0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 6), (0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 6), (0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6), (0, 0, 0, 0, 1, 0, 0, 0, 4, 5, 6), (0, 0, 0, 1, 1, 1, 0, 0, 4, 5, 6), (0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 5), (3, 0, 0, 0, 2, 0, 0, 0, 0, 0, 4), (3, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0), (3, 3, 0, 0, 0, 0, 1, 1, 1, 0, 0), (3, 3, 3, 3, 0, 0, 0, 2, 0, 0, 0), (3, 3, 3, 3, 3, 0, 0, 2, 0, 0, 0), ) map_colors = ( (0, 150, 0), (0, 175, 0), (100, 100, 0), (0, 0, 100), (150, 150, 150), (100, 100, 100), (50, 50, 50), ) def draw_map(board, colors, cell_width, cell_height): line_size = len(board[0]) for y in range(len(board)): for x in range(line_size): fill_rect( x * cell_width, y * cell_height, cell_width, cell_height, colors[board[y][x]], ) draw_map(board, map_colors, 20, 20)
Utiliser un conteneur pour les couleurs rend la fonction bien plus concise.
On pourrait auusi plutôt qu'utiliser des ranges, se servir de la fonction enumerate de python.
def draw_map(board, colors, cell_width, cell_height): for y, line in enumerate(board): for x, value in enumerate(line): fill_rect( x * cell_width, y * cell_height, cell_width, cell_height, colors[value], )