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
Fórum › Python
Posouvání obrázku
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š
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 ;)
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
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š
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.
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:))
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š
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Posouvání okna v C# — založil Standa
Posouvání desetinné čárky — založil juraj111
Posouvání kurzoru v RichEditu — založil Schmela
Posouvání stránek - efekt — založil Alex
Moderátoři diskuze