24 órás programozó és csapatverseny eredmény
Megint egy kissé lemaradtam. Útközben volt egy 3. nemzetközi 24 órás programozó és csapatverseny, melyen én is részt vettem két csapattársammal, Klampeczki (C++) Zsolttal és Erdei (Java) Szabolccsal. Csapatunk neve KergeBirge volt, és sikerült a 3. helyezést elérnünk, immár harmadszor. :) A honlapon a részletes eredmények, képek, és a feladat is megtalálható, érdemes megtekinteni. Zsolt közülünk C++ nyelven programozott, Szabolccsal ketten Javaban.
Természetesen JBuilderrel fejlesztettem, hiszen grafikus interfészt is
kellett fejleszteni, meg amúgy is kényelmesebb. No az előbbit még csak
most teszteltem le rendesen, de eléggé csalódtam. Szerencsére nem
generál bele metaadatokat, mint az IBM VisualAge For Java, és a
megjelenítése is gyorsabb, de abban az esetben, ha egy JFrame
-mel
dolgozok, és rajta egy JPanel
-lel, érdekes dolgok történnek. Két nézet
van, egyrészt ahol a frame tulajdonságait tudom szerkeszteni, illetve a
menüsort, másrészt a konkrét panelt. Nos ezek között a váltás elég
gyeszora, sajnos be kell zárni a fájlt, és újra betölteni. :(
Másik érdekes fejlemény akkor jött ki, mikor több transzparens GIF képet
szerettem volna betölteni, és egy nagy Graphics
-ra rátenni, különböző
pozíciókra. A háttér létrehozása
java.awt.Component.createImage(int width, int height)
metódussal
történt, a kis képek betöltése
Image img = new ImageIcon(aFileName).getImage();
sorral. Abban az
esetben, ha abszolút hivatkozást adtam meg egy fájlra, és ciklusból azt
többször tettem rá, müködött. Ha abszolút hivatokzást adtam meg, és több
fájlt akartam használni, nem működött. Ezzel szórakoztam egy órát, majd
az összes fájlt bemásoltam a class fájlok közé, nem adtam meg elérési
útvonalat, és ment minden. Kell nekem egy versenyen egy ilyen bugba
beleakadni. Aki tudja, hogy ez miért van, írjon.
Kellemes tapasztalataim voltak viszont az először használt Piccolo-val, amit a Marylandi Egyetemen fejlesztenek, szabad forráskódú Zoomable User Interface (ZUI). Tulajdonképpen egy grafikus keretrendszer felhasználói felületek fejlesztésére, mely lehetővé teszi a zoomolást, több kamera használatát, layereket, képeket, stb. A Piccolo a Jazz utódja, ez utóbbi fejlesztése már abbamaradt, a fejlesztők ezen rendszer kifejlesztésekor szerzett tapasztalatokat használják fel egy hasonló funkcionalitású, de egyszerűbben használható rendszer megírására. A csomag természetesen bőséges dokumentációt és példaprogramot tartalmaz.
Tulajdonképpen egy canvasról van szó, melyet a szokásos módon illeszthetünk be alkalmazásunkba, és ezekre fa struktúrában különböző objektumokat helyezhetünk el. Ezen objektumok lehetnek egyszerű geometriai alakzatok (téglalap, sokszög), görbe, szöveg vagy akár kép is. A megjelenített kép tetszőlegesen zoomolható és scrollozható. Ezek eseméynkezelői testre szabhatóak. Ezen kívül az elhelyezett objektumoknak is van külön eseménykezelője, melyet implementálhatunk, de akár a beépítettet is használhatjuk, mely lehetővé teszi az objektumok (akár csoportos) kijelölését, mozgatását, átméretezését, szerkesztését. Nagy segítség, hogy klikkeléskor nem a panel koordinátáit adja vissza, hanem a tényleges koordináta-rendszerre vissza transzformáltat. Támogatja az objektumok áttetszőségét is.