On 2020-05-08 19:35, Helena Zubčeková wrote:
Môj problém v tom, ako to urobiť, myslím leží tu:
1/ Kreslím všetky objekty naraz pomocou draw:

def draw():
     window.clear()
ďalší kód
             # Draw
             main_batch.draw(

Za to main_batch.draw() můžeš dát cyklus: pro každý objekt nakresli kolečko kolem toho objektu.


a tu:
window.push_handlers(
     on_draw=draw,
)


2/ main_batch plním do spritov tu:
main_batch = pyglet.graphics.Batch()

class SpaceObject():
     def __init__(self, ostatné veci)
         self.sprite = pyglet.sprite.Sprite(image, batch=main_batch)

3/ a potom konkrétny image, ktorý to má hodiť, vyberám v jednotlivých objektoch:

class Spaceship(SpaceObject) a class Asteroid(SpaceObject)

- keďže chcem každý kruh aby bral do úvahy hodnoty x, y, radium toho konkrétneho objektu, tak mi dáva zmsel tú draw_circle funkciu zavolať v rámci classy Spaceship a Asteroid.

A můžeš to udělat i takhle. Ale dá to víc práce; pro kód který za chvíli smažeš (protože kolečka v hotové hře nechceš) bych to spíš doporučil udělat přímo ve funkci draw().


Takže... kedže nejde nahradiť image v sprite tým kruhom, pretože sprite potrebuje png, a navyše ten kruh aj tak chceme okolo toho obrázku... tak mi ostáva už jedine to, aby som si zavolala draw_circle v rámci každého z tých objektov a použiť tam self.x, self.y a self.radium. Až na to, že to som skúšala, a vždy mi to napísalo, že x y a radium sú unidentified :(

Kde je v tejto mojej logike chyba?

Z tohohle popisu to nepoznám :(
Pošleš prosím kód s touhle chybou?

Druhá vec, čo ma napadla, je upraviť funkciu draw, a po main_batch.draw() zavolať draw_circle, ale v tom prípade predsa nemá odkiaľ vziať hodnoty x, y a radium...

Zkus projít všechny objekty, kolem kterých se kolečka kreslí, a pro každý z nich použít x, y, radius daného objektu.

Veľmi ďakujem, kľudne si môžeš dať načas s odpovedaním, nechcem ťa preťažiť :)

Heli






Dne pátek 8. května 2020 19:16:02 UTC+2 Petr Viktorin napsal(a):

    On 2020-05-08 18:06, Helena Zubčeková wrote:
     > Ahoj,
     >
     > Prichádzam s ďalšou otázkou - tentokrát v záverečnom projekte
    Asteroids.
     > Tu je zadanie:
     > "Aby bylo vidět co si hra o objektech „myslí”, nakresli si nad
    každým
     > objektem příslušné kolečko. Nejlepší je to udělat pomocí
    pyglet.gl <http://pyglet.gl>
     >
    <http://pyglet.readthedocs.org/en/latest/programming_guide/gl.html
    <http://pyglet.readthedocs.org/en/latest/programming_guide/gl.html>> a
     > trochy matematiky; pro teď si jen opiš funkci |draw_circle| a pro
    každý
     > objekt ji zavolej. Až to bude všechno fungovat, můžeš funkci dát
    pryč."
     >
     > Nie je problém nakresliť kruh... ale nakresliť kruh okolo objektu
    tak,
     > aby sa pohyboval spolu s ním? Neviem na to prísť a googlenie
    nepomáha.
     > "pro každý objekt ji zavolej" vyzerá jednoznačne, ale aj tak na to
     > neviem prísť.
     > Stripe každého objektu je to, kde je zaznamenaná jeho pozícia,
    takže tam
     > by som čakala, že potrebujem pridať ten kuh.. ale stripe očakáva
    image
     > objektu, nie funkciu... Ak mu miesto obrázku dám funkciu, tak mi
    spadne
     > na tom, že pyglet nedostáva žiadnu texture (čo dáva zmysel, nie
    je to
     > obrázok...)
     >
     > Alebo to zadanie nie je tak myslené, že okolo každého objektu (jeho
     > obrázka) má byť kruh? Čiže majú mi tam "poletovať" normálne
    meteority a
     > spaceship, akurát je okolo nich ešte kruh?

    Presně tak. Mohlo by to vypadat třeba takhle:
    https://imgur.com/a/CP9pAsO

    Nesnaž se kruhy dávat do Sprite; pro každý objekt nakresli napřed
    Sprite
    a potom kruh.

--
--
E-mailová skupina [email protected]
Správa: http://groups.google.cz/group/django-cs
---
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny „django-cs“ ve Skupinách Google. Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, zašlete e-mail na adresu [email protected] <mailto:[email protected]>. Chcete-li tuto diskusi zobrazit na webu, navštivte https://groups.google.com/d/msgid/django-cs/8aad8535-7786-403b-a714-db6294ae4c1a%40googlegroups.com <https://groups.google.com/d/msgid/django-cs/8aad8535-7786-403b-a714-db6294ae4c1a%40googlegroups.com?utm_medium=email&utm_source=footer>.

--
--
E-mailová skupina [email protected]
Správa: http://groups.google.cz/group/django-cs
--- Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny django-cs ve Skupinách Google.
Chcete-li zrušit odběr skupiny a přestat dostávat e‑maily ze skupiny, zašlete 
e-mail na adresu [email protected].
Chcete-li zobrazit tuto diskusi na webu, navštivte 
https://groups.google.com/d/msgid/django-cs/fbb5ce40-6236-dbbc-eacf-2684886aa7b0%40gmail.com.

Reply via email to