Bugs in the code for the game

Assignment Help Business Management
Reference no: EM132296695

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: EM132296695

Questions Cloud

What is disaster recovery plan : What is disaster recovery plan and how it works in concert with an organizations business continuity plan
Find some other technologies from microsoft or other vendors : The Distributed File System is only one example of Fault Tolerance. Find some other technologies from Microsoft or other vendors that help protect data.
How many bits are required for the pointer : A process table is maintained that includes a pointer to a partition for each resident process. How many bits are required for the pointer?
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?
Bugs in the code for the game : 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
Report on the proposed wired and wireless network design : MN503 - Overview of Internetworking - Network requirement analysis and plan - Melbourne Institute of technology - Explain human factors in achieving business
Need step-by-step it security policy for handling : 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).
Why do you think the it staff is placed in a room : Why do you think the IT staff is placed in a room with doors that can be closed and locked as opposed to an open air model
Explain how these steps or activities will influence user ad : Ensuring users adopt new systems or changes to existing systems is critical, as implementing a system no one will use becomes a wasted investment.

Reviews

Write a Review

Business Management Questions & Answers

  Show what are the benefits of diversification

Why would a health care organization need to have a diversified portfolio to be successful? Provide an example to support your argument.

  Intrinsic reward-personal satisfaction provided jalen

Intrinsic Reward-personal satisfaction provided Jalen is a motorcycle mechanic who is motivated by the sense of satisfaction he gets from fixing customers.

  How does the starbucks of 2002 differ from the starbucks

How does the Starbucks of 2002 differ from the Starbucks of 1992?

  Analyze the key ethical challenges of privatization

Analyze the key ethical challenges of privatization. Take a position on whether the private sector should be responsible for program outcomes of a public program or service. Provide a rationale for your response.

  Growth strategic planning process

To provide families and friends with reliable products, built from innovative technology, allowing them to communicate on personal and professional levels.

  Context of the organisations objectives

Why do you need to understand the purpose of projects in the context of the organisations objectives?

  Front of a college cafeteria result in more pizza sales

Will moving pizza from the back to the front of a college cafeteria result in more pizza sales? Using the steps of marketing research process explain how you as the marketing manager would solve the problem

  Write business plan for organization to enter global market

Write a business plan for this organization to enter a global market in which they are not already doing business.

  Identify major barriers to developing international brands

What is the importance of ‘country of origin' in international product marketing?- Identify the major barriers to developing international brands.

  Describe the context and values of a co-culture

Describe the context and values of a co-culture to which you belong. For example, do you and people in your group tend to be high-context or low-context?

  Explain the most surprising lesson you learned

Explain the most surprising lesson you learned in this course and Discuss how this lesson changed the way you thought about at least one

  Explain and analyze the collective bargaining process

Explain and Analyze the collective bargaining process and negotiating labor agreements and resolving impasses

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