def getAction(self, state):
dist = self.getDistribution(state)
if len(dist) == 0:
return Directions.STOP
else:
return util.chooseFromDistribution(dist)
Es definiert die Methode (Funktion) getAction()
für Objekte der Klasse, wo dieser Code geschrieben ist (i. E. Die Klasse GhostAgent
). Es hängt von 2 Parametern:
self
- es das ist mandatory
(und versteckt) Parameter und Mittel Objekt (der Klasse GhostAgent
), auf die das Verfahren getAction()
aufgebracht, beispielsweise durch den Befehl
ghostAgent3.getAction(status);
in diesem Fall self
bedeutet ghostAgent3
state
(nicht in Parameterliste aufgeführt, versteckt) - es ist ein para Meter von dem hängt das Verhalten dieser Methode (getAction()
)
Der Körper dieser Methode überprüft, ob die Verteilerliste der gegebenen state
erschöpft ist - wenn ja, es stoppt Richtungen wählen, wenn nicht, wird es eine Richtung von dieser gewählt Verteilerliste eine neue Richtung.
def getDistribution(self, state):
"Returns a Counter encoding a distribution over actions from the provided state."
util.raiseNotDefined()
Diese wird ein Verfahren sein, in früheren Verfahren (getAction()
) - jetzt ist es nur syntaktisch korrektes Stück Code mit der Beschreibung (Gibt einen Zähler codiert, eine Verteilung über die aus dem bereitgestellten Zustand) und die einzige „Aktion.“ - es absichtlichlöst eine Ausnahme (wenn es verwendet wird - genannt) - das Programm wird Finish vorzeitig mit der Meldung, dass t seine Methode ist derzeit nicht definiert.
Es ist so etwas wie ein Vorlage für zukünftige Arbeit.
Sie müssen [Wie erstellt man ein minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) lesen. –
Sie sagten gerade, was es tut: es initialisiert das Geisterverhalten. Was genau verstehen Sie nicht über diesen Code? –
Die Methodennamen und der Kommentar scheinen ziemlich gut zu sagen, was sie tun – Sayse