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..
Ik denk dat de snelste klap is voor elke bom alle omliggende vakken bepalen, en vervolgens voor elk vak een var +1 zetten...
ik denk dat je het beste een twee dimensionale array kan maken. Dan sla je hierin per vakje de status op. Vervolgens kan je de omliggende velden bekijken
dus van bijvoorbeeld bord[4][4] zijn de omliggende velden
[5][4]
[4][5] enz.
Ik ben nu al een stuk verder met de volgende code:

<?php

$field[$counter] = 0;
if( in_array( $counter + $this->fieldSize, $bombs ) )
$field[$counter]++;
if( in_array( $counter + $this->fieldSize + 1, $bombs ) )
$field[$counter]++;
if( in_array( $counter + $this->fieldSize - 1, $bombs ) )
$field[$counter]++;
if( in_array( $counter - $this->fieldSize, $bombs ) )
$field[$counter]++;
if( in_array( $counter - $this->fieldSize + 1, $bombs ) )
$field[$counter]++;
if( in_array( $counter - $this->fieldSize - 1, $bombs ) )
$field[$counter]++;
if( in_array( $counter - 1, $bombs ) )
$field[$counter]++;
if( in_array( $counter + 1, $bombs ) )
$field[$counter]++;
?>

Alleen, als een veld nu aan het einde van rij ligt, dan pakt hij hem soms ook voro de rijen daaronder.

Voorbeeld ( x is een bom )

1 - 2 - 2 - 2 - 2
x - 2 - x - x - 1
2 - 3 - 2 - 2 - 3
x - 1 - 0 - 0 - 0

Zoals je ziet, die 3 op de 3e rij, is voor die links er boven, maar ook voor die op de rij eronder en erboven in de 1e kolom.. Hoe kan ik dit tegengaan?
Je kan de lengte van een array bepalen (bijvoorbeeld zo: count($field[1]) -> Deze geeft de lengte van de rij. Zit een bom op het veld die gelijk staat aan de lengte van de rij - 1 (een array begint met tellen bij 0) dan bereken je alleen in dezelfde rij en links ervan.
@ Peter: ziet er leuk uit.

Tip: id's mogen niet met een cijfer beginnen.
@Jan: aangepast!
Dank je :) Heb er nog wat leuke extra's aan toegevoegd als hint, veld markeren als bom, en een leuk geluidje als je af / klaar bent. Tevens kan je zelf de grootte van het veld nu bepalen :D
Peter, het klopt nog niet met het originele spel. Als je op een plek klikt waar "en geen bom, en geen nummers" zijn dan wordt dat hele stuk open :)

Wel leuk gemaakt overigens :)

Reageren