def getInvalidFields(self):
        invalidFields = []

        # Datatype checking
        if (not DatatypeUtils.isIntegerString(self.view.stepsVar.get())):
            invalidFields.append(
                "'Groesse des Ringpuffers' muss eine Ganzzahl sein (zum Beispiel: 1)!"
            )
        if (not DatatypeUtils.isFloatString(self.view.alphaVar.get())):
            invalidFields.append(
                "'Alpha' muss eine Kommazahl sein (zum Beispiel: 1.0)!")
        if (not DatatypeUtils.isFloatString(self.view.gammaVar.get())):
            invalidFields.append(
                "'Gamma' muss eine Kommazahl sein (zum Beispiel: 1.0)!")
        if (not DatatypeUtils.isFloatString(self.view.epsilonVar.get())):
            invalidFields.append(
                "'Epsilon' muss eine Kommazahl sein (zum Beispiel: 1.0)!")
        if (not DatatypeUtils.isFloatString(self.view.lambdaVar.get())):
            invalidFields.append(
                "'Lambda' muss eine Kommazahl sein (zum Beispiel: 1.0)!")

        # Value checking
        # TODO!

        return invalidFields
示例#2
0
    def startApplication(self):
        if (not self.validateData('Fehlerhafte Einstellungen!', 'Einige Einstellungswerte sind ungueltig: ')):
            return

        singleStepModus = DatatypeUtils.stringToBoolean(self.view.singleStep.get())
        if singleStepModus:
            print("single step modus active ")
            PacmanGlobals.singleSteps = singleStepModus
        else:
            PacmanGlobals.singleSteps = singleStepModus

        PacmanGlobals.logIt = DatatypeUtils.stringToBoolean(self.view.logIt.get())

        numGhostsValue = DatatypeUtils.stringToInteger(self.view.numGhostsVar.get())
        PacmanGlobals.numGhostAgents = numGhostsValue

        debugModeSet = DatatypeUtils.stringToBoolean((self.view.displayDebugVar.get()))
        PacmanGlobals.debugModeBool = debugModeSet

        self.saveSettingsToConfigFile()
        
        self.view.destroy()
        
        #arguments = self.getArgumentString()
        #subprocess.call("python pacman.py " + arguments, shell=True)
        
        argumentArray = self.getArgumentArray()
        startByLauncher(argumentArray)
 def processGames(self):
     maxNumTraining = DatatypeUtils.stringToInteger(self.view.numTrainingVar.get())
     increment = DatatypeUtils.stringToInteger(self.view.incrementVar.get())
     
     #from pympler import tracker
     #memory_tracker = tracker.SummaryTracker()
     
     for numTraining in range(0, maxNumTraining, increment):
         self.processGame(numTraining)
         GameState.getAndResetExplored()
 def getArgumentArray(self, numTrainings):
     argumentValues = []
     
     argumentValues.append("-x " + str(numTrainings))
     numGamesValue = DatatypeUtils.stringToInteger(self.view.numGamesVar.get()) + numTrainings
     argumentValues.append("--numGames=" + str(numGamesValue))
     argumentValues.append("--numghosts=" + self.view.numGhostsVar.get())
     argumentValues.append("--layout=" + self.view.layoutVar.get())
     argumentValues.append("--pacman=" + self.view.pacmanVar.get())
     if (DatatypeUtils.stringToBoolean(self.view.fixRandomSeedVar.get())):
         argumentValues.append("--fixRandomSeed")
     
     argumentValues.append("--textGraphics")
     argumentValues.append("--quietTextGraphics")
         
     return argumentValues
 def getInvalidFields(self):        
     invalidFields = []
     
     # Datatype checking
     if (not DatatypeUtils.isIntegerString(self.view.stepsVar.get())):
         invalidFields.append("'Groesse des Ringpuffers' muss eine Ganzzahl sein (zum Beispiel: 1)!")
     if (not DatatypeUtils.isFloatString(self.view.alphaVar.get())):
         invalidFields.append("'Alpha' muss eine Kommazahl sein (zum Beispiel: 1.0)!")
     if (not DatatypeUtils.isFloatString(self.view.gammaVar.get())):
         invalidFields.append("'Gamma' muss eine Kommazahl sein (zum Beispiel: 1.0)!")
     if (not DatatypeUtils.isFloatString(self.view.epsilonVar.get())):
         invalidFields.append("'Epsilon' muss eine Kommazahl sein (zum Beispiel: 1.0)!")
     if (not DatatypeUtils.isFloatString(self.view.lambdaVar.get())):
         invalidFields.append("'Lambda' muss eine Kommazahl sein (zum Beispiel: 1.0)!")
     
     # Value checking
     # TODO!
     
     return invalidFields
 def startApplication(self):
     if (not self.validateData('Fehlerhafte Einstellungen!', 'Einige Einstellungswerte sind ungueltig: ', False)):
         return
     
     numGhostsValue = DatatypeUtils.stringToInteger(self.view.numGhostsVar.get())
     PacmanGlobals.numGhostAgents = numGhostsValue
     
     self.saveSettingsToConfigFile()
     
     self.view.destroy()
     
     if not os.path.exists(OUTPUT_DIR):
         os.makedirs(OUTPUT_DIR)
     self.writeConfiguration()
     self.processGames()
    def getInvalidFields(self):        
        invalidFields = []
        
        # Datatype checking
        if (not DatatypeUtils.isIntegerString(self.view.numTrainingVar.get())):
            invalidFields.append("'Anzahl der Trainings' muss eine Ganzzahl sein (zum Beispiel: 1)!")
        if (not DatatypeUtils.isIntegerString(self.view.numGamesVar.get())):
            invalidFields.append("'Anzahl der Spiele' muss eine Ganzzahl sein (zum Beispiel: 1)!")
        if (not DatatypeUtils.isIntegerString(self.view.numGhostsVar.get())):
            invalidFields.append("'Anzahl der Geister' muss eine Ganzzahl sein (zum Beispiel: 4)!")
        if (not DatatypeUtils.isString(self.view.layoutVar.get())):
            invalidFields.append("'Spielfeld' muss eine Zeichenkette sein (zum Beispiel: mediumClassic)!")
        if (not DatatypeUtils.isString(self.view.pacmanVar.get())):
            invalidFields.append("'Pacman-Agent' muss eine Zeichenkette sein (zum Beispiel: KeyboardAgent)!")
        if (not DatatypeUtils.isBooleanString(self.view.fixRandomSeedVar.get())):
            invalidFields.append("'Feste Random-Seed' muss ein Wahrheitswert sein (True oder False)!")
        
        if (not DatatypeUtils.isFloatString(self.view.zoomVar.get())):
            invalidFields.append("'Zoomfaktor' muss eine Kommazahl sein (zum Beispiel: 1.0)!")
        if (not DatatypeUtils.isFloatString(self.view.frameTimeVar.get())):
            invalidFields.append("'Spielgeschwindigkeit' muss eine Kommazahl sein (zum Beispiel: 0.1)!")
        if (not DatatypeUtils.isBooleanString(self.view.textGraphicsVar.get())):
            invalidFields.append("'Ausgabe als Text' muss ein Wahrheitswert sein (True oder False)!")
        if (not DatatypeUtils.isBooleanString(self.view.quietTextGraphicsVar.get())):
            invalidFields.append("'Minimale Ausgabe' muss ein Wahrheitswert sein (True oder False)!")
        
        # Value checking (numTraining)
        if (DatatypeUtils.isIntegerString(self.view.numTrainingVar.get())):
            numTrainingValue = DatatypeUtils.stringToInteger(self.view.numTrainingVar.get())
            if (numTrainingValue < 0):
                invalidFields.append("'Anzahl der Trainings' muss groesser oder gleich " + str(0) + " sein!")
        
        # Value checking (numGames)
        if (DatatypeUtils.isIntegerString(self.view.numGamesVar.get())):
            numGamesValue = DatatypeUtils.stringToInteger(self.view.numGamesVar.get())
            if (numGamesValue < 1):
                invalidFields.append("'Anzahl der Spiele' muss groesser oder gleich " + str(1) + " sein!")
        
        # Value checking (numGhosts)
        if (DatatypeUtils.isIntegerString(self.view.numGhostsVar.get())):
            numGhostsValue = DatatypeUtils.stringToInteger(self.view.numGhostsVar.get())
            if (numGhostsValue < 0):
                invalidFields.append("'Anzahl der Geister' muss groesser oder gleich " + str(0) + " sein!")
            
            layout = self.view.layoutVar.get()
            mapNumGhosts = self.getMapNumGhosts(layout)
            if (mapNumGhosts > 5):
                mapNumGhosts = 5
            
            if (numGhostsValue > mapNumGhosts):
                invalidFields.append("'Anzahl der Geister' muss fuer Spielfeld '" + layout + "' kleiner oder gleich " + str(mapNumGhosts) + " sein!")

        # Value checking (zoom)
        if (DatatypeUtils.isFloatString(self.view.zoomVar.get())):
            zoomValue = DatatypeUtils.stringToFloat(self.view.zoomVar.get())
            if (zoomValue > MAX_ZOOM):
                invalidFields.append("'Zoomfaktor' muss kleiner oder gleich " + str(MAX_ZOOM) + " sein!")
            if (zoomValue < MIN_ZOOM):
                invalidFields.append("'Zoomfaktor' muss groesser oder gleich " + str(MIN_ZOOM) + " sein!")
        
        # Value checking (frameTime)
        if (DatatypeUtils.isFloatString(self.view.frameTimeVar.get())):
            frameTimeValue = DatatypeUtils.stringToFloat(self.view.frameTimeVar.get())
            if (frameTimeValue > MAX_SPEED):
                invalidFields.append("'Spielgeschwindigkeit' muss kleiner oder gleich " + str(MAX_SPEED) + " sein!")
            if (frameTimeValue < MIN_SPEED):
                invalidFields.append("'Spielgeschwindigkeit' muss groesser oder gleich " + str(MIN_SPEED) + " sein!")
        
        return invalidFields
示例#8
0
    def getInvalidFields(self):        
        invalidFields = []
        
        # Datatype checking
        if (not DatatypeUtils.isIntegerString(self.view.numTrainingVar.get())):
            invalidFields.append("'Anzahl der Trainings' muss eine Ganzzahl sein (zum Beispiel: 1)!")
        if (not DatatypeUtils.isIntegerString(self.view.numGamesVar.get())):
            invalidFields.append("'Anzahl der Spiele' muss eine Ganzzahl sein (zum Beispiel: 1)!")
        if (not DatatypeUtils.isIntegerString(self.view.numGhostsVar.get())):
            invalidFields.append("'Anzahl der Geister' muss eine Ganzzahl sein (zum Beispiel: 4)!")
        if (not DatatypeUtils.isString(self.view.layoutVar.get())):
            invalidFields.append("'Spielfeld' muss eine Zeichenkette sein (zum Beispiel: mediumClassic)!")
        if (not DatatypeUtils.isString(self.view.pacmanVar.get())):
            invalidFields.append("'Pacman-Agent' muss eine Zeichenkette sein (zum Beispiel: KeyboardAgent)!")
        if (not DatatypeUtils.isBooleanString(self.view.fixRandomSeedVar.get())):
            invalidFields.append("'Feste Random-Seed' muss ein Wahrheitswert sein (True oder False)!")
        
        if (not DatatypeUtils.isFloatString(self.view.zoomVar.get())):
            invalidFields.append("'Zoomfaktor' muss eine Kommazahl sein (zum Beispiel: 1.0)!")
        if (not DatatypeUtils.isFloatString(self.view.frameTimeVar.get())):
            invalidFields.append("'Spielgeschwindigkeit' muss eine Kommazahl sein (zum Beispiel: 0.1)!")
        if (not DatatypeUtils.isBooleanString(self.view.textGraphicsVar.get())):
            invalidFields.append("'Ausgabe als Text' muss ein Wahrheitswert sein (True oder False)!")
        if (not DatatypeUtils.isBooleanString(self.view.quietTextGraphicsVar.get())):
            invalidFields.append("'Minimale Ausgabe' muss ein Wahrheitswert sein (True oder False)!")
        
        # Value checking (numTraining)
        if (DatatypeUtils.isIntegerString(self.view.numTrainingVar.get())):
            numTrainingValue = DatatypeUtils.stringToInteger(self.view.numTrainingVar.get())
            if (numTrainingValue < 0):
                invalidFields.append("'Anzahl der Trainings' muss groesser oder gleich " + str(0) + " sein!")
        
        # Value checking (numGames)
        if (DatatypeUtils.isIntegerString(self.view.numGamesVar.get())):
            numGamesValue = DatatypeUtils.stringToInteger(self.view.numGamesVar.get())
            if (numGamesValue < 1):
                invalidFields.append("'Anzahl der Spiele' muss groesser oder gleich " + str(1) + " sein!")
        
        # Value checking (numGhosts)
        if (DatatypeUtils.isIntegerString(self.view.numGhostsVar.get())):
            numGhostsValue = DatatypeUtils.stringToInteger(self.view.numGhostsVar.get())
            if (numGhostsValue < 0):
                invalidFields.append("'Anzahl der Geister' muss groesser oder gleich " + str(0) + " sein!")
            
            layout = self.view.layoutVar.get()
            mapNumGhosts = self.getMapNumGhosts(layout)
            if (mapNumGhosts > 5):
                mapNumGhosts = 5
            
            if (numGhostsValue > mapNumGhosts):
                invalidFields.append("'Anzahl der Geister' muss fuer Spielfeld '" + layout + "' kleiner oder gleich " + str(mapNumGhosts) + " sein!")

        # Value checking (zoom)
        if (DatatypeUtils.isFloatString(self.view.zoomVar.get())):
            zoomValue = DatatypeUtils.stringToFloat(self.view.zoomVar.get())
            if (zoomValue > MAX_ZOOM):
                invalidFields.append("'Zoomfaktor' muss kleiner oder gleich " + str(MAX_ZOOM) + " sein!")
            if (zoomValue < MIN_ZOOM):
                invalidFields.append("'Zoomfaktor' muss groesser oder gleich " + str(MIN_ZOOM) + " sein!")
        
        # Value checking (frameTime)
        if (DatatypeUtils.isFloatString(self.view.frameTimeVar.get())):
            frameTimeValue = DatatypeUtils.stringToFloat(self.view.frameTimeVar.get())
            if (frameTimeValue > MAX_SPEED):
                invalidFields.append("'Spielgeschwindigkeit' muss kleiner oder gleich " + str(MAX_SPEED) + " sein!")
            if (frameTimeValue < MIN_SPEED):
                invalidFields.append("'Spielgeschwindigkeit' muss groesser oder gleich " + str(MIN_SPEED) + " sein!")
        
        return invalidFields
 def getInvalidFields(self, justLaunched):        
     invalidFields = []
     
     # Datatype checking
     if (not DatatypeUtils.isIntegerString(self.view.numTrainingVar.get())):
         invalidFields.append("'Maximale Anzahl der Trainings' muss eine Ganzzahl sein (zum Beispiel: 100)!")
     if (not DatatypeUtils.isIntegerString(self.view.incrementVar.get())):
         invalidFields.append("'Abstufungen der Trainings' muss eine Ganzzahl sein (zum Beispiel: 10)!")
     if (not DatatypeUtils.isIntegerString(self.view.numGamesVar.get())):
         invalidFields.append("'Anzahl der Wertungsspiele' muss eine Ganzzahl sein (zum Beispiel: 20)!")
     if (not DatatypeUtils.isString(self.view.outputFilenameVar.get())):
         invalidFields.append("'Ausgabedatei' muss eine Zeichenkette sein (zum Beispiel: output_001.csv)!")
     
     if (not DatatypeUtils.isIntegerString(self.view.numGhostsVar.get())):
         invalidFields.append("'Anzahl der Geister' muss eine Ganzzahl sein (zum Beispiel: 4)!")
     if (not DatatypeUtils.isString(self.view.layoutVar.get())):
         invalidFields.append("'Spielfeld' muss eine Zeichenkette sein (zum Beispiel: mediumClassic)!")
     if (not DatatypeUtils.isString(self.view.pacmanVar.get())):
         invalidFields.append("'Pacman-Agent' muss eine Zeichenkette sein (zum Beispiel: KeyboardAgent)!")
     if (not DatatypeUtils.isBooleanString(self.view.fixRandomSeedVar.get())):
         invalidFields.append("'Feste Random-Seed' muss ein Wahrheitswert sein (True oder False)!")
     
     # Value checking (numTraining)
     if (DatatypeUtils.isIntegerString(self.view.numTrainingVar.get())):
         numTrainingValue = DatatypeUtils.stringToInteger(self.view.numTrainingVar.get())
         if (numTrainingValue < 0):
             invalidFields.append("'Maximale Anzahl der Trainings' muss groesser oder gleich " + str(0) + " sein!")
     
     # Value checking (increment)
     if (DatatypeUtils.isIntegerString(self.view.incrementVar.get())):
         incrementValue = DatatypeUtils.stringToInteger(self.view.incrementVar.get())
         if (incrementValue < 0):
             invalidFields.append("'Abstufungen der Trainings' muss groesser oder gleich " + str(0) + " sein!")
     
     # Value checking (numGames)
     if (DatatypeUtils.isIntegerString(self.view.numGamesVar.get())):
         numGamesValue = DatatypeUtils.stringToInteger(self.view.numGamesVar.get())
         if (numGamesValue < 1):
             invalidFields.append("'Anzahl der Spiele' muss groesser oder gleich " + str(1) + " sein!")
     
     # Value checking (outputFilename)
     if (DatatypeUtils.isString(self.view.outputFilenameVar.get()) and (not justLaunched)):
         if self.outputFileAlreadyExists():
             invalidFields.append("Ausgabedatei '" + self.view.outputFilenameVar.get() + "' ist bereits vorhanden!")
     
     # Value checking (numGhosts)
     if (DatatypeUtils.isIntegerString(self.view.numGhostsVar.get())):
         numGhostsValue = DatatypeUtils.stringToInteger(self.view.numGhostsVar.get())
         if (numGhostsValue < 0):
             invalidFields.append("'Anzahl der Geister' muss groesser oder gleich " + str(0) + " sein!")
         
         layout = self.view.layoutVar.get()
         mapNumGhosts = self.getMapNumGhosts(layout)
         if (mapNumGhosts > 5):
             mapNumGhosts = 5
         
         if (numGhostsValue > mapNumGhosts):
             invalidFields.append("'Anzahl der Geister' muss fuer Spielfeld '" + layout + "' kleiner oder gleich " + str(mapNumGhosts) + " sein!")
     
     return invalidFields