Seite 1 von 1

Objekte

Verfasst: Dienstag 20. April 2021, 15:41
von Leolelo2222
Hallo,
ich programmiere seit einigen Wochen mit Python und jetzt wollte ich mal ein ganz einfaches Ökosystem Programmieren, also mit einer Tierart und einer Quelle für Essen(Punkte, die Zufällig im Bildschirm auftauchen) und, wenn sich zwei Tiere treffen, dann entsteht ein neues Tier.

Wie bekomme ich es nun hin, das ich nicht für jedes neue Tier schon variablen haben muss.
Gibt es eine Möglichkeit, wie man unbegrenzt Objekte zur Laufzeit eines Programmes erstellt(immer dann, wenn ein neues Tier entsteht)?z.B. :
class tier:
. x = None
. y = None
while running == True:
. if neues_Tier == True:
. . new tier()
Oder muss ich etwa im voraus eine Begrenzung festlegen. z.B. :
tier1_x = None
tier1_y = None
tier2_x = None
tier2_y = None
...

Ich würde mich über eine Lösung oder ein Paar Vorschläge freuen.
Mit freundlichen Grüßen Leo :D

Re: Objekte

Verfasst: Dienstag 20. April 2021, 15:53
von /me
Du solltest dir mal die grundsätzlichen Datentypen von Python anschauen, wie z.B. Listen.

Re: Objekte

Verfasst: Dienstag 20. April 2021, 17:08
von __blackjack__
Wobei unbegrenzt schwierig werden könnte, es sei denn man hat unbegrenzt Speicher. 😉

Re: Objekte

Verfasst: Dienstag 20. April 2021, 17:56
von nezzcarth
Das ist eigentlich keine Frage, die einer Umfrage bedarf, denn die Antwort ist eindeutig: ja ;)

Solche Sachen kann man eigentlich sogar sehr schön in Python machen. Hier mal ein ganz simples Beispiel zum Einstieg:

Code: Alles auswählen

#!/usr/bin/env python3
from random import gauss
from collections import namedtuple
from operator import attrgetter

ANIMALS = 10
Python = namedtuple('Python', ['weight', 'length'])


def get_random_python():
    # in kilograms
    weight = gauss(49.5, 5.5)
    # in metres
    length = gauss(3.2, 0.3)
    return Python(weight, length)


def main():
    pythons = [get_random_python() for _ in range(ANIMALS)]
    for python in sorted(pythons, key=attrgetter('weight'), reverse=True):
        print(python)


if __name__ == '__main__':
    main()