Hoi!

Ik ben aan het proberen om met php een mijnenveger spel na te maken. De velden waar de bommen in liggen laat ik random berekenen en sla ik op in een array.
De vraag die ik nu heb, hoe kan ik het beste de omliggende velden van deze bommen berekenen? Dus hoeveel bommen er tegen een bepaald vakje aanliggen..

Hier een voorbeeld van de array met bommen:

<?php
Array ( [1] => 156 [2] => 311 [3] => 122 [4] => 199 [5] => 169 [6] => 221 [7] => 228 [8] => 314 [9] => 114 [10] => 152 [11] => 232 [12] => 245 [13] => 276 [14] => 242 [15] => 324 [16] => 28 [17] => 343 [18] => 27 [19] => 89 [20] => 301 [21] => 204 [22] => 47 [23] => 116 [24] => 301 [25] => 345 [26] => 237 [27] => 393 [28] => 266 [29] => 254 [30] => 336 [31] => 306 [32] => 233 [33] => 18 [34] => 281 [35] => 244 [36] => 41 [37] => 325 [38] => 210 [39] => 393 [40] => 125 [41] => 63 [42] => 60 [43] => 341 [44] => 324 [45] => 319 [46] => 368 [47] => 276 [48] => 276 [49] => 380 [50] => 272 [51] => 186 )
?>

Ik hoop dat iemand me hiermee kan helpen..
Ja klopt, daar was ik me ook van bewust.. maar aangezien dat geen 3 regels code zijn heb ik dat eerst even achterwegen gelaten. Misschien suggesties om dit zo efficient mogelijk op te lossen?

Ik heb nu alle aanwezige velden in een Array staan.

Stel veld 10 heeft een '2', dan is het: Array[ 10 ] => 2
Is veld 10 een bom, dan is het: Array[ 10 ] => 0
Is veld 10 'leeg', dan is het: Array[ 10 ] -1
Nou, dan ga je elk aangrenzend veld af, net als je doet met het bepalen van een nummer voor een vakje. Is het vakje leeg, dan omdraaien, is het een nummer die eraan grenst, dan omdraaien. Is het een bom dan niet. Het is een beetje dezelfde techniek die erbij komt kijken.
En dan moet ik voor elk omliggend vak ook weer alle omliggende vakken bepalen... etc... etc... eens kijken hoe dat gaat lukken :p
@Peter

Simpel, dat hoeft alleen bij omliggende vakjes van een aangrenzend leeg vakje. Staat er een nummer, dan hoef je niet alle omliggende vakjes af, staat er een bom, dan hoef je ook niet alle omliggende vakjes af.

Sla alle omliggende lege vakjes op in een array, en ga daarmee verder, of doe het direct door in de controle lus:
if($array[rijnr][kolnr] == -1){  
    //controleer omliggende vakjes}
Ik denk dat ik al weet hoe ik het ga doen. Als het straks helemaal klaar is Post ik het wel in de Scripts sectie :)

Edit: Het lijkt er op dat het me is gelukt!
Als iedereen even zou willen testen of alles werkt, dan zal ik als dat het geval is alles posten :)

http://private.xxx.nl/projects/scripts/mijnenveger/
Klopt niet altijd. (zie voorbeeld)



Bovendien klikte ik niet op een leeg vakje, maar een nummer daar 1 vakje vandaan. -> Je moet die functie ALLEEN aanroepen wanneer op een leg vakje is geklikt ;)
@Blanche: Dat heb ik net ook ontdekt ja :)
Ik ben nu aan het kijken waar die vandaan komt

Reageren