Module game_qu.gui_components.hud

Expand source code
from game_qu.gui_components.grid import Grid
from game_qu.base.colors import *
from game_qu.gui_components.component import Component
from game_qu.base.important_variables import *
from game_qu.gui_components.text_box import TextBox
from game_qu.gui_components.dimensions import Dimensions


class HUD(Component):
    """HUD stands for Heads Up Display. This class provides an easy way to show all the information that the player needs"""

    player_points_fields = []
    other_fields = []
    high_score_field = None
    components = []
    high_score_is_needed = False
    rows = 1
    columns = None

    def __init__(self, number_of_points_fields, other_fields, length, height, rows=1, columns=None, high_score_is_needed=False):
        """ Initializes the object with the values provided by initializing the TextBox(s) needed.
            Also fields is just another way of saying TextBox. The HUD uses the Grid class from game_qu.gui_components/grid.py to make the grid pattern

            Args:
                number_of_points_fields (int): the number of fields that contain points for players (generally equal to the number of players)
                other_fields (list[Component]): the other fields that should be displayed
                length (float): the length of the HUD (in pixels)
                height (float): the height of the HUD (in pixels)
                rows (int): the number of rows for the grid of the HUD (see gui_components/grid.py for more information)
                columns (int): the number of columns for the grid of the HUD (see gui_components/grid.py for more information)
                high_score_is_needed (bool): whether a high score is wanted for the HUD
     
            Returns:
                None
        """

        self.player_points_fields = []
        self.rows = rows
        self.columns = columns
        self.high_score_is_needed = high_score_is_needed

        if high_score_is_needed:
            self.high_score_field = TextBox("", 28, pleasing_green, white, True)
            other_fields += [self.high_score_field]

        colors = [blue, red, black, orange, purple, yellow]

        for x in range(number_of_points_fields):
            self.player_points_fields.append(TextBox("", 28, white, colors[x], True))

        self.components = self.player_points_fields + other_fields

        grid = Grid(Dimensions(0, 0, length, height), rows, columns)
        grid.turn_into_grid(self.components, None, None)

    def update(self, player_points, high_score=0):
        """Updates the points in the 'player_points_fields' and if the 'high_score_is_needed' it updates the high score in the 'high_score_field'"""

        for x in range(len(player_points)):
            self.player_points_fields[x].text = f"Player #{x + 1}: {player_points[x]}"

        if self.high_score_is_needed:
            self.high_score_field.text = f"High Score: {high_score}"

    def render(self):
        """Renders the HUD onto the screen"""

        for component in self.components:
            component.render()

    def set_dimensions(self, left_edge, top_edge, length, height):
        """Changes the dimensions of the Grid that defines the components layouts"""

        grid = Grid(Dimensions(left_edge, top_edge, length, height), self.rows, self.columns)
        grid.turn_into_grid(self.components, None, None)

    def set_rows_and_columns(self, rows, columns):
        """Sets the 'self.rows' and 'self.columns' to the values provided: 'rows' and 'columns'"""

        self.rows = rows
        self.columns = columns

Classes

class HUD (number_of_points_fields, other_fields, length, height, rows=1, columns=None, high_score_is_needed=False)

HUD stands for Heads Up Display. This class provides an easy way to show all the information that the player needs

Initializes the object with the values provided by initializing the TextBox(s) needed. Also fields is just another way of saying TextBox. The HUD uses the Grid class from game_qu.gui_components/grid.py to make the grid pattern

Args

number_of_points_fields : int
the number of fields that contain points for players (generally equal to the number of players)
other_fields : list[Component]
the other fields that should be displayed
length : float
the length of the HUD (in pixels)
height : float
the height of the HUD (in pixels)
rows : int
the number of rows for the grid of the HUD (see gui_components/grid.py for more information)
columns : int
the number of columns for the grid of the HUD (see gui_components/grid.py for more information)
high_score_is_needed : bool
whether a high score is wanted for the HUD

Returns

None

Expand source code
class HUD(Component):
    """HUD stands for Heads Up Display. This class provides an easy way to show all the information that the player needs"""

    player_points_fields = []
    other_fields = []
    high_score_field = None
    components = []
    high_score_is_needed = False
    rows = 1
    columns = None

    def __init__(self, number_of_points_fields, other_fields, length, height, rows=1, columns=None, high_score_is_needed=False):
        """ Initializes the object with the values provided by initializing the TextBox(s) needed.
            Also fields is just another way of saying TextBox. The HUD uses the Grid class from game_qu.gui_components/grid.py to make the grid pattern

            Args:
                number_of_points_fields (int): the number of fields that contain points for players (generally equal to the number of players)
                other_fields (list[Component]): the other fields that should be displayed
                length (float): the length of the HUD (in pixels)
                height (float): the height of the HUD (in pixels)
                rows (int): the number of rows for the grid of the HUD (see gui_components/grid.py for more information)
                columns (int): the number of columns for the grid of the HUD (see gui_components/grid.py for more information)
                high_score_is_needed (bool): whether a high score is wanted for the HUD
     
            Returns:
                None
        """

        self.player_points_fields = []
        self.rows = rows
        self.columns = columns
        self.high_score_is_needed = high_score_is_needed

        if high_score_is_needed:
            self.high_score_field = TextBox("", 28, pleasing_green, white, True)
            other_fields += [self.high_score_field]

        colors = [blue, red, black, orange, purple, yellow]

        for x in range(number_of_points_fields):
            self.player_points_fields.append(TextBox("", 28, white, colors[x], True))

        self.components = self.player_points_fields + other_fields

        grid = Grid(Dimensions(0, 0, length, height), rows, columns)
        grid.turn_into_grid(self.components, None, None)

    def update(self, player_points, high_score=0):
        """Updates the points in the 'player_points_fields' and if the 'high_score_is_needed' it updates the high score in the 'high_score_field'"""

        for x in range(len(player_points)):
            self.player_points_fields[x].text = f"Player #{x + 1}: {player_points[x]}"

        if self.high_score_is_needed:
            self.high_score_field.text = f"High Score: {high_score}"

    def render(self):
        """Renders the HUD onto the screen"""

        for component in self.components:
            component.render()

    def set_dimensions(self, left_edge, top_edge, length, height):
        """Changes the dimensions of the Grid that defines the components layouts"""

        grid = Grid(Dimensions(left_edge, top_edge, length, height), self.rows, self.columns)
        grid.turn_into_grid(self.components, None, None)

    def set_rows_and_columns(self, rows, columns):
        """Sets the 'self.rows' and 'self.columns' to the values provided: 'rows' and 'columns'"""

        self.rows = rows
        self.columns = columns

Ancestors

Class variables

var columns
var components
var high_score_field
var high_score_is_needed
var other_fields
var player_points_fields
var rows

Methods

def render(self)

Renders the HUD onto the screen

Expand source code
def render(self):
    """Renders the HUD onto the screen"""

    for component in self.components:
        component.render()
def set_dimensions(self, left_edge, top_edge, length, height)

Changes the dimensions of the Grid that defines the components layouts

Expand source code
def set_dimensions(self, left_edge, top_edge, length, height):
    """Changes the dimensions of the Grid that defines the components layouts"""

    grid = Grid(Dimensions(left_edge, top_edge, length, height), self.rows, self.columns)
    grid.turn_into_grid(self.components, None, None)
def set_rows_and_columns(self, rows, columns)

Sets the 'self.rows' and 'self.columns' to the values provided: 'rows' and 'columns'

Expand source code
def set_rows_and_columns(self, rows, columns):
    """Sets the 'self.rows' and 'self.columns' to the values provided: 'rows' and 'columns'"""

    self.rows = rows
    self.columns = columns
def update(self, player_points, high_score=0)

Updates the points in the 'player_points_fields' and if the 'high_score_is_needed' it updates the high score in the 'high_score_field'

Expand source code
def update(self, player_points, high_score=0):
    """Updates the points in the 'player_points_fields' and if the 'high_score_is_needed' it updates the high score in the 'high_score_field'"""

    for x in range(len(player_points)):
        self.player_points_fields[x].text = f"Player #{x + 1}: {player_points[x]}"

    if self.high_score_is_needed:
        self.high_score_field.text = f"High Score: {high_score}"

Inherited members