Je cherche a faire un truc simple, le reste ne devrait pas importer.
Le but de ma classe "spike" permet juste de génerer autant d'objet qui peuvent être render avec Pygame. Pour simplifier le truc et avoir plein de "spike" sans trop faire de répétitions, j'ai voulu append des objets dans un array ( "spikes". attention au S )
Mais lors ce que je veux lancer le truc. Shell m'indique :
Traceback (most recent call last):
File "D:\Programmes\Python\Test Zone.py", line 78, in <module>
spikes[x].draw()
TypeError: list indices must be integers or slices, not spike
Voici mon code :
#imports
import pygame
import random
#pygame
pygame.init()
win = pygame.display.set_mode((1920, 1080), pygame.FULLSCREEN)
pygame.display.set_caption("Da Shit By Shawrex")
#Classes
class players :
def __init__(self, x, y) :
self.x = x
self.y = y
def draw(self) :
pygame.draw.rect(win, (255, 255, 255), (self.x, self.y, 40, 40))
class spike :
def __init__(self, x, y) :
self.x = x
self.y = y
def draw(self) :
pygame.draw.rect(win, (0, 0, 0), (self.x, self.y, 40, 40))
#Vars
run = True
#Create objects
p1 = players(480, 540)
p2 = players(1440, 540)
spikes = []
for x in range(3) :
spikes.append(spike(random.randint(120, 1800), random.randint(0, 960)))
#main loop
while run :
#Framerate
pygame.time.delay(5)
#Quit
for event in pygame.event.get() :
if event.type == pygame.QUIT :
run = False
#Keys Bindings
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT] :
if p1.x > 0 :
p1.x -= 10
p2.y -= 10
if keys[pygame.K_RIGHT] :
if p1.x < 920 :
p1.x += 10
p2.y += 10
if keys[pygame.K_UP] :
if p1.y > 60 :
p1.y -= 10
p2.x -= 10
if keys[pygame.K_DOWN] :
if p1.y < 980 :
p1.y += 10
p2.x += 10
#Drawings
win.fill((255, 255, 255))
pygame.draw.rect(win, (51, 255, 51), (960, 60, 960, 960))
pygame.draw.rect(win, (51, 51, 255), (0, 60, 960, 960))
p1.draw()
p2.draw()
for x in spikes :
spikes[x].draw()
pygame.display.update()
pygame.quit()
J'espere que vous pourrez en faire quelque chose. Merci bien !
Si j'entends pas les rageux, c'est car les morts ne parlent pas. - 2019
Quand tu fais for x in spikes, x parcourt les éléments de spike, x n'est pas un indice mais une instance de la classe spike (c'est d'ailleurs l'erreur que tu obtiens). Donc c'est plutôt x.draw() que tu veux dans ce for et pas spikes[x].draw(). Sinon, met une majuscule à tes noms de classe (Player et Spike plutôt que players et spike).
Si j'entends pas les rageux, c'est car les morts ne parlent pas. - 2019
[Pygame] : Classe dans un Array ? (Impossible ?)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Si j'entends pas les rageux, c'est car les morts ne parlent pas. - 2019
Si j'entends pas les rageux, c'est car les morts ne parlent pas. - 2019