Stránka 1 z 1

Java - Grafika - Výběr komponent "v pořadí"

Napsal: 10 pro 2011 18:33
od Ellrohir
Zdravím,

narazil jsem na problémek, se kterým si se svými současnými znalosti Javy neumím poradit sám...situace je taková, že si programuju takovou menší grafickou "hru" - skládačku (obrázek rozsekanej na čtverečky, jeden čteverček chybí, různě se to rozhází a účelem je složit posouváním obrázek zpátky dohromady)...realizoval jsem to tak, že mám JPanel a v něm jsou pomocí GridBagLayoutu umístěný jednotlivý dílky - JButtony (resp. jejich drobně obohacení potomci) s obrázkem...všechno mi to funguje, krásně funguje posouvání po kliknutí, mám i automatický "míchání", ovšem co potřebuju udělat je kontrola "výhry", to jest, že jsou dílky ve správným pořadí

řešení, co se snažím realizovat je, že má každej dílek svoje "pořadový číslo" a po každým tahu se to prožene funkcí, která bude postupně koukat na dílky a porovnávat, jestli pořadové číslo odpovídá očekávanému...ovšem k tomu potřebuju to koukání - postupně po řádcích od pozice "vlevo nahoře" po pozici "vpravo dole"...a to nevím, jak se dělá...myslel jsem intuitivně, že to bude metoda "getComponentAt(x,y)", kterou JPanel (resp. JComponent) má, ovšem z toho mi lezou samý JPanely a ne instance tý tlačítkový třídy...tak buď to používám blbě a nebo to není ono

měl by někdo nějakej nápad? mě teda eště napadá udržovat si bokem číselnou tabulku s aktuálními pozicemi a kdyžtak to tak udělám, ale zas mi to nepřijde tak elegantní jako tohle

Re: Java - Grafika - Výběr komponent "v pořadí"

Napsal: 10 pro 2011 21:53
od faraon
S tím testováním ti moc neporadím (mrkni sem), takhle daleko jsem se v Javě ještě nedostal, ale dej si bacha na jednu věc: Loydova patnáctka se dá zamíchat do dvou stejně velkých skupin pozic, z nichž jen jedna je řešitelná! Nevím kolik dílků máš ty, ale je pravděpodobné že to bude platit i pro tebe, takže pro míchání nestačí použít generátor náhodných čísel, ale musí se buď postupně rozházet, nebo po zamíchání testovat složitelnost.

Re: Java - Grafika - Výběr komponent "v pořadí"

Napsal: 10 pro 2011 22:04
od domitea
Co to napojit na dvourozměrné pole, kde každý díl bude mít své pořadové číslo?

--- Doplnění předchozího příspěvku (10 Pro 2011 22:04) ---

Co to napojit na dvourozměrné pole, kde každý díl bude mít své pořadové číslo?

Re: Java - Grafika - Výběr komponent "v pořadí"

Napsal: 10 pro 2011 22:28
od Ellrohir
faraon: díky za upozornění, ale o tom vím a to jsem vyřešil tím, že to nemíchám nahodile, ale nechám počítač provést náhodně několik set regulérních tahů z výchozí pozice ;)

domitea: jo, to je to moje "alternativní řešení", který vzpomínám v druhým odstavci, ale mám za to, že nějak musí jít ke komponentě v jiný komponentě přistupovat přímo - už jenom proto, že to Java dokáže zobrazit, tak musí přeci vědět, kde která je... :eh:

Re: Java - Grafika - Výběr komponent "v pořadí"

Napsal: 10 pro 2011 22:40
od faraon
Určitě to nějak zjistit jde, když ten JPanel zobrazuje nějaký dilek.obrazek tak musí být možnost přečíst dilek.cislo, ale jak o tom přemýšlím, tak sledovat pozice dílků ve vlastním poli bude asi mnohonásobně rychlejší než posílat dotazy přes několik tříd tam a zase zpátky...

K těm kombinacím, ony jsou ve skutečnosti složitelné obě skupiny, ale do dvou konečných seskupení. První polovina se dá poskládat do původní Loydovy podoby:

Kód: Vybrat vše

1  2  3  4
5  6  7  8
9  10 11 12
13 14 15 _

zatímco druhá polovina musí mít "díru" na počátku:

Kód: Vybrat vše

_  1  2  3
4  5  6  7
8  9  10 11
12 13 14 15

Re: Java - Grafika - Výběr komponent "v pořadí"

Napsal: 11 pro 2011 22:47
od Ellrohir
udělal jsem to nakonec přes tu tabulku s pozicema...zabralo to v podstatě míň času, než kolik jsem věnoval dotazování tady :D ale zas je pravda, že dokud jsem nezačal sepisovat konkrétně ten dotaz, tak mě ani nenapadlo to tak dělat :smile: