diff --git a/kuk.py b/kuk.py index a753af0..96adbcd 100644 --- a/kuk.py +++ b/kuk.py @@ -45,6 +45,87 @@ def save(): with open(config['mealHistoryFile'], 'w') as outfile: json.dump(mealHistory, outfile) +points = {} +points[3] = 52 +points[4] = 69 +points[5] = 80 +points[6] = 90 +points[7] = 102 +points[8] = 112 +points[9] = 120 +points[10] = 135 + +newcommers = ["Rick", "Morty", "Jerry", "Mr Poopy Buthole", "Karl Gustav VII", "Erik"] + +day = 1 +def newDay(): + global day + important = ['delicious', 'fabulous', 'very tasty', 'good', 'very good', 'not bad at all', 'favorable', 'ok', 'nutritious', 'italian', 'mouth-watering', 'objectively pleasing', 'aromatic', 'something to write home about', 'probably digestible', 'edible', 'a complex blend of carbon-based chemistry','not sanitized"); DROP TABLE MEALS;--', 'not poisoned', 'of unknown origin', 'crunchy', 'finger-licking good', 'fantastic', 'the best one we had so far', 'fancy', 'extrordinary', 'pleasant'] + if len(newcommers) > 0 and random.random() < 0.1: + newbe = Person(newcommers.pop()) + newbe.attendanceRate = 0.2 + random.random() * 0.8 + print "### NEW MEMBER ###" + print "!!! {} has joined the group !!!" + n_people = 0 + while n_people < 3: + attendees = [] + for name, person in people.iteritems(): + if random.random() < person.attendanceRate: + attendees.append(name) + + n_people = len(attendees) + + print "\n\n===Day {}===".format(str(day)) + print "{} people comming: ".format(str(n_people)) + print " ", + for name in attendees: + print name + ",", + print "" + + #selecting the kuk + cookies = [v for k,v in people.iteritems() if k in attendees] + scookies = sorted(cookies, key=operator.attrgetter('kukPoints'), reverse=True) + tied = [] + for person in scookies: + if person.kukPoints < scookies[0].kukPoints: + break + tied.append(person) + + if len(tied)==1: + print "{} has the most points ({}) and is going to cook".format(tied[0].name, str(tied[0].kukPoints)) + kuk = tied[0] + else: + print "{} people are tied with {} points each".format(str(len(tied)), str(tied[0].kukPoints)) + print " ", + for person in tied: + print person.name + ",", + print "" + kuk = random.choice(tied) + print "{} was selected at random and is going to cook".format(kuk.name) + cookies.remove(kuk) + + #kuking and points + reward = points[n_people] + payment = points[n_people] / (n_people-1) + kuk.kukPoints -= reward + kuk.kukMealCount += 1 + kuk.kukServingCount += n_people + kuk.eatenCount += 1 + for cookie in cookies: + cookie.kukPoints += payment + cookie.eatenCount += 1 + + m = Meal(kuk.name, day); + m.eaters = "many people" + + + print "" + print "{} cooked for {} people and cleared {} KukPoints".format(kuk.name, n_people, reward) + print "{} people gained {} KukPoints each".format(n_people-1, payment) + print "The meal was {}!".format(random.choice(important[:day])) + + day = day+1 + if __name__ == '__main__': try: @@ -67,104 +148,3 @@ if __name__ == '__main__': for name, person in people.iteritems(): person.attendanceRate = 0.2 + random.random() * 0.8 - - - points = {} - points[3] = 52 - points[4] = 69 - points[5] = 80 - points[6] = 90 - points[7] = 102 - points[8] = 112 - points[9] = 120 - points[10] = 135 - - important = ['delicious', 'fabulous', 'very tasty', 'good', 'very good', 'not bad at all', 'favorable', 'ok', 'nutritious', 'italian', 'mouth-watering', 'objectively pleasing', 'aromatic', 'something to write home about', 'probably digestible', 'edible', 'a complex blend of carbon-based chemistry','not sanitized"); DROP TABLE MEALS;--', 'not poisoned', 'of unknown origin', 'crunchy', 'finger-licking good', 'fantastic', 'the best one we had so far', 'fancy', 'extrordinary', 'pleasant'] - newcommers = ["Rick", "Morty", "Jerry", "Mr Poopy Buthole", "Karl Gustav VII", "Erik"] - - day = 1 - while True: - #somebody-joining module - if len(newcommers) > 0 and random.random() < 0.1: - newbe = Person(newcommers.pop()) - newbe.attendanceRate = 0.2 + random.random() * 0.8 - print "### NEW MEMBER ###" - print "!!! {} has joined the group !!!" - - n_people = 0 - while n_people < 3: - attendees = [] - for name, person in people.iteritems(): - if random.random() < person.attendanceRate: - attendees.append(name) - - n_people = len(attendees) - - print "\n\n===Day {}===".format(str(day)) - print "{} people comming: ".format(str(n_people)) - print " ", - for name in attendees: - print name + ",", - print "" - - #selecting the kuk - cookies = [v for k,v in people.iteritems() if k in attendees] - scookies = sorted(cookies, key=operator.attrgetter('kukPoints'), reverse=True) - tied = [] - for person in scookies: - if person.kukPoints < scookies[0].kukPoints: - break - tied.append(person) - - if len(tied)==1: - print "{} has the most points ({}) and is going to cook".format(tied[0].name, str(tied[0].kukPoints)) - kuk = tied[0] - else: - print "{} people are tied with {} points each".format(str(len(tied)), str(tied[0].kukPoints)) - print " ", - for person in tied: - print person.name + ",", - print "" - kuk = random.choice(tied) - print "{} was selected at random and is going to cook".format(kuk.name) - cookies.remove(kuk) - - #kuking and points - reward = points[n_people] - payment = points[n_people] / (n_people-1) - kuk.kukPoints -= reward - kuk.kukMealCount += 1 - kuk.kukServingCount += n_people - kuk.eatenCount += 1 - for cookie in cookies: - cookie.kukPoints += payment - cookie.eatenCount += 1 - - m = Meal(kuk.name, day); - m.eaters = "many people" - - - print "" - print "{} cooked for {} people and cleared {} KukPoints".format(kuk.name, n_people, reward) - print "{} people gained {} KukPoints each".format(n_people-1, payment) - print "The meal was {}!".format(random.choice(important[:day])) - - #loop and status - print "\nWhat now?" - r = raw_input("[C]ontinue | [B]reak | [S]how stats\n") - day += 1 - if r == 'b': - break - if(r=='s'): - print "STATUS:" - for name, person in people.iteritems(): - print "{} has {} kukPoints".format(name, str(person.kukPoints)) - print "\tcooked {} times, a total of {} servings, ate {} times".format(str(person.kukMealCount), str(person.kukServingCount), str(person.eatenCount)) - print "\nWhat now?" - r = raw_input("[C]ontinue | [B]reak | [S]ince I already showed the stats, this option does nothing\n") - if r == 'b': - break - - for mid, meal in mealHistory.iteritems(): - print "{} kuked for {} people".format(meal.kuk.name, str(len(meal.eaters))) - print "Thank you for using KUKCOUNTER"