Python_Notatki Z11

Python_Notatki Z11
Photo by iridial / Unsplash

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)

Name mangling in Python - GeeksforGeeks
A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

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.

Introduction to Pygame Zero — Pygame Zero 1.2.1 documentation

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()