Toon posts:

[java] Map Editor

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik bezig met het maken van een map editor in java.
Ik zou graag de drag & drop functionaliteit implementeren voor het invoegen van tiles. (klik sleep huisje, klik sleep boompje).

Nu heb ik het principe door van d&d in java, en is dat deels geimplementeerd. Maar ik stoot op een probleem:

Mijn map is een isometric map. Wat moet ik nu voorstellen als objecten: elk vierkantje (weliswaar in 3d) moet een object zijn? Moet het vierkantje dan zijn randen tekenen? dan gaan er dubbele randen onstaan enzo..

Iemand hier ervaring mee?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

Waarom zou je van elk vierkantje een object maken? Het lijkt me handiger dat je bepaalt waar het vierkantje terecht komt, dan een bepaalde waarde in je map omzetten (het is het handigst als je hier gewoon een array voor gebruikt) en dat stukje opnieuw tekenen. Je hele map is dus een component, niet elk vierkantje afzonderlijk

Zo zou ik het doen iig :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Het probleem is dat ik per vierkantje zogezegd een bepaalde interface moet implementeren (DropTargetListener). Dit kan alleen voor een object é...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

Van je map control kun je toch een DropTargetListener maken :?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Ik zou iig de opslag van je map scheiden van de userinterface / displaying functie. De daadwerkelijke map moet dus gegevens over de elementen opslaan en functies hebben om gegevens te wijzigen en op te vragen.
Het daadwerkelijk teken of wijzigen van de map is echter een functie van de userinterface en moet (of iig is beter) gescheiden worden van de opslagfunctie van de map.

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Ik zou het niet met de dnd interface doen. Die is mijn inziens meer bedoeld om tussen applicatie s gegevens te kunnen verplaatsen (betere integratie met het OS)

Je kunt toch via MouseListeners behouden of een MouseButtonDown is en aan de hand daarvan bepalen of je aan het slepen bent of niet. Dan kun je ook bepalen boven welke vakje je muis hangt. Die zou je kunnen highlighten en op het moment dat je de muis los laat plak je hem aan dat vakje vast (zo ga ik dat doen in mijn ISO-engine iig)

Verwijderd

Ik begin net een beetje de design patterns te ontdekken... maar dit lijkt mee een mooi geval van model-view-controller :)

(please correct me if i'm wrong)

Verwijderd

Topicstarter
Verwijderd schreef op 30 maart 2004 @ 22:24:
Ik begin net een beetje de design patterns te ontdekken... maar dit lijkt mee een mooi geval van model-view-controller :)

(please correct me if i'm wrong)
dat ZOU een geval van mvc kunnen zijn maar aangezien je als gebruiker niet de code gaat aanpassen van de map, maar alleen via een grafische interface werkt heeft dit geen nut (slechts één view).

Over die dnd: als er al klasses bestaat die voor jou dit doen kan je ze beter gebruiken vind ik!

  • wasigh
  • Registratie: Januari 2001
  • Niet online

wasigh

wasigh.blogspot.com

Verwijderd schreef op 30 maart 2004 @ 23:48:
[...]


Over die dnd: als er al klasses bestaat die voor jou dit doen kan je ze beter gebruiken vind ik!
Als dat betekend dat je voor elke vlakje een interface moet schrijven dan zou ik dat niet doen.

Je hoeft alleen maar te weten waar de muis is op het dat de knop is losgelaten.

in je mousePressed kijk je welk in welke Object de muis zich bevind. (Geef je Object een bounding box doormiddel van een Rectangle. Zorg dat je ergens een lijst van objecten hebt en loop die lijst door en kijk voor elk Object of het muispunt in de bounding box volt.

Zolang de mousePressed is, verander je de x, y van je Object naar de x,y van de muiscursor.

Op het moment dat je de muis released kijk je boven welk vlak je hangt.

misschien 15 regels code bij elkaar. Daar zou ik de DND api niet voor misbruiken.

Verwijderd

Topicstarter
Voorlopig implementeert de "map" de interface DropTargetListener. Wanneer er dan wordt "gedropt" gaat hij kijken naar de locatie>> deze wordt omgezet naar interne locatie op de map.
Hetzelfde met rollover, het juiste vakje wordt gekleurd.

Dat is zelfs nog minder dan 15 regels ;-)

Algemeen vraagje daarom:
Moet je altijd de klasses gebruiken die voorzien zijn in java om je doel te bereiken? Ik ben van mening dat je best deze klasses gebruikt zodat je zelf weinig overhead creeert.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 10:24

.oisyn

Moderator Devschuur®

Demotivational Speaker

wasigh schreef op 31 maart 2004 @ 08:41:
[...]

Als dat betekend dat je voor elke vlakje een interface moet schrijven dan zou ik dat niet doen.
waarom zou dat dat betekenen :?
Je kunt gewoon de x en y coördinaten opvragen van waar het item gedropped is bij een drop event hoor

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1