Mijnenveger
Ik ben bezig met een mijnenveger spelletje.
Deze bestata uit 100 vakjes (10 x 10).
Nu wil ik 18 mijnen in het veld, die via een rand worden gekozen.
Alleen om deze allemaal 1 voor 1 uit te zoeken is te ingewikkeld en kan leiden tot fouten (2x het zelfde getal bijvoorbeeld).
Weet iemand hoe ik dit in een keer eruit kan halen?
Alvast bedankt,
for
Dan 18 keer random laten bepalen, en per keer controlleren of al bezet, indien bezet nog een keer door laten lopen $i -1
Dan 18 keer random laten bepalen, en per keer controlleren of al bezet, indien bezet nog een keer door laten lopen $i -1
Kan je een voorbeeldje posten? Snap niet precies hoe je het bedoeld, en de site kom ik ook niet 100% aan uit. Bedankt!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// een array 1-100 in random volgorde zetten
$array = range(1,100);
shuffle($array);
// eerste 18 selecteren
$array_slice = array_slice($array, 0, 18);
echo '<table><tr><td></td>';
for($i = 1;$i < 101;$i++){
//zit $i in $array_slice
if(in_array($i, $array_slice)){
echo '<td style="color:f00;">1</td>'; //1 is mijn
}
else{
echo '<td id="vak">0</td>'; //0 is geen mijn
}
if($i%10 == 0){
echo '</tr><td>';
}
}
echo '</tr></table>';
?>
// een array 1-100 in random volgorde zetten
$array = range(1,100);
shuffle($array);
// eerste 18 selecteren
$array_slice = array_slice($array, 0, 18);
echo '<table><tr><td></td>';
for($i = 1;$i < 101;$i++){
//zit $i in $array_slice
if(in_array($i, $array_slice)){
echo '<td style="color:f00;">1</td>'; //1 is mijn
}
else{
echo '<td id="vak">0</td>'; //0 is geen mijn
}
if($i%10 == 0){
echo '</tr><td>';
}
}
echo '</tr></table>';
?>
edit: ff de foutjes eruit gehaald
edit2: fixed
Gewijzigd op 01/01/1970 01:00:00 door Kalle P
Helaas werkt hij nog niet hij gaf als eerste hier een fout aan:
if($i%10 = 0){
wat ik veranded heb in: if($i%10 == 0){
Nu deed hij het alleen krijg ik deze foutmelding nog 18x: "fout in lijn 32".
if(in_array($i, $array_slice)){ (32).
Verder zie ik ook Dat je een mijn zo aangeeftL:
echo '<td id="mijn">1</td>'; //1 is mijn
Kan ik ze ook laten weg schrijven naar mijn mysql?
Bijvoorbeeld 1 tm 18 hebben allemaal mijnen,
Nu wil ik dat ze zo weg geschreven worden:
1.2.3.4.5.6.7.8 etc.
Met punt ertussen zodat ik ze kan exploden.
Alvast bedankt,
Michael.
Warning: array_slice(): The first argument should be an array in /home/virtual/site50/fst/var/www/html/spel.php on line 27
Warning: in_array(): Wrong datatype for second argument in /home/virtual/site50/fst/var/www/html/spel.php on line 32
Waarom zou je het in een database willen doen?
Ik heb het wel ff gemaakt, maar ik zou me eerst afvragen waarom?
Ohja het is niet de efficienste manier, maar zo zie je beter hoe het werkt, anders moet je de query er in de if(in_array($i, $array_slice)) zetten.
Code (php)
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
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
<?php
// een array 1-100 in random volgorde zetten
$array = range(1,100);
shuffle($array);
// eerste 18 selecteren
$array_slice = array_slice($array, 0, 18);
$a = array();
echo '<table><tr><td></td>';
for($i = 1;$i < 101;$i++){
//zit $i in $array_slice
if(in_array($i, $array_slice)){
$a[] = $i;
echo '<td style="color:f00;">1</td>'; //1 is mijn
}
else{
echo '<td id="vak">0</td>'; //0 is geen mijn
}
if($i%10 == 0){
echo '</tr><td>';
}
}
echo '</tr></table>';
//database
foreach($a as $key => $waarde){
$key++;
//wel eerst database connectie make
$query = "INSERT INTO mijnenveger (key, waarde) VALUES ('".$key."', '".$waarde."')";
mysql_query($query) or die("Fout bij uitvoeren query");
}
?>
// een array 1-100 in random volgorde zetten
$array = range(1,100);
shuffle($array);
// eerste 18 selecteren
$array_slice = array_slice($array, 0, 18);
$a = array();
echo '<table><tr><td></td>';
for($i = 1;$i < 101;$i++){
//zit $i in $array_slice
if(in_array($i, $array_slice)){
$a[] = $i;
echo '<td style="color:f00;">1</td>'; //1 is mijn
}
else{
echo '<td id="vak">0</td>'; //0 is geen mijn
}
if($i%10 == 0){
echo '</tr><td>';
}
}
echo '</tr></table>';
//database
foreach($a as $key => $waarde){
$key++;
//wel eerst database connectie make
$query = "INSERT INTO mijnenveger (key, waarde) VALUES ('".$key."', '".$waarde."')";
mysql_query($query) or die("Fout bij uitvoeren query");
}
?>
Wat misschien ook kan dat weet ik niet is:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
//database
$query = array();
foreach($a as $key => $waarde){
$key++;
//wel eerst database connectie maken
$query[] = "INSERT INTO mijnenveger (key, waarde) VALUES ('".$key."', '".$waarde."')";
}
mysql_query($query) or die("Fout bij uitvoeren query");
?>
//database
$query = array();
foreach($a as $key => $waarde){
$key++;
//wel eerst database connectie maken
$query[] = "INSERT INTO mijnenveger (key, waarde) VALUES ('".$key."', '".$waarde."')";
}
mysql_query($query) or die("Fout bij uitvoeren query");
?>
Ik ben hier pas nieuw maar mag ik wat vragen aan Micheal kan je de script aub helemaal (als het doet) hier posten of ff met de PM alvast bedankt
Ik ben hier pas nieuw maar mag ik wat vragen aan Micheal kan je de script aub helemaal (als het doet) hier posten of ff met de PM alvast bedankt