Skip to content
This repository has been archived by the owner on Nov 29, 2023. It is now read-only.

Latest commit

 

History

History
96 lines (82 loc) · 3.18 KB

README.md

File metadata and controls

96 lines (82 loc) · 3.18 KB

IslandPy

Python Grade Alerts Pypi Pypi Pypi

How to:

Add scenes to game

  1. Define you scene:
import pygame
from IslandPy.Render.ARenderObject import ARenderObject
from IslandPy.Scenes.AScene import AScene


class CustomScene(AScene):
    def __init__(self, name: str) -> None:
        super().__init__(name)
        self.r1 = ARenderObject(self, size=(10, 50))

    def draw(self, surface: pygame.Surface) -> None:
        super(CustomScene, self).draw(surface)
        pygame.draw.rect(surface, (255, 255, 255), self.r1.rect)

Scene must be inherited from AScene - a base class of all scenes.

  1. Create object and pass them to window
r = RenderWindow()
s1 = CustomScene("Custom Scene")
r.start(s1)

You should create a scene between init r and r.start

Draw you custom object

Create a child of ARenderObject

from IslandPy.Render.ARenderObject import ARenderObject
from IslandPy.Scenes.AScene import AScene


class CustomRender(ARenderObject):
    def __init__(self, scene: AScene, size: (int, int)) -> None:
        super().__init__(scene, size)

IslandPy have two ways to next steps:

  1. Create draw-method in CustomRender:
def draw(self, surface: pygame.Surface) -> None:
    if self.is_draw:
        pygame.draw.rect(surface, (255, 255, 255), self.rect)

This method will be called automatically.

  1. Overload draw-method in CustomScene:
def draw(self, surface: pygame.Surface) -> None:
    super(CustomScene, self).draw(surface)
    pygame.draw.rect(surface, (255, 255, 255), self.r1.rect)

Simple TextLabel example

Example of simple TextLabel, which increase count value by Space pressed. Create you CustomScene from this and modify:

def __init__(self, name: str) -> None:
    super().__init__(name)
    self.count = 0
    self.label = TextLabel(scene=self, font_size=14, text="Count: 0")

Change text-value on update-method:

def update(self, dt) -> None:
    super(CustomScene, self).update(dt)
    self.label.text = f"Count: {self.count}"

And add event handler:

def handle_events(self, event: pygame.event.Event) -> None:
    super(CustomScene, self).handle_events(event)
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_SPACE:
            self.count += 1