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

Pohyb obrázku – Python – Fórum – Programujte.comPohyb obrázku – Python – Fórum – Programujte.com

 

Ahoj30
Návštěvník
9. 7. 2010   #1
-
0
-

Chtěl jsem vytvořit program ve kterém se hýbe panáček. Bohužel panáček se pohybuje, ale zůstavají po něm klonové :)
Nevím jak smazat ty původní panáčky.

from livewires import*

begin_graphics(width=800,height=600)
mouse_position()
def malujTelo(x,y):
circle(x,y,40)
circle(x-18,y+10,10)
circle(x+18,y+10,10)
move(x,y+5)
draw(x-8,y-10)
draw(x+8,y-10)
draw(x,y+5)
circle(x,y, endpoints=((x-20,y-15),(x+20,y-15)))
move(x-20,y-15)
draw(x+22,y-15)
move(x,y-41)
set_colour(Colour.red)
draw(x,y-150)
move(x,y-80)
draw(x-60,y-80)
draw(x+60,y-80)
move(x,y-150)
draw(x-20,y-200)
move(x,y-150)
draw(x+20,y-200)


for x in range(800):
malujTelo(x,300)
sleep(0.00001)

Nahlásit jako SPAM
IP: 213.220.246.–
Ahoj30
Návštěvník
9. 7. 2010   #2
-
0
-

Toho mouse_position() si nevšímejte :-)

Nahlásit jako SPAM
IP: 213.220.246.–
zdenda
~ Anonymní uživatel
257 příspěvků
9. 7. 2010   #3
-
0
-

Nejjednoduší je vždycky smazat celou plochu (clear_screen), nebo ho vždycky vykreslit znovu barvou pozadí.
Ale spíš bych využil možnost vykreslené objekty posunovat. Takhle nějak:

def malujTelo(x,y):

casti = []
allow_movables()
set_colour(Colour.red)
casti.append(circle(x,y,40))
casti.append(circle(x-18,y+10,10))
casti.append(circle(x+18,y+10,10))
casti.append(circle(x,y, endpoints=((x-20,y-15),(x+20,y-15))))
forbid_movables()
return casti

panacek = malujTelo(0,300)

for x in range(800):
for cast in panacek:
move_by(cast, 1, 0)
sleep(0.001)

Nahlásit jako SPAM
IP: 213.211.51.–
fkilla0
Newbie
9. 7. 2010   #4
-
0
-

mozes to spravit viacerymi sposobmi, zalezi ako budes mat program navrhnuty. take napady:

1. zmazat obrazovku a vykreslit celu obrazovku a postavu vzdy nanovo - tento sposob sa pouziva hlavne pri akcelerovanej 2D grafike, za pouzitia napr OpenGL. tam uz ale po vacsinou nevykreslujes grafiku po jednotlivych ciarach, kruzniciach a inych primitiv, ale hadzes na obrazovku rovno obrazky (obrazok pozadia, polopriesvitny obr, postavy atd..)

2. ak mas nejake komplexnejsie pozadie, ktore bolo vykreslene postupne z viacerych objektov (pozadie + stromy + skaly + plosina +...) mozes si vyrez obrazovky tesne pred vykreslenim postavy ulozit niekam do pamati. pri kresleni by si postupoval takto:
i) pred vykreslenim si miesto, kde chcem mat postavu ulozim do pamate
ii) vykreslim postavu
iii) chcem postavou pohnut => najprv zmazem to co bolo vykreslene (pouzijem ulozenu cast z bodu i a prekreslim nou postavu). a pokracujem zas na bode i) so zmenenymi suradnicami

3. ak mas pozadie len jednoduchy obrazok (jeden), mozes pouzit algoritmus:
i) vykreslim postavu
II) chcem postavou pohnut - najpr ju (zase len oblast ktoru zabera) prekreslim mojim pozadim (vlastne len castou z pozadia), zmenim koordinaty a prejdem na bod i)

4. ak mam pozadie len jednoduchu farbu, mozem pouzit primitivny algoriťmus:
i) vykreslim postavu
ii) chcem postavou pohnut - najprv ju vykreslim na rovnake miesto, ale celu s farbou pozadia (napr. celu bielu). zmenim koordinaty a prejdem na bod i)



Nahlásit jako SPAM
IP: 195.168.178.–
Ahoj30
Návštěvník
16. 7. 2010   #5
-
0
-

Dík ale stačil jenom ten jeden způsob. Já si v tom livewires jen hraju :)

Nahlásit jako SPAM
IP: 85.160.96.–
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, 11 hostů

Podobná vlákna

Pohyb obrazku — založil Patrik

Pohyb TEXTU — založil Michal

Animovaný pohyb — založil Luky C.

Pohyb v DBGrid — založil dyžon

 

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