Plaatjes in array om random 3x te echo'en.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Richard Hansma

Richard Hansma

28/01/2013 19:16:17
Quote Anchor link
Beste PHP-ers,

Ik ben bezig met een simpele slotmachine. Ik heb 6 plaatjes die ik in een array heb gestopt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$images
= array(
        0 => 'a.gif',
        1 => 'b.gif',
        2 => 'c.gif',
        3 => 'd.gif',
        4 => 'e.gif',
        5 => 'f.gif'
        );
?>

Ik echo dit doormiddel van een for-loop.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
for ($i = 1; $i <= 3; $i++) {
     $image = $images[rand(0,(count($images)-1))];
     $output = '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image.'" alt="" border="0"></td>';
     echo $output;
}

?>

Dit werkt allemaal naar behoren. Maar nu zit ik met het volgende. Stel hij geeft 3 keer 'a.gif' of 'b.gif', dan heb je dus prijs. Kan ik dat met een simpele if/else constructie controleren of benader ik het helemaal verkeerd?
Gewijzigd op 28/01/2013 19:17:15 door Richard Hansma
 
PHP hulp

PHP hulp

24/11/2024 01:25:07
 
- SanThe -

- SanThe -

28/01/2013 19:26:57
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$image
= array();
for ($i = 1; $i <= 3; $i++) {
     $image[$i] = $images[rand(0,(count($images)-1))];
     $output = '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image[$i].'" alt="" border="0"></td>';
     echo $output;
}

if(max(array_count_values($image)) == 3)
{

     echo 'Gewonnen';
}

?>
 
Richard Hansma

Richard Hansma

28/01/2013 19:50:47
Quote Anchor link
Thanks!

Ik heb alleen nog een extra wens. Bij sommige plaatjes heb je ook al prijs als 2 van de 3 hetzelfde zijn. Hoe kan ik bijvoorbeeld controleren dat wanneer 'f.gif' 2 keer geëchood wordt je wel prijs hebt, maar bij 'a.gif' dat niet het geval is?
 
- SanThe -

- SanThe -

28/01/2013 19:57:46
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$image
= array();
for ($i = 1; $i <= 3; $i++) {
     $image[$i] = $images[rand(0,(count($images)-1))];
     $output = '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image[$i].'" alt="" border="0"></td>';
     echo $output;
}

$hulp = array_count_values($image);
if(max($hulp) == 3)
{

     echo 'Gewonnen';
}

if(isset($hulp['f.gif']) and $hulp['f.gif'] == 2)
{

     echo 'Gewonnen met een F';
}

?>
 
Richard Hansma

Richard Hansma

28/01/2013 21:39:18
Quote Anchor link
Super, hiermee kom ik wel verder!


Edit: Toch nog een probleem...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if(isset($hulp['a.gif']) == 1)
{

     echo 'Gewonnen met een A1';
}

elseif(isset($hulp['a.gif']) && $hulp['a.gif'] == 2)
{

     echo 'Gewonnen met een A2';
?>


Als ik dit doe krijg ik ondanks dat er 2 'a.gif' zijn toch te zien: 'Gewonnen met een A1'. Moet ik iets extra's in mijn if-constructie zetten of kan het beter anders?

Edit 2: Inmiddels toch op kunnen lossen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
if(isset($hulp['a.gif']) && $hulp['a.gif'] == 1)
{

     echo 'Gewonnen met een A1';
}

elseif(isset($hulp['a.gif']) && $hulp['a.gif'] == 2)
{

     echo 'Gewonnen met een A2';
}

?>
Gewijzigd op 28/01/2013 23:55:43 door Richard Hansma
 
Richard Hansma

Richard Hansma

30/01/2013 00:05:43
Quote Anchor link
Oké, ik vind het toch iets te random. Ik heb besloten om ervoor te zorgen dat sommige plaatjes minder vaak geëchood worden. Zodat je minder vaak hoge bedragen wint. Alleen heb ik het nogal slordig opgelost.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php
$random
= rand(1,100);
if ($random < 5) {
$image1 = 'a.gif';        
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image1.'" alt="" border="0"></td>';
}

elseif ($random < 12 && $random >= 5) {
$image1 = 'b.gif';        
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image1.'" alt="" border="0"></td>';
}

elseif ($random < 28 && $random >= 12) {
$image1 = 'c.gif';    
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image1.'" alt="" border="0"></td>';
}

elseif ($random < 45 && $random >= 28) {
$image1 = 'd.gif';    
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image1.'" alt="" border="0"></td>';
}

elseif ($random < 67 && $random >= 45) {
$image1 = 'e.gif';    
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image1.'" alt="" border="0"></td>';
}

else {
$image1 = 'f.gif';    
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image1.'" alt="" border="0"></td>';
}


$random = rand(1,100);
if ($random < 5) {
$image2 = 'a.gif';        
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image2.'" alt="" border="0"></td>';
}

elseif ($random < 12 && $random >= 5) {
$image2 = 'b.gif';        
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image2.'" alt="" border="0"></td>';
}

elseif ($random < 28 && $random >= 12) {
$image2 = 'c.gif';    
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image2.'" alt="" border="0"></td>';
}

elseif ($random < 45 && $random >= 28) {
$image2 = 'd.gif';    
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image2.'" alt="" border="0"></td>';
}

elseif ($random < 67 && $random >= 45) {
$image2 = 'e.gif';    
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image2.'" alt="" border="0"></td>';
}

else {
$image2 = 'f.gif';    
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image2.'" alt="" border="0"></td>';
}


$random = rand(1,100);
if ($random < 5) {
$image3 = 'a.gif';        
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image3.'" alt="" border="0"></td>';
}

elseif ($random < 12 && $random >= 5) {
$image3 = 'b.gif';        
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image3.'" alt="" border="0"></td>';
}

elseif ($random < 28 && $random >= 12) {
$image3 = 'c.gif';    
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image3.'" alt="" border="0"></td>';
}

elseif ($random < 45 && $random >= 28) {
$image3 = 'd.gif';    
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image3.'" alt="" border="0"></td>';
}

elseif ($random < 67 && $random >= 45) {
$image3 = 'e.gif';    
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image3.'" alt="" border="0"></td>';
}

else {
$image3 = 'f.gif';    
echo '<td width="20%" height="60" bgcolor="#FFFFFF"><img src="../image/objecten/slotmachine/'.$image3.'" alt="" border="0"></td>';
}

if($image1 == 'a.gif' && $image2 == 'a.gif' && $image3 == 'a.gif') {
    echo 'gewonnen';
}

elseif($image1 == 'b.gif' && $image2 == 'b.gif' && $image3 == 'b.gif') {
    echo 'gewonnen';
}

elseif($image1 == 'c.gif' && $image2 == 'c.gif' && $image3 == 'c.gif') {
    echo 'gewonnen';
}

elseif($image1 == 'd.gif' && $image2 == 'd.gif' && $image3 == 'd.gif') {
    echo 'gewonnen';
}

elseif($image1 == 'e.gif' && $image2 == 'e.gif' && $image3 == 'e.gif') {
    echo 'gewonnen';
}

elseif($image1 == 'f.gif' && $image2 == 'f.gif' && $image3 == 'f.gif') {
    echo 'gewonnen';
}

else {
    echo 'verloren';
}

?>


Dit ziet er natuurlijk niet uit... Iemand die me kan helpen om dit wat netter te maken?
Gewijzigd op 30/01/2013 00:06:40 door Richard Hansma
 
Ward van der Put
Moderator

Ward van der Put

30/01/2013 08:20:36
Quote Anchor link
De laatste controlestructuur bevat een duidelijke beslissingsregel: "gewonnen als de drie afbeeldingen gelijk zijn". Dat kun je ook zo schrijven:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
/**
 * Als de eerste afbeelding gelijk is aan de tweede en de tweede
 * gelijk is aan de derde, dan zijn ze alle drie gelijk.
 */

if ($image1 == $image2 && $image2 == $image3) {
    echo 'gewonnen';
}
else {
    echo 'verloren';
}

?>
Gewijzigd op 30/01/2013 08:57:19 door Ward van der Put
 
- Mark -

- Mark -

30/01/2013 12:57:24
Quote Anchor link
Niet getest en uit het hoofd.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
81
82
83
84
85
<?php

    /* --------------------------------------------------------------------------------------------------------------------------    
     * Config.
     * --------------------------------------------------------------------------------------------------------------------------         
     */    

        # De namen van de afbeeldingen.

        $images = array('a', 'b', 'c', 'd', 'e', 'f');


        # De hoeveelheid kans iedere afbeelding heeft om gekozen te worden.
        $chance = array(4, 7, 16, 17, 22, 34);


    /* --------------------------------------------------------------------------------------------------------------------------    
     * Defaults.
     * --------------------------------------------------------------------------------------------------------------------------         
     */

        # De array waarin we het resultaat gaan opslaan.

        $results = array();


    /* --------------------------------------------------------------------------------------------------------------------------    
     * $images array herschrijven.
     * --------------------------------------------------------------------------------------------------------------------------
        
        Afbeeldingen toevoegen aan de hand van de hoeveelheid kans de afbeelding heeft om gekozen te worden.

     */


         foreach($chance as $id => $amount){

             for($i = 0; $i < $amount; $i++){
             
                 $images[] = $images[$id];
             }
         }



    /* --------------------------------------------------------------------------------------------------------------------------    
     * Het resultaat genereren.
     * --------------------------------------------------------------------------------------------------------------------------
     */


         for($reel = 0; $reel < 3; $reel++){

             $results[$reel] = $images[array_rand($images)];
         }



    /* --------------------------------------------------------------------------------------------------------------------------    
     * De rollen weergeven.
     * --------------------------------------------------------------------------------------------------------------------------

        LET OP! Ik heb je inline styling eruit gegooid, dat hoort in je CSS bestand(en) te staan.

     */


        foreach($results as $image){

            echo '<td class="reel"><img src="../image/objecten/slotmachine/'.$image.'.gif"></td>';
        }



    /* --------------------------------------------------------------------------------------------------------------------------    
     * Controleren of er iets is gewonnen.
     * --------------------------------------------------------------------------------------------------------------------------
     */


        if($result[0] == $result[1] and $result[1] == $result[2]){

            // And we have a winner! Alle 3 de resultaten hetzelfde zijn.
        }
        elseif($results[0] == 'f' and $results[1] == 'f'){

            // And we have a winner! De eerste twee f's zijn hetzelfde.
        }
        else{

            // Better luck next time, mate! Helaas pindakaas, we hebben verloren.
        }
    
?>
Gewijzigd op 30/01/2013 13:17:50 door - Mark -
 
Dennis WhoCares

Dennis WhoCares

30/01/2013 13:02:44
Quote Anchor link
moet het niet zijn
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
if($result[0] == $result[1] and $result[1] == $result[2]) {
    //Winner FULL ROW
} elseif($result[0]==$result[1] || $result[1]==$result[2]) {
    //Winner Double
} else {
    //Loser?
}
 
- SanThe -

- SanThe -

30/01/2013 13:09:37
Quote Anchor link
Dennis WhoCares op 30/01/2013 13:02:44:
moet het niet zijn
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
if($result[0] == $result[1] and $result[1] == $result[2]) {
    //Winner FULL ROW
} elseif($result[0]==$result[1] || $result[1]==$result[2]) {
    //Winner Double
} else {
    //Loser?
}


Je vergeet er één.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
if($result[0] == $result[1] and $result[1] == $result[2]) {
    //Winner FULL ROW
} elseif($result[0]==$result[1] || $result[1]==$result[2] || $result[0]==$result[2]) {
    //Winner Double
} else {
    //Loser?
}
 
- Mark -

- Mark -

30/01/2013 13:20:31
Quote Anchor link
Het ging meer om het idee maar ik heb het aangepast.

Ik dacht met te herinneren dat je alleen met twee won als het om de eerste twee ging?
 
Richard Hansma

Richard Hansma

30/01/2013 16:27:47
Quote Anchor link
Super, hier kan ik wel wat mee. Iedereen hartstikke bedankt!

- Mark - op 30/01/2013 13:20:31:
Ik dacht met te herinneren dat je alleen met twee won als het om de eerste twee ging?


Nee, de volgorde maakt niets uit.
 
Dennis WhoCares

Dennis WhoCares

30/01/2013 16:29:53
Quote Anchor link
- SanThe - op 30/01/2013 13:09:37:
Je vergeet er één.


Ik neem aan dat de plaatjes wel naast elkaar moeten staan ? :P
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.