Пример #1
0
 def testMakeSingleAttribRule(self):
     m = makeWeightedAddRule([[1,'foo']])
     d = Dummy()
     d.foo = 0
     self.assertEqual(0,m(d))
     d.foo = 3
     self.assertEqual(3,m(d))
Пример #2
0
 def pickInitialJobs(self):
     self.jobs = {}
     self.jobs["king"] = Job(name="king",level=1000,prefWeights=[1],attribWeights=[["age",1]])
     self.jobs["queen"] = Job(name="queen",level=1000,prefWeights=[1],attribWeights=[["age",1]])  
     
     men = [p for p in self.pop if p.gender == "M"]
     women = [p for p in self.pop if p.gender == "F"]
     print "Check, out of %d people we had %d men and %d women" % (len(self.pop),len(men),len(women))
     #TODO: do we want to have women "kings" or how to handle?
     self.king = pickBest(men,makeWeightedRule([[1,"charisma"],[2,"intelligence"],[3,"strength"]]))[0]
     self.king.setJob(self.jobs["king"])
     men.remove(self.king)
     self.queen = pickBest(women,makeWeightedAddRule([[2,"charisma"],[2,"intelligence"],[-0.1,"age"],[1,"body"]]))[0]
     self.queen.setJob(self.jobs["queen"])
     women.remove(self.queen)
     self.king.marry(self.queen)
     #TODO: allow king to order priorites based on his traits
     for name,attribsZipped  in [
             ["commander",[[1,"charisma"],[2,"strength"],[2,"body"],[1,"intelligence"]]],
             ["priest",[[2,"charisma"],[2,"intelligence"],[1,"age"]]],
             ["foreman",[[1,"charisma"],[2,"strength"],[2,"body"],[1,"intelligence"]]]]:
         guy = pickBest(men,makeWeightedRule(attribsZipped))[0]
         self.__dict__[name] = guy
         men.remove(guy)
         newJob = Job(name=name,level=500,prefWeights=[],attribWeights=attribsZipped)
         self.jobs[name] = newJob
         guy.setJob(newJob)
     court(men,women)
Пример #3
0
 def testMakeMultiAttribRule(self):
     m = makeWeightedAddRule([[1,'foo'],[2,'bar']])
     d = Dummy()
     d.foo = 0
     self.assertEqual(0,m(d))
     d.foo = 3
     self.assertEqual(3,m(d))
     d.bar = 4
     self.assertEqual(11,m(d))
Пример #4
0
    def pickInitialJobs(self):
        self.jobs = {}
        self.jobs["king"] = Job(name="king",
                                level=1000,
                                prefWeights=[1],
                                attribWeights=[["age", 1]])
        self.jobs["queen"] = Job(name="queen",
                                 level=1000,
                                 prefWeights=[1],
                                 attribWeights=[["age", 1]])

        men = [p for p in self.pop if p.gender == "M"]
        women = [p for p in self.pop if p.gender == "F"]
        print "Check, out of %d people we had %d men and %d women" % (len(
            self.pop), len(men), len(women))
        #TODO: do we want to have women "kings" or how to handle?
        self.king = pickBest(
            men,
            makeWeightedRule([[1, "charisma"], [2, "intelligence"],
                              [3, "strength"]]))[0]
        self.king.setJob(self.jobs["king"])
        men.remove(self.king)
        self.queen = pickBest(
            women,
            makeWeightedAddRule([[2, "charisma"], [2, "intelligence"],
                                 [-0.1, "age"], [1, "body"]]))[0]
        self.queen.setJob(self.jobs["queen"])
        women.remove(self.queen)
        self.king.marry(self.queen)
        #TODO: allow king to order priorites based on his traits
        for name, attribsZipped in [[
                "commander",
            [[1, "charisma"], [2, "strength"], [2, "body"],
             [1, "intelligence"]]
        ], ["priest", [[2, "charisma"], [2, "intelligence"], [1, "age"]]],
                                    [
                                        "foreman",
                                        [[1, "charisma"], [2, "strength"],
                                         [2, "body"], [1, "intelligence"]]
                                    ]]:
            guy = pickBest(men, makeWeightedRule(attribsZipped))[0]
            self.__dict__[name] = guy
            men.remove(guy)
            newJob = Job(name=name,
                         level=500,
                         prefWeights=[],
                         attribWeights=attribsZipped)
            self.jobs[name] = newJob
            guy.setJob(newJob)
        court(men, women)