Beispiel #1
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)
Beispiel #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)
Beispiel #3
0
    def common_courting(self, nm, nw):
        men = [Person() for _ in xrange(nm)]
        women = [Person() for _ in xrange(nw)]
        biggest = max(nm, nw) + 10
        for i in xrange(nm):
            men[i].gender = "M"
            for a in attribNames:
                men[i].__dict__[a] = biggest - i
        for i in xrange(nw):
            women[i].gender = "F"
            for a in attribNames:
                women[i].__dict__[a] = biggest - i

        court(men, women)
        for i in xrange(min(nm, nw)):
            self.assertEqual(men[i].spouse, women[i])
            self.assertEqual(women[i].spouse, men[i])
        if nm > nw:
            extra = men
        else:
            extra = women
        for i in xrange(min(nm, nw), max(nm, nw)):
            self.assertEqual(extra[i].spouse, None)
Beispiel #4
0
  def common_courting(self,nm,nw):
    men = [Person() for _ in xrange(nm)]
    women = [Person() for _ in xrange(nw)]
    biggest = max(nm,nw)+10
    for i in xrange(nm):
      men[i].gender = "M"
      for a in attribNames:
        men[i].__dict__[a] = biggest-i
    for i in xrange(nw):
      women[i].gender = "F"
      for a in attribNames:
        women[i].__dict__[a] = biggest-i

    court(men,women)
    for i in xrange(min(nm,nw)):
      self.assertEqual(men[i].spouse,women[i])
      self.assertEqual(women[i].spouse,men[i])
    if nm > nw:
      extra = men
    else:
      extra = women
    for i in xrange(min(nm,nw),max(nm,nw)):
      self.assertEqual(extra[i].spouse,None)