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)
Author: TRAX
Date: Mon, 31 Mar 2003 12:46
Date: Mon, 31 Mar 2003 12:46
68 lines
3616 bytes
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)
Author: TRAX
Date: Mon, 31 Mar 2003 18:13
Date: Mon, 31 Mar 2003 18:13
13 lines
1861 bytes
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)
Author: TRAX
Date: Tue, 01 Apr 2003 06:14
Date: Tue, 01 Apr 2003 06:14
34 lines
2724 bytes
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