Python_Notatki Z11
Aktualizacja obiektu:

W python nie ma prywatnych zmiennych – takich, które nie da się zmodyfikować. Ktoś może zepsuć kod, jak nie ma prywatnych zmiennych. Za to jest jedna sztuczka: Name Mangling (dwa podkreślniki)



Pygame Zero



Zazwyczaj są używane gotowe silniki do tworzenia gier i gotowe biblioteki
unreal.mg, unity, godot i t.d.
pygame zero jest kiepsko opisana, zwłaszcza typy zmiennych.



ogre – to silnik do gier. Już coraz rzadziej używany.

pgzrun wymaga tworzenia pewnych funkcji, żeby cokolwiek robił:



Ważne wpisać funkcję clear przy uruchomieniu draw, żebyśmy byli w stanie przesuwać się, inaczej by to zostawiało po sobie ślad, a obrazki nakładały się na siebie. Gra to taki trochę flipbook, albo film poklatkowy. Musimy zamienić stary ekran na nowy.


Funkcja dir na stworzonym obiekcie pozwala zobaczyć jakie są przypisane do klasy metody.

Rozpakowywanie krotki — couple unpacking



import pgzrun
from pgzero_api_stub import *
import random
class PlywTekst:
def __init__ (self, ws_x:int = 0, ws_y:int = 50, tekst: str = "DVD", pr_x:int=5, pr_y:int=5 ) -> None:
self.x = ws_x
self.y = ws_y
self.tekst = tekst
self.przemieszczenie_x = pr_x
self.przemieszczenie_y = pr_y
def przemiesc_tekst(self):
self.x += self.przemieszczenie_x
if self.x > WIDTH or self.x<= 0:
self.przemieszczenie_x *= -1
self.y += self.przemieszczenie_y
if self.y > HEIGHT or self.y<= 0:
self.przemieszczenie_y *= -1
def narysuj_tekst(self):
screen.draw.text(self.tekst, (self.x, self.y), fontsize = 30)
WIDTH = 800
HEIGHT = 600
# def draw():
# screen.clear()
# screen.draw.circle((400,300),30,"white")
# poøoæenie, promieñ, kolor
# def draw():
# screen.clear()
# screen.draw.text("Tekst", (100, 100), fontsize = 30)
# objs = [MyClass() for i in range(10)]
# for obj in objs:
# other_object.add(obj)
# lista_DVD = [PlywTekst() for i in range(10)]
lista_DVD = []
for i in range(10):
lista_DVD.append(PlywTekst(ws_x = random.randint(1,WIDTH), ws_y = random.randint(1,HEIGHT), pr_x = random.randint(5,20), pr_y = random.randint(5,20)))
def draw():
screen.clear()
for element in lista_DVD:
element.narysuj_tekst()
def update():
for element in lista_DVD:
element.przemiesc_tekst()
pgzrun.go()


