2016-03-29 9 views
0

Ich versuche, ein Minensuchboot Spiel mit pygame zu programmieren, und ich möchte die Bomben alles zeigen, wenn ich auf einem von ihnen klicken:Python/Pygame - Indexerror: Listenindex außerhalb des zulässigen Bereichs

bouttonbomb = pygame.image.load("bouttonbomb.jpg").convert() 
    for x in range(0, nbpixel, cellsize): 
     for y in range(0, nbpixel, cellsize): 
      if grille[x][y] == BOMB: 
       fenetre.blit(bouttonbomb, (x, y)) 
    pygame.display.flip() 

aber ich habe diesen Fehler: IndexError: list index out of range

auf dieser Linie:

if grille[x][y] == BOMB:

So verstehe ich nicht, warum?

+3

Ich nehme eine wilde Vermutung: 'Bereich (0, nbpixel, Zellengröße)' ist etw. wie '[0, 100, 200, ...]', während für 'grille [x] [y]', dass es mehr wie '[0, 1, 2, ...]' – schwobaseggl

+0

Nun brauchen Sie um herauszufinden, was 'x, y' Sie in' blit' brauchen und alles entsprechend anpassen ... – schwobaseggl

+0

Ja 'Bereich (0, nbpixel, Zellengröße)' ist '[0, 20, 40, 60, ..., 400 ] 'und ich möchte nur überprüfen, ob die Zelle mit den Koordinaten [x] [y] eine Bombe ist, um ein Bild zu diesen Koordinaten anzuzeigen – Antclavs

Antwort

0

Da range(0, nbpixel, cellsize) is [0, 20, 40, 60, ..., 400] und Sie coordinates [x][y] überprüfen möchten, dann setzen Sie range(0, nbpixel/cellsize) Auf diese Weise werden Sie jeden Zellindex verarbeiten.

bouttonbomb = pygame.image.load("bouttonbomb.jpg").convert() 
    maxindex = nbpixel/cellsize 
    for x in range(0, maxindex): 
     for y in range(0, maxindex): 
      if grille[x][y] == BOMB: 
       fenetre.blit(bouttonbomb, (x, y)) 
    pygame.display.flip() 
+0

Das sieht wie ein gültiger Ansatz aus :) jetzt hoffen wir,' blit' erwartet 'x nicht , y' aus '[0, 20, ..., 400]' – schwobaseggl

+0

Wahrscheinlich nicht, sonst hätte es Ihnen keinen Indexfehler gegeben. Die meisten Anzeigeprogramme funktionieren auf diese Weise. Wenn dies jedoch nicht der Fall ist, müssen Sie nur den von Ihnen verwendeten Faktor anpassen. – sabbahillel

+0

Vielen Dank! Es funktioniert mit dem Faktor :) – Antclavs

Verwandte Themen