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

  Caselet on michael porter’s value chain management

The assignment in management is a two part assignment dealing 1.Theory of function of management. 2. Operations and Controlling.

  Mountain man brewing company

Mountain Man Brewing, a family owned business where Chris Prangel, the son of the president joins. Due to increase in the preference for light beer drinkers, Chris Prangel wants to introduce light beer version in Mountain Man. An analysis into the la..

  Mountain man brewing company

Mountain Man Brewing, a family owned business where Chris Prangel, the son of the president joins. An analysis into the launch of Mountain Man Light over the present Mountain Man Lager.

  Analysis of the case using the doing ethics technique

Analysis of the case using the Doing Ethics Technique (DET). Analysis of the ethical issue(s) from the perspective of an ICT professional, using the ACS Code of  Conduct and properly relating clauses from the ACS Code of Conduct to the ethical issue.

  Affiliations and partnerships

Affiliations and partnerships are frequently used to reach a larger local audience? Which options stand to avail for the Hotel manager and what problems do these pose.

  Innovation-friendly regulations

What influence (if any) can organizations exercise to encourage ‘innovation-friendly' regulations?

  Effect of regional and corporate cultural issues

Present your findings as a group powerpoint with an audio file. In addition individually write up your own conclusions as to the effects of regional cultural issues on the corporate organisational culture of this multinational company as it conducts ..

  Structure of business plan

This assignment shows a structure of business plan. The task is to write a business plane about a Diet Shop.

  Identify the purposes of different types of organisations

Identify the purposes of different types of organisations.

  Entrepreneur case study for analysis

Entrepreneur Case Study for Analysis. Analyze Robin Wolaner's suitability to be an entrepreneur

  Forecasting and business analysis

This problem requires you to apply your cross-sectional analysis skills to a real cross-sectional data set with the goal of answering a specific research question.

  Educational instructional leadership

Prepare a major handout on the key principles of instructional leadership

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