Hallo Allemaal,
Ik moet voor een vak Mijnenveger programmeren in Visual Basic. Zoals je misschien weet is het zo, dat als je in Mijnenveger op een 0 klikt, alle nullen in de omgeving getoond worden. Hiervoor had ik gedacht om gebruik te maken van het floodfill-algoritme. Ik heb dit proberen te implenteren in mijn programma maar wanneer ik op een nul klik, en de Sub wordt opgeroepen, krijg ik een error "StackOverflowException was unhandled". Dus ik veronderstel dat er in mijn recursie geen grens zit, hoewel ik vrij zeker ben van wel.
Ter verduidelijking:
- De array 'field_value' is van het type String
- De verschillende If-Else cases zijn om niet buiten mijn rij-domein te komen (bijvoorbeeld als ik een 0 aanklik langs de rand van mijn venster, dat hij niet gaat controleren naar nulllen die niet in het venster behoren, want dan krijg je uiteraard een error)
Ik hoop dat jullie me kunnen helpen
Alvast bedankt 
Hier is een link naar mijn code in PasteBin
Gebruik gewoon code tags a.u.b. wanneer je code post. Links naar externe sites gaan vandaag of morgen stuk en dan is je topic onbruikbaar voor mensen die later (m.b.v. de search bijvoorbeeld voor een soortgelijk probleem) op je topic stuiten.
Ik moet voor een vak Mijnenveger programmeren in Visual Basic. Zoals je misschien weet is het zo, dat als je in Mijnenveger op een 0 klikt, alle nullen in de omgeving getoond worden. Hiervoor had ik gedacht om gebruik te maken van het floodfill-algoritme. Ik heb dit proberen te implenteren in mijn programma maar wanneer ik op een nul klik, en de Sub wordt opgeroepen, krijg ik een error "StackOverflowException was unhandled". Dus ik veronderstel dat er in mijn recursie geen grens zit, hoewel ik vrij zeker ben van wel.
Ter verduidelijking:
- De array 'field_value' is van het type String
- De verschillende If-Else cases zijn om niet buiten mijn rij-domein te komen (bijvoorbeeld als ik een 0 aanklik langs de rand van mijn venster, dat hij niet gaat controleren naar nulllen die niet in het venster behoren, want dan krijg je uiteraard een error)
Ik hoop dat jullie me kunnen helpen
Hier is een link naar mijn code in PasteBin
Gebruik gewoon code tags a.u.b. wanneer je code post. Links naar externe sites gaan vandaag of morgen stuk en dan is je topic onbruikbaar voor mensen die later (m.b.v. de search bijvoorbeeld voor een soortgelijk probleem) op je topic stuiten.
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
| Private Sub zerocheck(ByVal kolom As Integer, ByVal rij As Integer) ' Deze code toont alle nullen in de omgeving If (field_value(kolom, rij) = "0") Then ' If ( waarde van het element van die rij = 0), => Text van de button = 0 + oproepen van de recursie field(kolom, rij).Text = field_value(kolom, rij) If (kolom = 0 And rij = 0) Then ' Case 1: Links boven Call zerocheck(kolom, rij + 1) Call zerocheck(kolom + 1, rij) Call zerocheck(kolom + 1, rij + 1) ElseIf (kolom = AANTAL_KOLOMMEN - 1 And rij = 0) Then ' Case 2: Rechts boven Call zerocheck(kolom, rij + 1) Call zerocheck(kolom - 1, rij) Call zerocheck(kolom - 1, rij + 1) ElseIf (kolom = AANTAL_KOLOMMEN - 1 And rij = AANTAL_RIJEN - 1) Then ' Case 3: Rechts onder Call zerocheck(kolom, rij - 1) Call zerocheck(kolom - 1, rij) Call zerocheck(kolom - 1, rij - 1) ElseIf (kolom = 0 And rij = AANTAL_RIJEN - 1) Then ' Case 4: Links onder Call zerocheck(kolom, rij - 1) Call zerocheck(kolom + 1, rij) Call zerocheck(kolom + 1, rij - 1) ElseIf (kolom = 0) Then ' Case 5: Linkerkant Call zerocheck(kolom, rij + 1) Call zerocheck(kolom, rij - 1) Call zerocheck(kolom + 1, rij) Call zerocheck(kolom + 1, rij + 1) Call zerocheck(kolom + 1, rij - 1) ElseIf (kolom = AANTAL_KOLOMMEN - 1) Then ' Case 6: Rechterkant Call zerocheck(kolom, rij + 1) Call zerocheck(kolom, rij - 1) Call zerocheck(kolom - 1, rij) Call zerocheck(kolom - 1, rij + 1) Call zerocheck(kolom - 1, rij - 1) ElseIf (rij = 0) Then ' Case 7: Bovenkant Call zerocheck(kolom, rij + 1) Call zerocheck(kolom + 1, rij) Call zerocheck(kolom - 1, rij) Call zerocheck(kolom + 1, rij + 1) Call zerocheck(kolom - 1, rij + 1) ElseIf (rij = AANTAL_RIJEN - 1) Then ' Case 8: Onderkant Call zerocheck(kolom, rij - 1) Call zerocheck(kolom + 1, rij) Call zerocheck(kolom - 1, rij) Call zerocheck(kolom + 1, rij - 1) Call zerocheck(kolom - 1, rij - 1) Else ' Case 9: Ergens in het veld (weg van de kanten) Call zerocheck(kolom, rij + 1) Call zerocheck(kolom, rij - 1) Call zerocheck(kolom + 1, rij) Call zerocheck(kolom - 1, rij) Call zerocheck(kolom + 1, rij + 1) Call zerocheck(kolom + 1, rij - 1) Call zerocheck(kolom - 1, rij + 1) Call zerocheck(kolom - 1, rij - 1) End If End If End Sub |
[ Voor 66% gewijzigd door RobIII op 06-11-2012 14:09 ]