2016-10-31 5 views
-5

Dieser Code ist Teil eines Pacman Coding-Projekts, es dient dazu, das Geisterverhalten zu initialisieren. Kann mir jemand erklären, was es macht?Python Pacman Code: Erklärung benötigt

class GhostAgent(Agent): 
    def __init__(self, index): 
     self.index = index 

    def getAction(self, state): 
     dist = self.getDistribution(state) 
     if len(dist) == 0: 
      return Directions.STOP 
     else: 
      return util.chooseFromDistribution(dist) 

    def getDistribution(self, state): 
     "Returns a Counter encoding a distribution over actions from the provided state." 
     util.raiseNotDefined() 

Der Code umreißt dann verschiedene Klassen für verschiedene Verhaltensweisen. Danke!

+0

Sie müssen [Wie erstellt man ein minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) lesen. –

+0

Sie sagten gerade, was es tut: es initialisiert das Geisterverhalten. Was genau verstehen Sie nicht über diesen Code? –

+0

Die Methodennamen und der Kommentar scheinen ziemlich gut zu sagen, was sie tun – Sayse

Antwort

0
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.