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.