[Script Review] Galgje met PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

G P

G P

26/10/2014 00:05:31
Quote Anchor link
Het spel galgje met PHP
woorden kan je toevoegen/bewerken/verwijderen in het bestand woorden.txt
Op regel 6 in index.php kan je zelf kiezen waardoor de letters moeten vervangen worden, in dit geval zal het dus een dash (streepje) zijn.
De opmaak en de afbeelding kan je zelf kiezen.
woorden.txt, galgje.css, index.php en de afbeelding behoren allemaal in 1 map (bijvoorbeeld galgje)

index.php
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?php
// Start een sessie
session_start();

// Geef een vervangsteken voor het gezochte woord
$replace = '-';

// Controleer op vezenden van een letter
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['letter'])){
    $len = strlen($_SESSION['woord']);
    $check = '';
    $guess = false;
    // Controleer letter in woord
    for ($i=0; $i<$len; $i++){
        if (substr($_SESSION['woord'], $i, 1) == $_POST['letter']){
            $guess = true;
            $check .= $_POST['letter'];
        }
else {
            $check .= substr($_SESSION['geraden'], $i, 1);
        }
    }

    // Verberg gekozen letter
    $_SESSION['hidden'] .= $_POST['letter'];
    $_SESSION['geraden'] = $check;
    // Letter is niet geraden
    if ($guess === false){
        $_SESSION['step']++;
    }

    // Woord is geraden of beurten zijn voorbij toon opnieuw spelen knop
    if ($_SESSION['geraden'] == $_SESSION['woord'] || $_SESSION['step'] >= 5){
        if ($_SESSION['step'] > 5){ $_SESSION['step'] = 5; }
        $playAgain = '            <p>';
        if ($_SESSION['geraden'] == $_SESSION['woord']){
            if ($_SESSION['step'] == 1){ $fouten = 'fout'; } else { $fouten = 'fouten'; }
            $congratulations = array('Goed zo', 'Goed geraden', 'Proficiat', 'Super');
            shuffle($congratulations);
            $playAgain .= $congratulations[0].' !! Je hebt '.$_SESSION['step'].' '.$fouten.' gemaakt.';
        }
elseif ($_SESSION['step'] >= 5){
            $playAgain .= 'Je hebt het niet geraden !!';
        }

        $playAgain .= '</p>'.PHP_EOL;
        $_SESSION['hidden'] = 'abcdefghijklmnopqrstuvwxyz';
        $_SESSION['hidden'] = strtoupper($_SESSION['hidden']);
        $_SESSION['geraden'] = $_SESSION['woord'];
        $playAgain .= '            <p><input type="submit" name="playagain" id="playagain" value="Speel opnieuw"></p>'.PHP_EOL;
    }
}
elseif ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['playagain'])){
    session_destroy();
    header('Location: '.$_SERVER['PHP_SELF']);
    exit;
}


// Definieren van variablen
$_SESSION['step']        = isset($_SESSION['step'])        ? $_SESSION['step']        : 0;
$_SESSION['hint']        = isset($_SESSION['hint'])        ? $_SESSION['hint']        : NULL;
$_SESSION['woord']        = isset($_SESSION['woord'])        ? $_SESSION['woord']    : NULL;
$_SESSION['geraden']    = isset($_SESSION['geraden'])    ? $_SESSION['geraden']    : NULL;
$_POST['letter']        = isset($_POST['letter'])         ? $_POST['letter']        : '&nbsp;';
$_SESSION['hidden']        = isset($_SESSION['hidden'])    ? $_SESSION['hidden']    : NULL;
$playAgain                = isset($playAgain)                ? $playAgain            : NULL;

// Ophalen van woorden
$content = file('woorden.txt');
$woorden = array();
$keys = array();
foreach($content as $line){
    $exp = explode('|', $line);
    if (count($exp) == 2){ // Bestaat uit 2 delen, hint een het te raden woord
        $exp = array_map('trim', $exp);
        if (empty($keys)){
            $keys = $exp;
        }
else {
            $exp = array_map('strtoupper', $exp);
            $woorden[] = array_combine($keys, $exp);
        }
    }
}


// Alfabet
$alfabet = 'abcdefghijklmnopqrstuvwxyz';
$alfabet = strtoupper($alfabet);

// Letters
$letters = str_split($alfabet);

// Random woord en gezocht woord vervangen door dashes
if (empty($_SESSION['woord']) && empty($_SESSION['geraden']) && empty($_SESSION['hint'])){
    shuffle($woorden);
    $_SESSION['hint']        = $woorden[0]['hint'];
    $_SESSION['woord']        = $woorden[0]['zoeken'];
    $_SESSION['geraden']    = preg_replace('/[A-Z]/', $replace, $_SESSION['woord']);
}


// Maak de knoppen met de letters
$letterBalk = '';
foreach ($letters as $letter){
    if (strpos($_SESSION['hidden'], $letter) !== false){ $disabled = ' disabled'; } else { $disabled = ''; }
    $letterBalk .= '                <input type="submit" id="letter'.$letter.'" name="letter" value="'.$letter.'"'.$disabled.'>'.PHP_EOL;
}


print '<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Galgje</title>
<link type="text/css" rel="stylesheet" href="galgje.css">
</head>

<body>
<header>
    <hgroup>
        <h1>Hangman</h1>
    </hgroup>
</header>
<section>
    <article>
        <header>
            <h3>'
.$_SESSION['geraden'].'</h3>
        </header>
        <p class="image stap'
.$_SESSION['step'].'"></p>
        <p class="letter">'
.$_POST['letter'].'</p>
        <p class="hint">'
.$_SESSION['hint'].'</p>
        <form action="" enctype="multipart/form-data" method="post">
            <p>
'
.$letterBalk.'            </p>
'
.$playAgain.'        </form>
    </article>
</section>
</body>
</html>'
;

?>
galgje.css
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/* CSS Document */

html, body
{
    font-family: Verdana, Geneva, sans-serif;
    font-size: 1em;
    margin: 0 0 0 0;
    padding: 0 0 0 0;
}

header,
hgroup,
section,
article
{
    display: block;
    margin: 0 0 0 0;
    padding: 0 0 0 0;
}

/* Titel */
header hgroup h1
{
    color: #FFF;
    background: none #333;
    font-size: 3em;
    text-align: center;
    display: block;
    margin: 0 0 0 0;
    padding: 0.3em 0 0.3em 0;
}

/* Raad het woord */
section article header h3
{
    color: #000;
    background: none #FFF;
    font-size: 3em;
    font-weight: 100;
    text-align: center;
    display: block;
    margin: 0 0 0 0;
    padding: 0 0 0 0;
}

/* image */
section p.image
{
    color: transparent;
    background-image: url(leroy_the_unlucky_hangman_images_by_shinysparks-d4nxeim.png);
    background-repeat: no-repeat;
    display: block;
    width: 150px;
    height: 201px;
    margin: 0 auto 0 auto;
    padding: 0 0 0 0;
}

section p.stap0
{
    background-position: 150px -40px;
}

section p.stap1
{
    background-position: -37px -40px;
}

section p.stap2
{
    background-position: -206px -40px;
}

section p.stap3
{
    background-position: -375px -40px;
}

section p.stap4
{
    background-position: -544px -40px;
}

section p.stap5
{
    background-position: -713px -40px;
}

/* Gekozen letter */
section p.letter
{
    border: solid 1px #333;
    border-radius: 0.2em;
    font-size: 6em;
    text-align: center;
    text-shadow: 0 0.1em 0.2em #333;
    margin: 0.1em auto 0.1em auto;
    padding: 0.1em 0.2em 0.1em 0.2em;
    display: block;
    width: 1em;
}

/* Hint */
section p.hint
{
    color: #000;
    background: none #FFF;
    border: dashed 1px #333;
    border-radius: 0.5em;
    box-shadow: 0.2em 0.2em 0.5em #999;
    font-size: 1em;
    text-align: center;
    margin: 1em auto 1em auto;
    padding: 0.5em 1em 0.5em 1em;
    width: 80%;
}

/* Letterbox */
section form
{
    display: block;
    margin: 0 0 0 0;
    padding: 0 0 0 0;
}

section form p
{
    text-align: center;
    display: block;
    margin: 0 0 0 0;
    padding: 0 0 0 0;
}

section form p input
{
    color: #060;
    background: none #CFC;
    text-transform: uppercase;
    border: solid 1px #333;
    border-radius: 0.3em;
    box-shadow: 0.2em 0.2em 0.5em #999;
    display: inline-block;
    margin: 0.5em 0.2em 0.5em 0.2em;
    padding: 0.5em 1em 0.5em 1em;
}

section form p input:hover,
section form p input:focus
{
    border-color: #0F0;
    box-shadow: 0.2em 0.2em 0.5em #0F0;
}

section form p input[disabled]
{
    color: #900;
    background: none #FCC;
    box-shadow: none;
}
woorden.txt
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
hint|zoeken
beste nederlandse hulp voor php|phphulp
fictief persoon|suske en wiske
spreekwoord|wie een put graaft voor een ander valt er zelf in
bekend persoon|lady gaga
spreekwoord|Advocaat van de duivel spelen
artiest|justin bieber
spreekwoord|Baat het niet, dan schaadt het niet
bekend persoon|wesley snipes
film|Het Bombardement
De afbeelding:Afbeelding
Gewijzigd op 26/10/2014 00:06:54 door G P
 
PHP hulp

PHP hulp

28/03/2024 17:23:02
 
Lorre Mertens

Lorre Mertens

07/11/2014 03:25:18
Quote Anchor link
Ik heb het even getest, leuk script en werkt prima.
 



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.