- 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.
- 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
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:
- 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.
- 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)
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