Automatically designated to be werewolves

Assignment Help Business Management
Reference no: EM132285386

Now, you want to play a game, inspired by Werewolf, with a group of your friends. A Player can either be a Werewolf, or a Villager. In this game, you can have 4 or more players. The first 2 players are automatically designated to be Werewolves, while everyone else is assigned to be a Villager. One play of the game involves all of the players voting for a player who they believe to be a Werewolf; in this implementation, all players, except yourself, arbitrarily vote for themselves. At the end of each play, the player with the most votes is removed from the game. Each play of the game alternates between daytime and nighttime. If it is nighttime, only votes by werewolves count.

The game ends when there are no werewolves left, which means the villagers won, or when there are more werewolves than villagers, which means the werewolves have won.

However, there are bugs in the code for the game! Read through the code and fix all of the bugs so that the game can work properly. As hint, there are at least four bugs in the code! For this lab there is a hidden test. In other words, we will be running a test against your code that you don't have access to, so make sure to be thorough! You should not need to add any lines - only edit existing lines.

def get_most_common_element(lst):
return max(set(lst), key=lst.count)

class Player:
def __init__(self, name):
self.name = name
self.active = True

class Werewolf(Player):
def __init__(self, name):
Player.__init__(self, name)

def reveal_player_type(self):
print("You are a werewolf!")

class Villager(Player):
def __init__(self, name):
Villager.__init__(self, name)

def reveal_player_type(self):
print("You are a villager!")

class Game:
def __init__(self, players, your_name):
"""
Sets the game up. players is a list of strings that are names of all
of the players. your_name is a string and must be one of the players.
>>> game = Game(["a", "b", "c", "d", "e", "f"], "a")
You are a werewolf!
>>> game.your_name
'a'
>>> game.play("b")
'Keep playing!'
>>> len(game.werewolves)
1
>>> len(game.villagers)
4
>>> game.play("c")
'Keep playing!'
>>> game.play("d")
'Keep playing!'
>>> game.play("a")
'Villagers win!'
>>> game.werewolves
[]
>>> len(game.villagers)
2
"""
if len(players) < 4:
raise Exception("Not enough players!")
names = players[0:2]
self.your_name = your_name
self.werewolves = [Werewolf(self, w) for w in names]
self.villagers = [Villager(self, p) for p in players if p not in names]
self.name_to_player = {}

for werewolf in self.werewolves:
self.name_to_player[werewolf.name] = werewolf

for villager in self.villagers:
self.name_to_player[villager.name] = villager

player = self.name_to_player[your_name]
player.reveal_player_type()

self.state = "night"

def play(self, vote):
"""
While the game is still being played, make a move. vote is the player
who you vote for, because you believe they are on the opposing team.
You can continue playing until either the villagers or the werewolves win.
"""
self.make_move(vote)
if not self.check_if_end_of_game():
return "Keep playing!"
else:
if len(self.werewolves) == 0:
return "Villagers win!"
elif len(self.werewolves) > len(self.villagers):
return "Werewolves win!"

def make_move(self, vote):
"""
Every player votes (players arbitrarily vote for themselves). Then,
if the state of the game is day, remove the player with the most votes
overall, and set the state to night. If the state of the game is night,
remove the player with the most votes by werewolves, and set the state to day.
"""
votes = []
werewolf_votes = []

if self.state == "night":
werewolf_votes.append(vote)
votes.append(vote)

for player in self.name_to_player:
if self.state == "night" and isinstance(player, Werewolf(name)):
werewolf_votes.append(player)
votes.append(player)

if self.state == "day":
majority_vote = get_most_common_element(votes)
self.state = "night"
elif self.state == "night":
majority_vote = get_most_common_element(werewolf_votes)
self.state = "day"

if majority_vote in self.name_to_player:
self.remove_player(majority_vote)
else:
raise Exception("Invalid player.")

def remove_player(player_to_remove):
"""
Set the player with the majority vote to inactive, and remove it from
its respective list of players.
"""
player = self.name_to_player[player_to_remove]
self.active = False

if player in self.werewolves:
self.werewolves.remove(player)
elif player in self.villagers:
self.villagers.remove(player)
else:
print("Player already removed!")

def check_if_end_of_game(self):
"""
Returns True if the game is over, and False if it is not. The game is over when
there are no werewolves remaining, or if there are more werewolves than villagers.
"""

if len(Game.werewolves) == 0:
return True
elif len(Game.werewolves) > len(Game.villagers):
return True
else:
return False

Reference no: EM132285386

Questions Cloud

What will the marginal cost of capital be immediately : At what size capital structure will the firm run out of retained earnings? Round your response to the nearest whole dollar.
Identify one recurring situation that brings stress : Identify one recurring situation that brings stress with family members, the partner, or friends.
What could be the result if self-awareness is not attained : As a leader, it is important to not only understand what common biases are, but to also have the self-awareness to understand those that they possess.
Develop a user training program on security awareness : What would you do if you needed to develop a user training program on security awareness and security policy implementation?
Automatically designated to be werewolves : Now, you want to play a game, inspired by Werewolf, with a group of your friends. A Player can either be a Werewolf, or a Villager.
Development to influence nursing practice and health care : Investigate a public health issue related to an environmental issue within the U.S. health care delivery system and examine its effect on a specific population
Rights for a student who is leaving prematurely : Need step-by-step IT security policy for handling user accounts/rights for a student who is leaving prematurely (drops, is expelled, and so on).
Command-and-control style of emergency management : What is the command-and-control style of emergency management?
Discuss the relevance today healthcare environment : The traditional role of data architects has not changed. They are traditionally understood as professionals who help design, manage and improve database.

Reviews

Write a Review

Business Management Questions & Answers

  Primarily concerned with project interfaces

Project managers are primarily concerned with project interfaces. At what rate do these interfaces increase with increasing project size?

  Discuss concept of the top-down and bottom-up budgeting

What is the difference between top-down budgeting and bottom-up budgeting concepts? When would you use one concept versus another? Based on your experience.

  Reasonable parameters for the picnic

Write a scope statement to include the reasonable parameters for the picnic (location requirements, numbers of people, entertainment, menu, etc.). This should include the purpose and desired outcomes for the event. It should include the estim..

  Describe the required communication mechanism

Describe the required communication mechanism. Explain the necessary frequency of communication. Explain the communication format. Explain whether or not there are secondary stakeholders involved.

  Pro-forma financial statements

Pro-Forma Financial Statements

  Advantages and disadvantages of an organization

What would be advantages and disadvantages of an organization's Human Resources department aligning

  History of the evolution of human resources department

Can you provide at least 3 paragraphs regarding with trace the history of the evolution of the Human Resources Department?

  Research about any leader in business

Research about any leader in business, politics, or society who have impacted society in a positive way.

  Principles of motivational theories

How might a team be strengthened by the application of the principles of motivational theories?

  Hardball tactics in a hypothetical negotiation

What is an example of how one would use each of these hardball tactics in a hypothetical negotiation - bogey, lowball/highball, chicken, intimidation and snow.

  Incorporate cultural competencies in their practice

How would a leader develop a task for their teams to incorporate cultural competencies in their practice?

  Financing options in terms of projected return

Question 1: Compare the two financing options in terms of projected return on the owner's equity investment. Ignore any effect from income taxes. Question 2: What if Dalton is wrong and the company earns only 4 percent in operating income on total ..

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd