Пример #1
0
class RiskPythonToCLIPS:
    def __init__(self):
        self.Clips = CLIPS()
        self.loadClipsFile()
        self.translateContinentsToFacts()
        self.translateAdjacentCountriesDToDeffacts()
        self.reset()

    def loadClipsFile(self):
        self.Clips.load("AutoP1.clp")

    def printFacts(self):
        self.Clips.printFacts()

    def reset(self):
        return self.Clips.reset()

    def run(self):
        return self.Clips.run()

    def exit(self):
        self.Clips.exit()

    def translateAdjacentCountriesDToDeffacts(self):
        deffactString = ""
        for country in adjacentCountriesD:
            # next line isn't readable TROLOLOLOLOL
            deffactString += " (%s (country %s) (adjacent-to %s)) " % ("adjacent-countries", country.replace(" ", "-"), " ".join([cntry.replace(" ", "-") for cntry in adjacentCountriesD[country]]))
        self.Clips.deffacts("adjacents", deffactString)

    def translateContinentsToFacts(self):
        deffactString = ""
        for continent in continentD:
            deffactString += " (%s (name %s) (countries %s)) " % ("continent", continent.replace(" ", "-"), " ".join([cntry.replace(" ", "-") for cntry in continentD[continent]]))
        self.Clips.deffacts("continents", deffactString)

    def translateBookBonusToFact(self, bookArmiesBonusList):
        strBookArmiesList = []
        for num in bookArmiesBonusList:
            strBookArmiesList.append(str(num))
        factString = "(bookArmiesBonusList %s)" % (" ".join(strBookArmiesList))
        self.Clips.assertFact(factString)

    def translatePlayerInfoToFact(self, player, playerDMe):
        cardCountryString = ""
        for card in playerDMe[player]["cards"]:
            cardCountryString += card[0].replace(" ", "-") + " " ##makes country name CLIPS friendly
            cardFactString = "(card (country %s) (type %s))" % (card[0].replace(" ", "-"), card[1])
            self.Clips.assertFact(cardFactString)
        playerFactString = "(player-info (player %s) (armies %s) (card-countries %s))" % (player, playerDMe[player]["armies"], cardCountryString)
        self.Clips.assertFact(playerFactString)

    def translateCountryDToFacts(self, countryD):
        for country in countryD:
            factString = "(%s (name %s) (owner %s) (armies %s))" % ("country", country.replace(" ", "-"), countryD[country]["owner"], countryD[country]["armies"])
            self.Clips.assertFact(factString)

    def initiateBookSelectionAndReturnList(self, bookArmiesBonusList, player, playerDMe):
        self.translateBookBonusToFact(bookArmiesBonusList)
        self.translatePlayerInfoToFact(player, playerDMe)
        self.Clips.assertFact("(phase book-select)")
        return eval(self.Clips.run())

    def initiateArmyPlacementAndReturn(self, countryD, player, playerDMe):
        self.translatePlayerInfoToFact(player, playerDMe)
        self.translateCountryDToFacts(countryD)
        self.Clips.assertFact("(phase army-placement)")
        return eval(self.Clips.run())
Пример #2
0
 def __init__(self):
     self.Clips = CLIPS()
     self.loadClipsFile()
     self.translateContinentsToFacts()
     self.translateAdjacentCountriesDToDeffacts()
     self.reset()
Пример #3
0
def input_from_user():
    major_premise = input("Type out major premise:\n")
    minor_premise = input("Type out minor premise:\n")
    conclusion = input("Type out conclusion:\n")
    user_input = [major_premise, minor_premise, conclusion]
    CLIPS.run_CLIPS(user_input)