objektorientierte Programmierung (Matrix/Map)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Python123
User
Beiträge: 1
Registriert: Dienstag 15. Dezember 2015, 11:44

In unserer aufgabe müssen wir eine art world map erstellen mit creatures wie mouse und corn ,die nach jeder Spielrunde auch sterben,sich vermehren können etc.
die map die wir gemacht haben ist ein Feld aus punkten (erstellt durch die matrix

Code: Alles auswählen

WIDTH = 79
HEIGHT = 24

map = [["." for i in range(WIDTH) ] for j in range(HEIGHT) ]

for i in range(len(map)):
    print()
    for j in map[i]:
        print("%s" %j, end = '') )
leider wissen wir jetzt nicht,wie wir die dinge in die matrix (auch punktgenau) einsetzen können. außerdem müssen wir Klassen anlegen

kann da einer helfen? danke im vorraus
Zuletzt geändert von Anonymous am Dienstag 15. Dezember 2015, 13:31, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17739
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo Python123,
als erstes solltet ihr mal mit Funktionen arbeiten:

Code: Alles auswählen

def create_map(width, height):
    return [["."] * width for _ in range(height) ]

def print_map(map):
    for line in map:
        print(''.join(line))
Auf verschachtelte Listen greift man gleich zu, wie auf einzelne Listen, nur eben, dass man die Indizes jeweils in eckigen Klammern setzen muß:

Code: Alles auswählen

map[row][column] = "x"
Benutzeravatar
noisefloor
User
Beiträge: 3854
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

Willkommen im Forum :-)
leider wissen wir jetzt nicht,wie wir die dinge in die matrix (auch punktgenau) einsetzen können.
Heißt, ihr müsst den Default-Wert (bei euch also den Punkt .) durch ein andere Zeichen ersetzen? Das geht per Index-Zugriff.
Ihr habt ja einen Liste von Listen. Um den 1. Punkt in der 1. Liste zu ersetzen, z.B. durch ein `M`, wäre der Befehl

map[0][0]='M'
außerdem müssen wir Klassen anlegen
Das ist ein bisschen vage... Wofür Klassen anlegen?

Übrigens: `map` ist ein schlechter Name für eine Variable, da `map` auch der Name einer eingebauten Funktion ist, die du damit überschreibst.

Gruß, noisefloor
BlackJack

Wenn die Weltkarte in einer Klasse gekapselt werden soll, dann würde es sich anbieten die Methoden `__getitem__()`, `__setitem__()`, und eventuell `__contains__()` zu implementieren, so dass man Koordinaten als Tupel auf Feldwerte abbilden kann ohne davon abhängig zu sein wie genau die Karte intern gespeichert wird. Statt einer Schleife die die Karte ausgibt könnte man dann auch `__str__()` so implementieren das die Karte als Zeichenkette zurückgegeben wird und man dann beispielsweise ganz einfach ``print(worldmap)`` mit so einem Exemplar schreiben kann um die Karte auszugeben.
Antworten