Categories: Uncategorized

Now, you want to play a game, inspired by Werewolf, with a group of your friends

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
 
Looking for a Similar Assignment? Order now and Get 10% Discount! Use Coupon Code “Newclient”

The post Now, you want to play a game, inspired by Werewolf, with a group of your friends appeared first on Superb Professors.

"Order a Custom Paper on Similar Assignment! No Plagiarism! Enjoy 20% Discount"

Superbprofessors

Recent Posts

case study one page case study one page case study one page case study one page case study one page

Case study one page Case study one page Case study one page Case study one…

2 years ago

business calculus quiz

Business Calculus quiz that is 10 questions and has an hour time limit. Must be…

2 years ago

hnif 355 disscussion post

Write a 175- to 265-word response to the following: What constitutes “robust interoperability,” and what…

2 years ago

news briefing quest 2

For this News Briefing Quest task , pick and analyze a U.S. political news article…

2 years ago

acc610 final project milestone two critical element ii analysis of financial statements

ACC 610 Milestone TwoGuidelines and Rubric This is the secondof three milestone assignments that will…

2 years ago

write in complete paragraphs 5 pages

Please answer the questions in the attachment. I have sent you the required materials. Send…

2 years ago