Posouvání obrázku – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Posouvání obrázku – Python – Fórum – Programujte.comPosouvání obrázku – Python – Fórum – Programujte.com

 

Jakub Vojáček
~ Moderátor
0
Grafoman
7. 4. 2006   #1
-
0
-

Předchozí téma mě zaujalo a tak sem začal dělat hru, kde létáte s raketoua uhýbáte meteoritům a střílíte ufouny...Ale v 9 kole by měl panáček vysytoupit s rakety a začít se pohybovat po svých.Mechanizmus chození mám hotový, ale jak udělat aby se pozadí posouvalo spolu s panáčkem?Aby panáček byl pořád uprostřed???
Napadlo mě, že by se vždy vytvořilo pozadí a když by panáček došel na konec, vykreslilo by se pozadí znova, a panáček by se objevil na začátku, ale to je kostrbaté...
Díkas

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
geon0
Grafoman
7. 4. 2006   #2
-
0
-

Takže já bych to udělal nějak takto: Panáček se vůbec nehýbe, stojí ve středu a hýbe se vše kolem něj. Panáček je svázán s kurzorovými šipkami a pokud zmáčknu šipku nahoru, tak to bude znamenat, že se všechny ostatní předměty na ploše posunou o určitý krok směrem dolů. Podobně dolů, doleva a doprava. A to je vše ;)

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Vojáček
~ Moderátor
0
Grafoman
7. 4. 2006   #3
-
0
-

jo, to je perfektn?.
Danke

No, te? d?l?m na h?e ve kter? kdy? ud?l?m n?jak? objekt na platno, tak se da do seznamu vsechny_objekty. A kdy? zm??knu ?ipku tak se to posunuje v?e, jenom ne postava. Ale te? je to t?ch objekt? trochu v?c a celkem se to u? sek? jak to po??ta? nezvl?d?. Dal?? mo?nost jak to ud?lat je tedy pohybovat postavou a dal?? ot?zka je jak posunout Scrollbar ?ekn?me o 30 pixel?, prost? aby na lev? stran? pl?tna zmizelo 30 pixel? a na prav? se zase objevilo. Kdyby n?koho napadalo lep?? způsob nebo odpov?d na ten Scrollbar tak d?k

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
geon0
Grafoman
31. 5. 2006   #4
-
0
-

asi jsem omylem smazal tvůj nový příspěvek, když jsem mazal svůj, nebo spíš to udělala chyba ve scriptu na programujte.com. sorry, ale tady je odpověď:

možná to bude počtem, pokud máš > 100 objektů, ale spíš bych řekl, že to bude neefktivním algoritmem. něco třeba počítáš dvakrát nebo zbytečně složitě a ztrácíš strojový čas. To je jen dohad. zkusil jsem udělat zjednodušenou verzi se 100 kolečky:



# -*- coding: cp1250 -*-

from Tkinter import *
import random

def nahorudolu(udalost):
smer=posun[udalost.keysym]
for i in seznam:
platno.move(i, 0,smer)
mimo= platno.find_enclosed(0,-1000,640,0)
print "Pocet kolecek mimo plochu nahore:", len(mimo)
print mimo

def kolo():
polomer=30
barva=random.choice(barvy)
y=random.randint(0,480-polomer*1.1)
x=random.randint(0,640-polomer*1.1)
return (x,y,x+polomer,y+polomer),barva

# ----- proměnné -----------------------------------

barvy=["red","green","yellow", "blue"]
posun={"Up":-5, "Down":5}

# -------- hlavní část -----------------------------

hlavni=Tk()
platno = Canvas(hlavni, width=640, height=480)
platno.pack()
seznam=[]

for i in range(100):
souradnice,barva=kolo()
kolecko=platno.create_oval(souradnice, fill=barva)
seznam.append(kolecko)

platno.bind("<Up>", nahorudolu)
platno.bind("<Down>", nahorudolu)
platno.focus_set()
hlavni.mainloop()



Funguje nahoru/dolu (všimni si, jak se počítá směr, protože je to v jedné funkci ;-) ). Je to také připravené na ukázku toho, jak postupovat, když budeš chtít, aby to co se nahoře zaleze, aby vylezlo dole - vytvoříš si obdélník, který bude mimo canvas, nad canvasem, vlastní schovaní, se zápornými souřadnicemi, a pak pak budeš hledat prvky, které do něj zasahují. No a to, aby se ti nahoře pak smazaly a dole objevily, musíš dodělat sám. Aby to bylo plynule, aby když půlka kolečka nahoře zmizí, tak aby se dole půlka objevila, to asi nejde, nebo lépe řečeno, musel by sis to naprogramovat, ale bylo by to složitější, než přehazovat kolečka vcelku.

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Jakub Vojáček
~ Moderátor
0
Grafoman
31. 5. 2006   #5
-
0
-

no, t?ch objekt? je fakt rochu v?c ne? 100, te? je jich p?esn? 7433...

A j? jsem myslel, ?e to co zaleze se nebude objevovat na druh? stran?. M?m nap??klad mapu od - 1000 a? 1000 v sou?adnic?ch. Uprost?ed obrazovky je pan??ek. Kdy? pohnu ?ipkou doleva tak se k tv?m x sou?adnic?h p?i?te 30 a pak se zavola funkce platno.coords(postava, x,y), ale takle by pan??ek zachv?li zmizel a tak sem to nakonec po celodenn?m nam?h?n?m hlavy vymyslel tak ?e m?m scrollbarY a scollbarX a kdy? zm??knu tu ?ipku doleva, tak se zavol?:



x=x+30
platno.coords(postava,x,y)
x_posuvniku=x_posuvniku+30
platno.xviwe(MOVETO,x_posuvniku)

funguje to te? bezvadn? a vůbec se to nesek?, ale i tak d?k:))

Nahlásit jako SPAM
IP: ...–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 18 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý