VBiB/ACCB.net - Visual Basic in België | .net Ineta User Group  
Hoofdmenu

Advertenties

Het Computer Winkeltje HCW


Evenementen

Forum

Plaats nieuw bericht   Plaats Reactie
Vorige onderwerp Printervriendelijke versie Log in om je privé berichten te bekijken Volgende onderwerp
Auteur Bericht
doebiOffline
Onderwerp: Gesloten vorm detecteren in een matrix/array  BerichtGeplaatst: 09 jan 2009 - 10:36
Professional Developer


Geregistreerd op: 12-mrt-2006
Berichten: 331
Woonplaats: Diksmuide
Status: Offline
Hallo,
Ik wil een gesloten vorm detecteren in mijn 2d speelveld.
concreet is dit een array
Visual Basic code:

Dim PlayField(MaxX, MaxY, 1) As Playfieldstates


M.O. De derde dimensie is voorlopig van geen tel.
en definiering van playfieldstates is :
Visual Basic code:

Public Enum Playfieldstates
    StateEmpty
    StateSolid
    StateBuilding
    StateRed
End Enum


Nu als mijn pacman een gesloten vorm maakt
, ttz als in het playfield een gesloten vorm
getrokken (=een rand) door StateSolid,
wil ik die gesloten vorm opvullen

De gesloten vorm kan vierkantig zijn maar ook
veelhoeken. Wel zijn alle hoeken 90 of 270 graden Twisted Evil

Eerst moet ik dus detecteren dat er een gesloten vorm is,
daarna moet ik de gesloten vorm opvullen met StateSolid

Om duidelijker te zijn zie tekening , de rechter bovenhoek
is gesloten, dus deze moet gevuld worden. De zwarte steentjes
in de figuur zijn StateSolid
Merk op
Ook midden boven is een gesloten vorm, maar deze
moet niet gevuld worden want er zit een spookje in.



Ik weet helaas Crying or Very sad niet hoe hieraan te beginnen.
Vermoedelijk komt er wat recursiviteit aan te pas
maar zoiets is voor mij geleden sinds turbo pascal Laughing

Kan iemand me op weg zetten ?

Als het onduidelijk is wil ik het nader toelichten of
de broncode doorsturen.

Om het beter te begrijpen wat ik wil bereiken
zie deze link :

http://www.speeleiland.nl/spel/pacxon.html Cool

Dit is wat ik min of meer wil namaken.

Wie helpt ?

Groetjes

Doebi
Nu wil

_________________
Verwacht het onverwachte
 
 Bekijk gebruikers profiel Stuur privé bericht Verstuur mail Bekijk de homepage  
Reageer met quote Naar boven
YannouOffline
Onderwerp: Re: Gesloten vorm detecteren in een matrix/array  BerichtGeplaatst: 11 jan 2009 - 19:02
Moderator


Geregistreerd op: 14-mrt-2006
Berichten: 2432
Woonplaats: Kraainem
Status: Offline
Je kan hier 2 verschillende methodes hanteren:
  • Ofwel 'volg' je elke zwarte lijn (op elke splitsing moet je dan recursief werken) en probeer je via een Dijkstra-achtige routering het kortste pad (indien het bestaat) terug te vinden naar je startblokje. Je houdt dan in een vector bij welke richting je volgt en welke 'armen' je al onderzocht hebt (om oneindige iteraties te vermijden). Op die manier heb je dus de omlijning van de patatoïde die je wilt opvullen, rest alleen nog alle blokjes binnen de patatoïde te doorlopen om zeker te zijn dat er geen spookjes in zitten.
  • Ofwel hanteer je de inverse logica en breng je elk stuk witruimte in kaart als een vlek. Je loopt van links naar rechts en van boven naar onder door alle blokjes, en een wit blokje markeer je met een uniek cijfer. Van elk blokje controleer je de 4 buren, en als eentje al een cijfer heeft behoort het dus tot dezelfde vlek en krijgt dit blokje hetzelfde cijfer. Een wit blokje met 4 zwarte buurblokjes of witte blokjes zonder cijfer behoort dus tot een nieuwe vlek en krijgt een uniek cijfer. Daarna loop je een tweede keer door de matrix en controleert op aanliggende blokjes met verschillende cijfers (die dus tot dezelfde vlek behoren) en voegt die samen. Tot slot loop je elk uniek cijfer af en controleert of geen van de buurblokjes een spookje is, en als dat het geval is vervang je elk blokje met dat cijfer door StateSolid.
De tweede manier is veruit het eenvoudigst te implementeren en heeft als voordeel dat je in één keer het hele speelveld in kaart brengt.

Succes!
 
 Bekijk gebruikers profiel Stuur privé bericht  
Reageer met quote Naar boven
doebiOffline
Onderwerp: Re: Gesloten vorm detecteren in een matrix/array  BerichtGeplaatst: 11 jan 2009 - 20:01
Professional Developer


Geregistreerd op: 12-mrt-2006
Berichten: 331
Woonplaats: Diksmuide
Status: Offline
Hoi Yannou,

Dank voor de uitleg Cool ! Lijkt simpel maar zal vast niet makkelijk te programeren zijn Twisted Evil .
Ik zal dat een van de volgende dagen eens uitproberen en laat dan iets weten.

Saluutjes

Doebi

_________________
Verwacht het onverwachte
 
 Bekijk gebruikers profiel Stuur privé bericht Verstuur mail Bekijk de homepage  
Reageer met quote Naar boven
Berichten van afgelopen:     
Ga naar:  
Tijden zijn in GMT + 1 uur
Plaats nieuw bericht   Plaats Reactie
Vorige onderwerp Printervriendelijke versie Log in om je privé berichten te bekijken Volgende onderwerp
PNphpBB2 © 2003-2007 
 

 
Postnuke - ADODB Database - PHP 4/5 - pnPhpBB2 - Hosting bij Openminds
Met dank aan Jürgen voor de jarenlange inzet van visualbasic.be (anno 21-12-2000)
vbib.be gestart op 1/03/06 (extra vanaf 1/09: vbnet.be en vbdotnet.be)
VBiB is gerelateerd met wintips.be

Nieuwsbrief RSS Feed: backend.php