Toon posts:

[Java] GetPixel

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo iedereen,

Ik ben bezig met een spelletje.

[omschrijving spel]
Er is een speelveld waar allemaal (simpele) objecten in voor kunnen komen(circel, vierkant en driehoek). Door dit speelveld rolt een balletje. Als het balletje een opject raakt moet deze terug kaatsen(de terug kaatsing is uiteraard per object verschillend)

[probleem]
Ik heb nu alle objecten in een array gestopt. Als het balletje beweegt kijkt hij in een staal van 2 objecten om zich heen. Als het een opject tegenkomt kaatst het terug. Dit werkt goed als het balletje een circel tegenkomt, en een vierkant werkt ook wel, maar de hoeken zijn wel een probeem. Zeker als er meerdere vierkanten tegen elkaar aanliggen. De driehoek is helemaal lastig, dat werkt helemaal nog niet.

[vraag]
Iemand vertelde mij dat ik een onzichtbare layer(laag) over het speelveld moest zetten met verschillende RGB waarde per object. Maar hoe kan ik die uitlezen. Ik zoek iets van een getPixel() methode, maar ik kan daar niet veel over vinden. Weet iemand hoe ik dit doe, of heeft iemand een betere oplossing.

Alvast bedankt. Ik heb slapeloze nachten hierover, dus ik hoop dat iemand mij kan helpen. 8)7

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17-08 23:56

Janoz

Moderator Devschuur®

!litemod

Als je een onzichtbare laag aanbrengt hoef je daar toch geen grafische functies voor te gebruiken, maar kun je toch gewoon een 2d array gebruiken? Of wil je de objecten op deze onzichtbare laag gaan tekenen met de normale methodes? In dat geval zul je naar het object Raster moeten kijken.

Persoonlijk ben ik van mening dat je dit probleem veel beter op kunt lossen zonder te rasterizen. Aangezien je redelijk primitive objecten hebt zou dit wiskundig veel beter op te lossen zijn dan met een raster.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Ja dat doe ik nu ook al. Ik gebruik wel geen raster, maar wel een 2dimensionaal array waar alle opjecten in zijn opgeslagen. Maar dat werkt niet echt lekker. Vooral als meerdere objecten naast elkaar liggen. Als ik bijvoorbeeld 2 vierkanten naast elkaar heb liggen moeten de zijdes doorgetrokken worden en de hoekpunten veranderen. Bij een vierkant is dit nog wel te doen, alleen bij complexere figuren werkt het niet mee(bijv. een driehoek met een vierkant)

mmm echt iemand geen andere ideeen, ik loop echt vast !!!

[ Voor 7% gewijzigd door Verwijderd op 06-08-2003 19:30 ]


Verwijderd

Als je toch al wet primitieven werkt, kan je misschien de AWT primitieven zoals Rectangle etc gebruiken. Deze bevatten een contains(x,y) functie, waarmee je kan zien of een punt erin ligt.

Eventueel kan je ook zelf wel een Traingle schrijven en sawengestelde objecten.

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
eigenlijk moet je gewoon collision detection gaan doen wat niet zo evident is voor non-simpele vormen (ie niet recht). In feite heb je meestal maar een paar dingen nodig - lijn/lijn intersectie (driehoe, vierhoek, etc, alles met rehte lijnen dus) en circle/lijn (advanced: curve/lijn). Maar alles hangt ervan af hoe accuraat het moet zijn. een hit-buffer gaat wel maar echt geweldig is het niet (veel overhead en ZEKER in java) maar op een snelle back gaat het vast wel. zelfs gebruik ik af en toe span-based intersectie. in ieder geval genoeg om verder te googlen