Gucke mir gerade die "adaption.py" an.
Es wird über folgende Felder abgeprüft, ob sie
hill=0
tree=0
sea=0
flat=0
dry=0
jungle=0
cold=0
sind.
Das erfolgt nach diesem Schema
(2= 2 Felder entfernt, 1 = 1 Feld entfernt, X = Stadtfeld, _ = nicht geprüftes Eckfeld):
_222_
21112
21X12
21112
_222_
Bei 2 Feldern Abstand wird das entsprechende Feld mit "1" bewertet, bei 1 Feld Abstand mit 3, nur für "See" wird der Wert 2 genommen.
Für das Stadtfeld wird "4" veranschlagt.
Ich glaube, die Berechnung für das Stadtfeld ist fehlerhaft. Der Trigger für die Prüfung ist "def onCityBuilt(self, argsList):"
Damit müssten aber "tree" und "jungle" jeweils den Wert "0" liefern, denn dort steht nun die Stadt (die Prüfung erfolgt ja erst nach der Gründung!).
Ich denke, in den entsprechenden Block gehört noch eine Schleife:
If
Hill AND Sea AND Flat AND Dry AND Cold == 0
Tree = Tree +4 AND Jungle = Jungle +5
(ich habe Jungle auf +5 gesetzt, weil es sonst zu einem "unentschieden" kommen könnte und ich in diesem Fall die "jungle"-Adaption für wichtiger halte, damit man etwas mit Dschungel anfangen kann. Wald ist ja schließlich auch nicht adaptiert besser als Dschungel)
Ergänzung:
Ich persönlich halte die See-Adaption für so wenig sinnvoll, daß ich deren Wert auf 1 auch für 1-Feld-Abstand setzen würde. Das mag gelegentlich auf Inselkarten schlechter ausgehen, aber ich vermute, daß die meisten Leute auf Kontinentalkarten irgendeiner Ausprägung spielen. Dennoch kann es passieren, daß man an einer "ungünstig" geformten Küste hochkommt, und dann als Kontinentalmacht mit der "See-Adaption" behaftet ist...
Weiterhin sind da 21 Blöcke mit Prüfungen angelegt, die 1) nicht ordentlich sortiert sind, und 2) ständig durchlaufen werden.
Könnte man da nicht eine Schleife bauen:
FOR i=-2 to i=+2
DO
if x=i
if y=i
....
(Pseudo-Code, aber ich hoffe, es ist klar, was ich meine...)
Und als letztes, mir ist nicht klar, ob die ganze Prüfung nach "if(city.isCapital()):" = FALSE abgebrochen wird, oder dennoch die Untersuchung für jede Stadtgründung durchgeführt wird.
Könnte jemand, der besser in Python ist als ich, meine Überlegungen mal prüfen?
(Muß mich wohl doch mal mit Python beschäftigen )