Steen, papier, schaar

Door - Raoul -, 16 jaar geleden, 11.602x bekeken

Dit is een simpel steen papier schaar script.

Gesponsorde koppelingen

PHP script bestanden

  1. steen_papier_schaar.php

 

Er zijn 24 reacties op 'Steen papier schaar'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Bram Boos
Bram Boos
16 jaar geleden
 
0 +1 -0 -1
Misschien handig om de code tussen de [- code] tags te zetten zodat het in 1 keer te kopieeren is.

Verder zal ik straks even de werking bekijken...
Vincent Huisman
Vincent Huisman
16 jaar geleden
 
0 +1 -0 -1
waarom doe jij zoveel bij de random, dat kan toch met 3 al klaar zijn
Bram Boos
Bram Boos
16 jaar geleden
 
0 +1 -0 -1
Zoals beloofd zou ik er nog even naar kijken. Nadat ik alles gekopieerd had naar mijn webserver kwam ik verschillende kleine foutjes tegen. Misschien handig om die er eerst uit te halen en het script iets minder uitgebreid te maken op een onnodige manier.

Je had beter de uitslag in variabelen kunnen zetten zodat je ze later in bijvoorbeeld een database kunt zetten...

Misschien een leuk voorbeeldje:
http://pastebin.com/6YcHrqTh
Ik zal hier vanmiddag een demo van online zetten!
- Raoul -
- Raoul -
16 jaar geleden
 
0 +1 -0 -1
Dus je wil m minder uitgebreid?
Bram Boos
Bram Boos
16 jaar geleden
 
0 +1 -0 -1
Opzich is uitgebreid wel leuk maar zoals je in mijn voorbeeld hebt gezien heb ik de uitslag in variabelen gezet zodat je het makkelijk in een query kunt verwerken.

Zo zou je het met database kunnen doen:

game.php http://pastebin.com/wapZeqKJ
db.php http://pastebin.com/tvQ86EH9
sql http://pastebin.com/NicGKrWx
- Mark -
- Mark -
16 jaar geleden
 
0 +1 -0 -1
Hopelijk is mijn commentaar duidelijk genoeg om de functie te begrijpen. Om de ' Computer / Tweede speler ' een keuze te laten maken kun je gewoon
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $computer_keuze = rand(0, 2); ?>
gebruiken. Voor als je maar met 1 echte persoon speelt.

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
<?php    
    
    /*---- INFO! ---->

        Waar slaan de getallen op?
    
            (0) = Steen.
            (1) = Schaar.
            (2) = Papier.
        

        De functie spelen() is voor het bepalen van het resultaat tussen de door de twee spelers gemaakte keuzes.
    
        Het resultaat is voor de eerste speler ten opzichte van de tweede speler.
    
            (0) = Verloren.
            (1) = Gewonnen.
            (2) = Gelijk spel.
                
    */

        
        function spelen($speler_1, $speler_2, $gewonnen = array(1, 2, 0)){
        
            return ($speler_1 != $speler_2) ? ($gewonnen[$speler_1] == $speler_2) ? 1 : 0 : 2 ;
        }

        

    /*---- INFO! ---->
    
        Onderstaande zou 1 moeten weergeven want een ' Steen ' wint het van de ' Schaar '.
                
    */

    
        echo spelen(0, 1);
    
?>
Dalando De Zuil
Dalando De Zuil
16 jaar geleden
 
Paar puntjes:

1: Notice: Undefined index: jij in C:\data\home\www\tests\test9.php on line 104

Notice: Undefined index: computer in C:\data\home\www\tests\test9.php on line 115

2: Als het geen steen-papier-schaar.php heet, start het spel met een 404 error.

3:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
function verloren(){

$_SESSION['jij'] = $_SESSION['jij']+1;
$_SESSION['computer'] = $_SESSION['computer']-1;

echo '<span style='font-weight: bold; color: red; font-size: 16px;'>Jammer, de computer is gewonnen.</span>';
echo '<br />';

}


héhéhé ;D
- Raoul -
- Raoul -
16 jaar geleden
 
0 +1 -0 -1
Delando,

1: die los ik zo op
2: dat kan de gebruiker ook toch zelf aanpassen?
3: wat is daar mee ?
Vincent Huisman
Vincent Huisman
16 jaar geleden
 
0 +1 -0 -1
met die derde bedoelt hij, als jij wint is de tekst dat de computer wint. En die zin loopt ook niet helemaal lekker
- Raoul -
- Raoul -
16 jaar geleden
 
0 +1 -0 -1
Het script is aangepast!
Het is wat simpeler en hij returnt een value terug dankzij de functie van Mark Coenen!
- Mark -
- Mark -
16 jaar geleden
 
0 +1 -0 -1
- Het gebruik van $_SERVER['PHP_SELF'] is onveilig.
- Al eens gehoord van een array? Die if/elseif stukken zijn niet echt mooi. Kan veel korter als je met arrays werkt.
- Je oude versie had stukken als $_SESSION['jij'] = $_SESSION['jij']+1; dat is hetzelfde als $_SESSION['jij'] += 1;
Pieter van Linschoten
Pieter van Linschoten
16 jaar geleden
 
0 +1 -0 -1
Ik zou de verwerking als volgt aanpakken:

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
<?
if(isset($_POST['submit'])){
    $mogelijkheden = array('Steen','Papier','Schaar');
    $uitkomsten = array('<span style='color: red;'>Verloren</span>','<span style='color: green;'>Gewonnen</span>','<span style='color: black;'>Gelijkspel</span>');
    
    $jij = $_POST['keuze'];
    $computer = rand(0, 2);
    ?>

    <strong>De computer had <?php echo $mogelijkheden[$computer];?> en jij had <?php echo $mogelijkheden[$jij];?></strong>
    <br /><br />
    <?php echo $uitkomsten[spelen($jij, $computer)]; ?>
    <br /><br />
    <a href='<?php echo $_SERVER['REQUEST_URI'];?>'>Speel nog eens!</a>
}
?>
Chris -
Chris -
16 jaar geleden
 
0 +1 -0 -1
@Bram's eerste snippet (verder niet gekeken): Je had beter een switch kunnen maken ipv zoveel if/elsjes ;-) Was veel netter!
Vincent Huisman
Vincent Huisman
16 jaar geleden
 
0 +1 -0 -1
checken of er is gepost doen we ook niet meer met $_POST['submit'] maar met $_SERVER['REQUEST_METHOD']
Piet van der spek
piet van der spek
16 jaar geleden
 
0 +1 -0 -1
hij doet het bij mij niet dan zegt hij
Not Found

The requested URL /steen-papier-schaar.php was not found on this server.
Maarten PHP
Maarten PHP
16 jaar geleden
 
0 +1 -0 -1
dat licht aan je server
Vincent Huisman
Vincent Huisman
16 jaar geleden
 
0 +1 -0 -1
of aan hem
Stan Van langen
Stan Van langen
16 jaar geleden
 
0 +1 -0 -1
Het kan nog kleiner:

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
<?php
/*

*/

session_start();
$random = rand(1,3);
if ($_POST['actie'] == '1' && $random == '3') {
echo 'Je hebt gewonnen!';
$_SESSION['win'] = $_SESSION['win']+1;
}

elseif ($_POST['actie'] == '1' && $random == '2') {
echo 'Je hebt verloren!';
$_SESSION['verloren'] = $_SESSION['verloren']+1;
}

elseif ($_POST['actie'] == '2' && $random == '1') {
echo 'Je hebt gewonnen!';
$_SESSION['win'] = $_SESSION['win']+1;
}

elseif ($_POST['actie'] == '2' && $random == '3') {
echo 'Je hebt verloren!';
$_SESSION['verloren'] = $_SESSION['verloren']+1;
}

elseif ($_POST['actie'] == '3' && $random == '2') {
echo 'Je hebt gewonnen!';
$_SESSION['win'] = $_SESSION['win']+1;
}

elseif ($_POST['actie'] == '3' && $random == '1') {
echo 'Je hebt verloren!';
$_SESSION['verloren'] = $_SESSION['verloren']+1;
}

elseif ($_POST['actie'] ==  $random) {
echo 'Gelijkspel';
$_SESSION['gelijk'] = $_SESSION['gelijk']+1;
}

?>

<p>&nbsp;</p>
<form name='form1' method='post' action=''>
<p>
<input name='actie' type='radio' value='1'>
Steen
</p>
<p>
<input name='actie' type='radio' value='2'>
Papier </p>
<p>
<input name='actie' type='radio' value='3'>
Schaar
</p>
<p>
<input type='submit' name='Submit' value='Gok'>
</p>
</form>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<br><br>Statestieken<br>Gewonnen : '.$_SESSION['win'].'<br>Verloren : '.$_SESSION['verloren'].'<br>Gelijk : '.$_SESSION['gelijk'];
?>




MvG,
Stan


16 jaar geleden
 
0 +1 -0 -1
Kan nog kleiner (en netter IMHO):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
$mogelijk = array(1=>3, 3=>2, 2=>1);
$melding = array('gelijk' => 'gelijkspel', 'win' => 'gewonnen', 'verloren' => 'verloren');
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $waarde = $_POST['actie'] == $random ? 'gelijk' : $mogelijk[$_POST['actie']] == $rand ? 'win' : 'verloren';
    $_SESSION[$waarde]++;
    $blaat = 'Je hebt ' . $melding[$waarde] . '!';
}
?>

<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1//EN' 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
<head>
<meta http-equiv='Content-Type' content='text/html;charset=UTF-8' />
<title></title>
</head>
<body>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo isset($blaat) ? '<p>'.$blaat.'</p>' : '';?>

<form action='#' method='post'>
<p><label for='waarde1'><input type='radio' name='actie' id='waarde1' value='1' /></label></p>
<p><label for='waarde2'><input type='radio' name='actie' id='waarde2' value='2' /></label></p>
<p><label for='waarde3'><input type='radio' name='actie' id='waarde3' value='3' /></label></p>
<p><input type='submit' value='Gok' /></p>
</form>
<p>Statistieken:</p>
<dl>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    foreach($_SESSION as $key => $value)
    {

        echo '<dt>' . ucfirst($melding[$key]) . '</dt><dd>'. empty($value) ? 0 : $value . '</dd></dt>';
    }

    ?>

</dl>
</body>
</html>


Volgens mij moet de logica nog korter kunnen.
- Raoul -
- Raoul -
16 jaar geleden
 
0 +1 -0 -1
Hallo, die met die sessions is de oude versie van het script.


16 jaar geleden
 
0 +1 -0 -1
Owja, dat moet ik er nog effe bij zeggen, niet getest en gebaseerd op de post voor mij.
Stan Van langen
Stan Van langen
16 jaar geleden
 
0 +1 -0 -1
@Karl Karl: Het kan inderdaar kleiner, Maar maakt dat wat uit 8-)

MvG,
Stan


16 jaar geleden
 
0 +1 -1 -1
Stan Van langen 2 minuten geleden:
@Karl Karl: Het kan inderdaar kleiner, Maar maakt dat wat uit 8-)

Blijkbaar wel:
Stan Van langen 2 uur geleden:
Het kan nog kleiner:
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Stan Van langen
Stan Van langen
16 jaar geleden
 
1 +1 -0 -1
LOL

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. steen_papier_schaar.php

Labels

Navigatie

 
 

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.