🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
3 messages
3 total messages Started by TRAX Mon, 31 Mar 2003 12:46
vier op een rij controleren (vb.net)
#5521
Author: TRAX
Date: Mon, 31 Mar 2003 12:46
68 lines
3616 bytes

Ik heb een algoritme om te controleren of er op een diagonaal (van links
beneden, naar rechts boven) in een tabel vier op een rij aanwezig is. De
tabel wordt correct opgevuld dmv een gui, daar zit het probleem zeker niet
maar als ik vier op een rij maak in die diagonaal wilt hij het maar niet
detecteren. Hier volgt de code met wat uitleg:

--begin code--
'rechts diagonaal checken
        kol = kolom
'kolom is de waarde van de kolom van het laatste blokje dat wordt geplaatst
        Dim rijbegin = 0
        Dim kolombegin = 0
        Dim rijeinde = 0
        Dim kolomeinde = 0
        aantalgelijk = 0
        Dim r = rij
'rij is de waarde van de rij waar het laatste blokje is geplaatst
        Dim j As Integer
        Do Until (r >= 5 Or rijbegin <= -3)
            r += 1
            rijbegin -= 1
        Loop
'zoeken tot waar ik moet teruglopen om 4 op een rij te zoeken (er zijn 7
kolommen en 6 rijen)
        Do Until (kol <= 0 Or kolombegin <= -3)
            kol -= 1
            kolombegin -= 1
        Loop
        kol = kolom
        r = rij
        Do Until (r <= 0 Or rijeinde >= 3)
            r -= 1
            rijeinde += 1
        Loop
        Do Until (kol >= 6 Or kolomeinde >= 3)
            kol += 1
            kolomeinde += 1
        Loop
'ik heb nu de waarden van de tabelelementen die een diagonaal vormen met de
waarde van de cel waar het laatste blokje gezet is en hoever die diagonaal
verderloopt
'maximum 3 cellen ervoor en 3 erna (diagonaal bekeken), binnen de grenzen
van de tweedimensionale tabel
        For i = rijbegin To rijeinde Step 1
            For j = kolombegin To kolomeinde Step 1
                If tabel(rij - i, kolom + j) = tabel(rij, kolom) Then
                    aantalgelijk += 1
                    If aantalgelijk = 4 Then
                        Return True
                    End If
                Else
                    aantalgelijk = 0
                End If
            Next
        Next
'dit is een lus om te kijken of er 4 op een rij voorkomt in die diagonaal
--einde code--

Het probleem: als ik 4 op een rij in die diagonale richting zet doet hij
niks, ik heb al met verschillende breakpoints de waarden van al die
variabelen getest en ik vermoed dat kolom begin en einde, en rijbegin en
einde wel juist worden ingesteld maar aantalgelijk blijft steeds op 0. Ik
heb al vanalles geprobeerd dus als iemand ziet waar de fout zit, of als er
iets niet duidelijk is: be my guest!

alvast bedankt!
Re: vier op een rij controleren (vb.net)
#5522
Author: TRAX
Date: Mon, 31 Mar 2003 18:13
13 lines
1861 bytes
> Dit algorithme zal niet werken,  hij noteert alleen
> true als er 4 x achter elkaar diagonale rijen van 2
> gedetecteerd wordt. Als er 4 op een rij staan, wordt
> dat niet dedetecteerd, omdat-ie eerst weer een aantal
> ongeldige cellen langsgaat.


huh? ik ben niet mee, maar wat moet ik dan veranderen? hij doet toch +1 bij
aantalgelijk, als er vier na elkaar staan in diagonale richting moet ie toch
true geven, en aantalgelijk wordt enkel terug 0 als er een cel op die
diagonaal tussenzit die niet dezelfde waarde heeft (dus kan het geen 4 op
een rij zijn) en daarna checkt ie toch gewoon verder?
Re: vier op een rij controleren (vb.net)
#5524
Author: TRAX
Date: Tue, 01 Apr 2003 06:14
34 lines
2724 bytes
"Jawade" <jerommeke@email.srv> wrote in message
news:MPG.18f2ca03fa9cd537989789@news.nl.net...
> In article <lz%ha.16179$t_2.1674@afrodite.telenet-ops.be>,
Stijn.Verspeet@pandora[delete.this].be
> says...
> >
> > > Dit algorithme zal niet werken,  hij noteert alleen
> > > true als er 4 x achter elkaar diagonale rijen van 2
> > > gedetecteerd wordt. Als er 4 op een rij staan, wordt
> > > dat niet dedetecteerd, omdat-ie eerst weer een aantal
> > > ongeldige cellen langsgaat.
> >
> >
> > huh? ik ben niet mee, maar wat moet ik dan veranderen? hij doet toch +1
bij
> > aantalgelijk, als er vier na elkaar staan in diagonale richting moet ie
toch
> > true geven, en aantalgelijk wordt enkel terug 0 als er een cel op die
> > diagonaal tussenzit die niet dezelfde waarde heeft (dus kan het geen 4
op
> > een rij zijn) en daarna checkt ie toch gewoon verder?
>
> Hij kijkt van links naar rechts en dan van boven naar onder.
> Als er diagonaal een 2e geldige is, telt-ie op, maar daarna
> gaat-ie naar de volgende cel, rechts ervan, en dan is er niks
> te scoren en de teller gaat weer naar 0.
>
> Hoe het wel moet? Ik heb er nog niet diep over na gedacht,
> maar ik denk dat-ie bij 1 geldige cel gelijk de rest moet
> gaan controleren. Als er dan geen 4 zijn gaat-ie weer naar
> de 1e terug en dan weer verder.

inderdaad, is ondertussen al opgelost, thanks!
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads