Example #1
0
    def _draw_pulse(cls, canvas: tk.Canvas, tower_: SimpleTower):
        """Draws a pulse tower"""

        x, y = tower_.position

        x_diameter, y_diameter = tower_.grid_size
        top_left, bottom_right = tower_.get_bounding_box()

        cell_size = tower_.cell_size

        colour = tower_.colour

        body = canvas.create_oval(top_left,
                                  bottom_right,
                                  tag='tower',
                                  fill=colour)
        tags = [body]

        angle_step = math.pi / 2
        for i in range(4):
            angle = i * angle_step

            dx = (x_diameter / 2) * cell_size * math.cos(angle)
            dy = (y_diameter / 2) * cell_size * math.sin(angle)

            tag = canvas.create_line(x + dx / 2,
                                     y + dy / 2,
                                     x + dx,
                                     y + dy,
                                     tag='tower')

            tags.append(tag)

        return tags
Example #2
0
    def _draw_simple(cls, canvas: tk.Canvas, tower_: SimpleTower):
        """Draws a simple tower"""

        x, y = tower_.position
        angle = tower_.rotation

        x_diameter, y_diameter = tower_.grid_size
        top_left, bottom_right = tower_.get_bounding_box()

        cell_size = tower_.cell_size

        colour = tower_.colour

        return [
            canvas.create_oval(top_left,
                               bottom_right,
                               tag='tower',
                               fill=colour),
            canvas.create_line(
                x,
                y,
                x + (x_diameter / 2) * cell_size * math.cos(angle),
                y + (y_diameter / 2) * cell_size * math.sin(angle),
                tag='tower')
        ]
Example #3
0
File: a3.py Project: mj221/CSSE1001
    def _left_click(self, event):
        """
        Place tower when a grid is left clicked

        Parameter:
            event (tk.Event): Tkinter mouse event  
        """

        if self._lives != 0 and self._won == False:
            if self._coins >= int(self._current_tower.__class__.base_cost):
                self._coins -= int(self._current_tower.__class__.base_cost)
                self._set_gold(self._coins)
                self._view.delete("shadow")
                # retrieve position to place tower
                position = event.x, event.y
                cell_position = self._game.grid.pixel_to_cell(position)

                if self._game.place(cell_position, tower_type=self._current_tower.__class__):
                    # Task 1.2 (Tower Placement): Attempt to place the tower being previewed
                    pass
                elif not self._game.place(cell_position, tower_type=SimpleTower(self._game.grid.cell_size).__class__):
                    # If a tower cannot be placed in that position, then a tower exists so call method upgrade_tower.
                    self.upgrade_tower(event)
        self.refresh_view()