Archief - [PROG]JAVA non-static method vs static context

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

killgore

Legacy Member
@hierboven

dan steek je er gewoon toch via een lus in de eerste 5 elementen een random getal tussen 1 en 6 in :p.

Als je unieke getallen wilt is de oplossing idd het beste om een array te "shufflen". Anders is gewoon loopen en random generators gebruiken even efficiënt :p.

Devroush

Legacy Member
vrees dat ek nog een vraagje heb :)

Ik vraag me af of het mogelijk is een panel boven een ander te zetten. Ik zou graag de juiste combinatie tekenen, en op een panel erboven dan een zwart rechthoekske tekenen, zodat ge de juiste combinatie nie kunt zien. Als ge de goeie combinatie nie hebt gevonden zou het bovenste panel dan verdwijnen, waaronder ge de combinatie terug zult kunnen zien. Of is dit onmogelijk in java?

killgore

Legacy Member
Gewoon zorgen dat dat als laatste getekend wordt?

Ik ken niet veel van tekenfuncties in java, maar in de meeste eenvoudige tekenlibraries is het gewoon hetgene dat laatst getekend wordt dat boven alles komt.
Iets geadvanceerdere hebben een z-buffer of z-priority en nog geadvanceerder is "echt" 3D :p.

Devroush

Legacy Member
probleem is da hetgeen eronder ligt weg is e ;)
ik wil dus op twee panelen tekenen en dan de bovenste laten wegschuiven, zodat de onderste zichtbaar wordt. Zonder ook maar één keer die onderste panel opnieuw te tekenen!

.Acku.

Legacy Member
Normaal gezien zou dat moeten lukken met gewoon simpelweg een panel te adden en te removen, zorg er gewoon voor dat de paint methode van de onderliggende panel opnieuw kan tekenen wanneer je de bovenste panel removed (dus niet een keer slechts laten tekenen, altijd laten die inhoud tekenen als ze automatisch opgeroepen wordt tot er iets anders moet staan).

Een andere manier is het werken met ImageBuffers:
BufferedImage buf = new BufferedImage(800,600,BufferedImage.TYPE_INT);
Graphics2D g = buf.createGraphics();
g.drawImage(...);

Die buffer teken je dan gewoon op je canvas met g.drawImage(buf);

Zo kan je je beeld maken, en er dan een zwarte buffer overtekenen indien het moet, terwijl het origineel blijft bestaan

killgore

Legacy Member
De meeste mensen hertekenen in dat geval heel hun zaakje devroush :p, wat geen probleem mag zijn als je een beetje deftig gecode hebt (bv. gewoon 1 functie aanroepen in jouw geval met dan enkel een boolean voor dat zwarte balkje). Een beetje zoals Acku hierboven stelde, enkel buffert hij een deel omdat dit bij de 2e keer tekenen toch niet wijzigt, in de meeste grafische applicaties is zelfs dat overbodig & onbegonnenw erk.

.Acku.

Legacy Member
Njaaa, je kan er inderdaad ook gewooin een zwart vlak over tekenen:
if (hidden) g.fillRect(..);
en repaint() oproepen als de hidden var wijzigt.

Buffers zijn wel handig in Java als je veel FPS moet halen, GFX is een van Java's zwakste kanten

killgore

Legacy Member
.Acku. zei:
Njaaa, je kan er inderdaad ook gewooin een zwart vlak over tekenen:
if (hidden) g.fillRect(..);
en repaint() oproepen als de hidden var wijzigt.

Buffers zijn wel handig in Java als je veel FPS moet halen, GFX is een van Java's zwakste kanten
Buffers zijn een toepassing in elke grafische engine hoor. Enkel zal je in java mssch wat meer eigenlijke graphics bufferen, waar het in andere talen (oudere) gebruik wordt voor "bijna" alleen framebuffering (zodat je niet rechtstreeks op het scherm tekent).

En java niet sterk op gfx, ik weet het nog niet zo, ik heb over 2 weken voorstelling gehad voor onze specialisatierichtingen en daar zat toch een zot met een vrij knappe 3D engine in java. Natuurlijk was het enkel de 3D engine, maar toch :p. C/C++ evenaren zal moeilijk zijn natuurlijk, maar zo zwak zal het toch niet meer zijn.

.Acku.

Legacy Member
Er zijn extensies voor OpenGl e.d, en ondersteuning voor canvassen die tekenen via hardware, maar de standaard paint methodes zijn bijzonder traag. Software-matig tekenen zonder enige optimalisatie, het zuigt.

killgore

Legacy Member
.Acku. zei:
Er zijn extensies voor OpenGl e.d, en ondersteuning voor canvassen die tekenen via hardware, maar de standaard paint methodes zijn bijzonder traag. Software-matig tekenen zonder enige optimalisatie, het zuigt.
Dat geldt niet alleen voor java :p, maar zoals acid burn al zei: perfect de waarheid :p.

jodeman

Legacy Member
killgore zei:
Buffers zijn een toepassing in elke grafische engine hoor. Enkel zal je in java mssch wat meer eigenlijke graphics bufferen, waar het in andere talen (oudere) gebruik wordt voor "bijna" alleen framebuffering (zodat je niet rechtstreeks op het scherm tekent).

En java niet sterk op gfx, ik weet het nog niet zo, ik heb over 2 weken voorstelling gehad voor onze specialisatierichtingen en daar zat toch een zot met een vrij knappe 3D engine in java. Natuurlijk was het enkel de 3D engine, maar toch :p. C/C++ evenaren zal moeilijk zijn natuurlijk, maar zo zwak zal het toch niet meer zijn.

denk niet dat java ooit c++ gaat evenaren qua performantie. Qua programmeren zit java nu al veel verder vind ik persoonlijk.

killgore

Legacy Member
jodeman zei:
denk niet dat java ooit c++ gaat evenaren qua performantie. Qua programmeren zit java nu al veel verder vind ik persoonlijk.
Valt te zien wat je programmeert.

Elke taal zijn nut, voor we weer in de gebruikelijke flamediscussie vervallen.

edit: programmeer vb: ik programmeer voor gewone applicaties ook liever in c#/java, maar onlangs toch nog teruggevallen naar c++ omdat ik geadvanceerde file-reading moest doen en dat toch iets simpeler ging in c++ als in java (c# kon ik niet gebruiken aangezien ik mono atm niet heb geinstalled en het cross-platform moest zijn).

jodeman

Legacy Member
Das waar, java heeft een heel uitgebreide api, das wel handig als je gewoon programma's maakt voor eender wat. Maar als het op game developen aankomt dan denk ik dat c++ de bovenhand gaat blijven hebben. Heb ergens gelezen dat Sun zichzelf ook niet richt op het maken van games.
Denk dat dat ligt aan de uitgebreide api, als je een game maakt en dan veel de api gebruikt zorgt dat voor veel overhead. C++ draait meer rechtstreeks op uw systeem en java draait altijd op een platform (correct me if I'm wrong).
Heb eigenlijk nog nooit geprogrammeerd in c++ :).
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan