mmh... ich glaube BlackJacks Vorschlag ist nicht unbedingt der performanteste, oder?
@sma: Map ist eine fertige Funktion in Python. Evtl sollte man den Namen also meiden.
Die Daten sollen doch folgende Form haben:
fuer eine ID bestehend aus x- und y-Koordinate bekomme ich eine beliebiges Objekt zurueck (zB eine Zahl, eine Klasse, einen String... ein Objekt eben).
Also hier mal was entsprechendes. Ich denke mal, wenn ich verstanden habe, was du haben moechtest, wird dir das sehr behilflich sein - eine Komplettloesung sozusagen:
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
# how to map a map
import sys
from pprint import pprint
class GameMap(object):
def __init__(self, initial_size=(100, 100)):
mapdata = list()
# Karte mit Nullen initialisieren
x, y = initial_size
for i in xrange(x):
mapdata.append(list("0"*y))
self._mapdata = mapdata
def set_field(self, koords, id):
""" setzt den Wert `id` an die Koordinaten `koords`
Argumente:
koords (tuple or list)
id (int or long or whatever you want ^^ )
"""
try:
x, y = koords
except TypeError:
raise AttributeError, "First argument must be a tuple or list!"
except ValueError:
raise AttributeError, "Koordinate list must be of length 2!"
self._mapdata[x][y] = id
def get_field(self, koords):
""" gibt die id auf den Koordinaten `koords` zurueck
Argumente:
koords (tuple or list)
"""
x, y = koords
return self._mapdata[x][y]
if __name__ == '__main__':
# kreiere eine Karte der Groesse 10x10 (Standardgroesse 100x100 Felder)
myMap = GameMap((10, 10))
# setze beliebige Felder mit set_fields(koord-tuple, value):
myMap.set_field((1, 8), 3)
myMap.set_field((3, 6), 5)
myMap.set_field((5, 4), 7)
myMap.set_field((7, 2), 11)
myMap.set_field((9, 0), 13)
# "drucke" die Karte zur Veranschaulichung:
pprint(myMap._mapdata)
...mit Sicherheit gibt es auch noch bessere Moeglichkeiten, aber das war die Erstbeste die mir einfiel

[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2