Roboti přicházejí v Tkinteru – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Roboti přicházejí v Tkinteru – Python – Fórum – Programujte.comRoboti přicházejí v Tkinteru – Python – Fórum – Programujte.com

 

Martin0
Newbie
17. 7. 2006   #1
-
0
-

Jak se v Tkinteru dá zakomponovat pohyb závislý na stisku klávesy v livewires to mám ale v tkinteru na to nemuzu prijit :((

Nahlásit jako SPAM
IP: ...–
wickzig0
Newbie
Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
17. 7. 2006   #3
-
0
-

jj, pokud by cokoliv nebylo jasného, ptej se ;-)

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Martin0
Newbie
19. 7. 2006   #4
-
0
-

No díky za ten odkaz ten pomohl, ale nevim jak udělat ten pohyb. Zkoušel jsem to metodou canvas.move(parametry),ale nějak mě to moc neposlouchá :D .Takže se ptám jak pracuje Tkinter s obrazci jako je kruh a hlavně s jeho souřadnicemi.(v livewires u kruhu prostě zadám souřadnice středu, ale v Tkinteru 4 souřadnice ) :((

Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
19. 7. 2006   #5
-
0
-

[i]No díky za ten odkaz ten pomohl, ale nevim jak udělat ten pohyb. Zkoušel jsem to metodou canvas.move(parametry),ale nějak mě to moc neposlouchá? :D[/i]

to je divný, asi někde děláš chybu. Našel jsem v archivu tento script, který mi funguje. Snad to z toho pochopíš lépe než kdybych to popisoval:

from Tkinter import *


def move():
platno.move(kruh, 5,5)

zaklad=Tk()
platno=Canvas(zaklad, bg='white')
platno.pack()

kruh=platno.create_oval(20,20,30,30, fill='red')
platno.create_window((10,10), window=Button(text="a", command=move))

mainloop()


[i](v livewires u kruhu prostě zadám souřadnice středu, ale v Tkinteru 4 souřadnice ) :((
[/i]

no, jestli se nepletu, tak livewires je postavená na Tkinter. Chci tím říci, jestli umíš trochu algebraickou geometrii, že by neměl být problém udělat funkci, která přijímá střed a poloměr, a vrací 4 souřadnice (souřadnice rohů opsaného čtverce). V livewires je to určitě tak udělané.

nevzdávej to ;-)

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Martin0
Newbie
19. 7. 2006   #6
-
0
-

No pomohlo mi to moc u? mi to chod? jak chci j? :D V livewires uz to t?m?? m?m cel?(j??t? ?rot a je to :D) a v tkinteru to zkou??m (ale zat?m nevím jak v tkinteru ud?l?m sr??ky, jako v livewires to asi nepujde).
Je?t? k livewires: Psal si, ?e 1 krok hra?e by m?l b?t asi 0.02 a robot? t?eba t?etina, ale kdy? to tak d?m a d?m tam t?ebas 50 robot? tak se to dost kou?e z toho vypl?v? ?e tam m?m asi n?jakou chybu :D ale fakt nevím v ?em, ale neboj nevzd?m to dokud to nebude b?hat tak jak budem p?skat :skunk2:

Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
19. 7. 2006   #7
-
0
-

[i]v tkinteru to zkou??m (ale zat?m nevím jak v tkinteru ud?l?m sr??ky,[/i]
http://tkintercz.wz.cz/canvas.htm#Tkinter.Canvas.find_enclosed-method
http://tkintercz.wz.cz/canvas.htm#Tkinter.Canvas.find_overlapping-method

[i]Je?t? k livewires: Psal si, ?e 1 krok hra?e by m?l b?t asi 0.02 a robot? t?eba t?etina, ale kdy? to tak d?m a d?m tam t?ebas 50 robot? tak se to dost kou?e z toho vypl?v? ?e tam m?m asi n?jakou chybu :D[/i]

mo?n? ?e ne, kdy? jich d?m 50 tak se mi to kou?e taky :-) ty ??sla co jsem dal, jsou experiment?ln? a m??e? je zm?nit. Krok m?m tak mal?, abych tam nikde nemusel m?t sleep() a ?e maj? t?etinovou rychlost, tak to je abych jim stihnul ut?ct ;-)

to kous?n? by mohla vy?e?it n?jak? optimalizace ...

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Martin0
Newbie
20. 7. 2006   #8
-
0
-

No ale nen? to divn? ?e se tak primitivn? hra kou?e(nev?m jak se to d? optimalizovat)? Jinak v livewires u? to m?m t?m?? hotov? u? chyb? jen zji?t?n? jestli hr?? vyhr?l, proto?e zat?m nevím jak ud?lat aby se p?es hru napsal n?jakej n?pis nebo tak :skunk: .A te? hur? na ten Tkinter :D

Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
20. 7. 2006   #9
-
0
-
Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Martin0
Newbie
20. 7. 2006   #10
-
0
-

Jak udělat v livewires nějaké menu?

Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
21. 7. 2006   #11
-
0
-

nelze.

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Martin0
Newbie
21. 7. 2006   #12
-
0
-

Tak sem udělal k tomu menu v Tkinteru, ale je tam problem že kliknu když kliknu na tlačitko START tak bych chtěl aby hrací plocha měla focus ale nevím jak to pro livewires udělat. :full:

Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
21. 7. 2006   #13
-
0
-

jo, pravda je, ?e livewires je na TKinter postaven?, tak?e by to j?t m?lo. Je to ale trocha magie, kv?li tomu, ?e v livewries jsou jm?na prom?nn?ch vcelku slo?it? a je?t? k tomu jsou n?kter? tzv. chr?n?n?. Plocha v livewires nen? nic jin?ho ne? Canvas z Tkinter.

V livewires to tedy vypad? takto (zjednodu?eno):

def begin_graphics(width=640, height=480, background=Colour.white, title=None):


global _root_window, _canvas, _canvas_x, _canvas_y, _canvas_xs, _canvas_ys

# Create the root window
_root_window = Tkinter.Tk()
_root_window.protocol('WM_DELETE_WINDOW', _destroy_window)
if _Windows:
_root_window.bind('<Alt-F4>', _destroy_window)
_root_window.title(title or 'Graphics Window')
_root_window.resizable(0, 0)
# XXX Should we force the input focus into the window?

# Create the canvas object
try:
_canvas = Tkinter.Canvas(_root_window,
width=width, height=height,
bg=background._toTk())
_canvas.pack()
_canvas.update()
except:
_root_window.destroy()
_root_window = None
raise


root je jako _root_window a canvas jako _canvas. Zd?lo by se, ?e by tedy m?lo sta?it napsat:

_root_window.focus() # nebo

_root_window.focus_force() # nebo focus_set()


Ale to nefunguje, proto?e jm?na, kter? za??naj? na podtr??tko jsou "chr?n?n?" a nejsou do na?eho programu vta?ena pomoc?
from livewires import *


Mus?me to ud?lat ru?n?. tedy:
from livewires.beginners import _root_window

# vyzkou?ej na p??kazov? ?d?ce po zav?en? okna livewires nebo po CTRL+C v ?ern?m okn? p?i spu?t?n? h?e:
print _root_window # a podobn?

to livewires.beginners je tam proto, ?e livewires je poiuze slo?ka v site-packages a v n? jsou 3 py souboru. Pokud nic nezad??, tak se bere ten z __init__.py. A tam je from beginners import *. Tak?e my mus?me ??hnout p??mo do souboru beginners a to se d?l? pr?v? takto.

A pak by ji? m?lo fungovat vol?n? metody focus(), jak jsem napsal v??e....

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Martin0
Newbie
21. 7. 2006   #14
-
0
-

Je to hezký, ale když se to do té hry nějak snažím zakomponovat tak mi to u všeho dělá problémy se souřadnicema a háže chyby :((

Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
21. 7. 2006   #15
-
0
-

zkus to from livewires.beginners import _root_window dát až za begin_graphics(). Nic víc mne nenapadá.

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Martin0
Newbie
21. 7. 2006   #16
-
0
-

No mě taky ne. Přidal sem ten kod na začátek programu, zkoušel něco poupravovat,zkoušel sem ho dát jinam, ale hned v první fci to najde chyby a tak to jde dál.
příklad chyby(nevím co se mu nelibí, když asi 5 řádků předtím měl taky příkaz move jen měl jiné souřadnice(150,240)):

Exception in Tkinter callback
Traceback (most recent call last):
File "D:Python24liblib-tkTkinter.py", line 1345, in __call__
return self.func(*args)
File "D:Python24pokus.py", line 74, in komplet
move(100,240)
File "D:Python24Libsite-packageslivewiresbeginners.py", line 328, in move
_canvas_x, _canvas_y = x, _canvas_ys-y
TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'

Asi tedy budu muset zrušit celé menu jinak vždy budu muset kliknout nejdřív na hrací plochu.

Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
21. 7. 2006   #17
-
0
-

hmm, to je divn?. Zkusil bych toto,
move((100,240)) - sou?adnice v tuple

Pokud to bez from livewires.beginners import _root_window funguje jak m?, bude? se muset bez menu v livewires obej?t :-(

Apropo, k ?emu tam to move() m??? J? tam m?m tedy pouze 2x move_to() pro p?esun hr??e a robota. move() p?esouv? pouze aktu?ln? bod.

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
Martin0
Newbie
21. 7. 2006   #18
-
0
-

No to asi nevy?e??m na to nem?m. No ud?lal sem v tom menu mo?nost vybrat po?et robot? a pojmenovat si hr??e a kdyby t?eba n?kdo zadal do po?tu robot?: "!!", tak se mu otev?e hrac? okno a v n?m bude n?jak? n?pis a abzch ho napsal mus?m se p?esunout na n?jak? bod.
To menu tam asi nech?m proto?e d?l?m na v?pisu nej sk?re.
Jo a jde kdy? m?? soubor a v n?m ta jm?na+sk?re tak ty data v n?m uspo??dat podle ??sel, nebo m? napadlo ?e bych obsah toho souboru dal do seznamu a v n?m bych to se?adil(ale je?t? nevím jak).
M??u ti to kdy?tak hodit abys vid?l ty nesmysli co tam m?m a mo?n? by si v?d?l jak tam zakomponovat ten focus...(ale pochybuju ?e na to m?? ?as).
Jinak moc d?ky za rady.

Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
21. 7. 2006   #19
-
0
-

[i]Jo a jde když máš soubor a v něm ta jména+skóre tak ty data v nám uspořádat podle čísel, nebo mě napadlo že bych obsah toho souboru dal do seznamu a v něm bych to seřadil(ale ještě nevím jak).[/i]
pčesně, načíst do seznamu a seřadit. Bude to pravděpodobný seznam v seznamu, dvojropzměrné pole. To bude asi nejvěhodnější.

[i]Můžu ti to kdyžtak hodit abys viděl ty nesmysly co tam mám[/i]
geon@programujte.com ;-)

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
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, 19 hostů

Podobná vlákna

Hra:Roboti přichází — založil Ahoj3

Livewires problém :: Roboti — založil bigdog57

Textvariable v Tkinteru — založil Marek Kadlčík

Zarovnání v Tkinteru — založil maral

 

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