Informatika TKINTER

Dobrý deň chcela by som sa opýtať aký príkaz mám použiť pri programovaní v Tkinter Python aby mi v bludisku neprechádzala gulička cez steny labyrintu... Aby stena tu guličku cez seba ďalej nepustila. Ďakujem 🙂

Prílohy:
Question image
1 odpoveď
V Tkinter nie je priamo možnosť detekovať farbu ktora je pod korytnačkou.
Takže nám ostávajú 2 možnosti:
1. vytvoriť si funkciu, ktorá si priamo po každom pohybe zistí, či je korytnačka na preddefinovanej pozícií na ktorej sú nakreslené čiary (cez súradnice)
Pre každú čiaru sa vytvorí if
2. Tkinter ponúka detekciu kolízie objektov, takže plán by bol si vytvoriť steny z klonov korytnačky a zároveň si tie korytnačky uloziť do zoznamu, aby sme vedeli jednoducho ku korytnačkám pristupovať (keďze korytnačky sú objektami).
Komentáre:
Samuel B.
V prípade ešte podrobnejšieho vysvetlenia nápadu aj s vzorom riešenia je možne nájsť na https://stackoverflow.com/questions/57071985/how-do-i-make-colour-detection-in-turtle
Emma ..
Ďakujem za vašu odpoveď v zadaní nesmiem použiť príkazy ktoré sa spájajú s korytnackou nemohli by ste mi preto ukázať na jednej ciare ako mám taký príkaz s if zapísať ? Vďaka
Samuel B.
Na zaciatku metody kazdej metody/funkcie je nutné otestovať či je možne posunút guľu bez toho aby sa dotkla steny. Ak sa pozrieme na funkciu Gula_R, tak našou otázkou je, či daná zmena x na x+5 by zasahovalo na preddefinované steny. V prípade prvej čiary, ktorá je definovaná na 100,50 - 300,50 kolizia by nastala ak pozicia x(aktualne) + 20(polomer) + 5(posun) by patril do intervalu [100-300] a zaroven y(aktualne) = 50
Samuel B.
V kode by to vyzeralo asi takto(pre 1. ciaru): if y == 50 and 100 <= x + 5 <=300: canvas delete x+=5 create oval create lines
Samuel B.
Vidím, že nie je možné odsadzovať text v komentároch. odsadenie vytvorim pomocov '-' V kode by to vyzeralo asi takto(pre 1. ciaru): ------------------------------------------ if y == 50 and 100 <= x + 5 + 20 <=300: ----canvas delete ----x+=5 ----create oval ----create lines
Emma ..
Skúšala som to takto ako ste to napísali pooddelovat ale nič to neurobilo :(