ich habe ein Programm mit Python geschrieben, welches ein Fenster mit Kästen zeichnet, wobei man die Zeilen und Spalten mit variablen bestimmt und dadurch eine Anzahl an gleich großen Kästen gezeichnet wird.
Jetzt wollte ich die Farben der Kästen ändern wenn der Mauszeiger drüber fährt. Soweit bin ich aber noch nicht gekommen weil ich es nicht geschafft habe die einzelnen Instanzen der Klasse Kästen aufzurufen, da diese als Instanzen in der Liste gespeichert werden und nicht als Variablen und dadurch die Schleife for neuerkasten in kastenliste nicht funktioniert.
Hat jemand eine Idee wie ich die Instanzen einzeln aufrufen kann (auch in einer Schleife) und somit verändern kann.
Danke im voraus.
Bin neu hier und neu beim Programmieren also auch andere Tipps geben
Code: Alles auswählen
import pygame
aktiv = True
class Kastenklasse():
def __init__(self,farbe,xposition,yposition,groese,randdicke):
self.farbe = farbe
self.xpos = xposition
self.ypos = yposition
self.groese = groese
self.randdicke = randdicke
def zeichneKasten(self):
pygame.draw.rect(screen,self.farbe,[self.xpos,self.ypos,self.groese,self.groese],0)
pygame.draw.rect(screen,[255,255,255],[self.xpos,self.ypos,self.groese,self.groese],self.randdicke)
def get_xy_bereich(self):
xbereich = self.xpos, self.xpos + self.groese
ybereich = self.ypos, self.ypos + self.groese
return xbereich , ybereich
anzahl_zeilen = 4
anzahl_spalten = 4
kastengroese = 30
hintergrundfarbe = [255,255,255]
randdicke = 1
kastenfarbe = [0,0,0]
randdicke = 1
screen = pygame.display.set_mode([anzahl_spalten*kastengroese,anzahl_zeilen*kastengroese]) #fensterkastengroese entspricht anzahl reihen und spalten
screen.fill(hintergrundfarbe)
kastenliste = []
x = 0
y = 0
for i in range(anzahl_zeilen*anzahl_spalten):
neuerkasten = Kastenklasse(kastenfarbe,x,y,kastengroese,randdicke)
neuerkasten.zeichneKasten()
kastenliste.append(neuerkasten)
x = x+kastengroese
if (i+1)%anzahl_spalten==0: #hier wird in eine neue reihe gewechselt
y = y+kastengroese
x = 0
pygame.display.flip()
while aktiv:
Mausposition = pygame.mouse.get_pos()
#print kastenliste
for event in pygame.event.get():
#for neuerkasten in kastenliste:
#print kastenliste[neuerkasten]
#if Mausposition[0]<kastenliste[0] and Mausposition[1]<15:
#pygame.display.flip()
if event.type == pygame.QUIT:
aktiv = False