Bu yazıda sizlere PHP gibi sunucu taraflı çalışan bir dil ile adam asmaca oyununu nasıl yapacağınızı göstereceğim. Adam asmaca gibi oyunların aslında istemci taraflı yapıldığını çeşitli örneklerle gömüşsünüzdür. Bu aşamada işi biraz daha zorlaştırıp PHP dilinin tüm nimetlerinden faydalanarak veritabanı ve PHP kullanarak adam asmaca oyunu yazdık.
Adam asmaca oyunu kullanıcıya belirli haklar tanıyarak ekrandaki gizli kelimeyi bulmayı hedefleyen bir uygulamadır. Oyunu eğlenceli kılan hakların ekrana görünmesi yerine cellat ağacı görüntüsünün olmasıdır.
Bu PHP uygulamasında aşağıdaki PHP ifadelerini kullanarak uygulamayı yazdık.
- Mysql veritabanı,
- PHP Super Global Değişkenler
- PHP Oturum
- PHP Array and String Fonksonyları:
- mb_strlen,
- mb_substr,
- in_array,
- array_push
- global anahtar kelimesi
- Bootstrap
Uygulamanın yapılış videosu ve kodları aşağıdadır.
Uygulamada kullanılan dosyalar ve kodlar
MySQL Tablosu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | CREATE TABLE `kelimeler` ( `id` int(11) NOT NULL, `kelime` varchar(50) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO `kelimeler` (`id`, `kelime`) VALUES (1, 'kalem'), (2, 'araba'), (3, 'çekirdek'), (4, 'badem'), (5, 'kaşık'), (6, 'üzüm'), (7, 'fıstık'), (8, 'paratoner'), (9, 'karayel'), (10, 'okyanus'); |
adam.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 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 | <?php $adam[0] = ' ------- |/ | | | | | | /|\ -------------'; $adam[1] = ' ------- |/ | | o | | | | /|\ -------------'; $adam[2] = ' ------- |/ | | o | | | | | | /|\ -------------'; $adam[3] = ' ------- |/ | | o | | | | | / | /|\ -------------'; $adam[4] = ' ------- |/ | | o | | | | | / \ | /|\ -------------'; $adam[5] = ' ------- |/ | | o | --| | | | / \ | /|\ -------------'; $adam[6] = ' ------- |/ | | o | --|-- | | | / \ | /|\ ---OYUN BİTTi--'; ?> |
baglan.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 36 37 38 | <?php /* Sürücü isteğiyle bir ODBC veritabanına bağlanalım */ $dsn = 'mysql:dbname=tasarimkodlama;host=127.0.0.1'; $user = 'root'; $password = ''; try { $baglan = new PDO($dsn, $user, $password); } catch (PDOException $e) { echo 'Bağlantı kurulamadı: ' . $e->getMessage(); } /** CREATE TABLE `kelimeler` ( `id` int(11) NOT NULL, `kelime` varchar(50) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO `kelimeler` (`id`, `kelime`) VALUES (1, 'kalem'), (2, 'araba'), (3, 'çekirdek'), (4, 'badem'), (5, 'kaşık'), (6, 'üzüm'), (7, 'fıstık'), (8, 'paratoner'), (9, 'karayel'), (10, 'okyanus'); */ ?> |
uygulama.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 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 | <?php //ilk ayarlar include "baglan.php"; include "adam.php"; session_start(); $harfler=[ 'a','b','c','ç','d','e','f','g','ğ','h','ı', 'i','j','k','l','m','n','o','ö','p','r','s', 'ş','t','u','ü','v','y','z',' ']; $sembol="*"; $_SESSION["kelime"]=$_SESSION["kelime"]??NULL; $_SESSION["kelime_ekran"]=$_SESSION["kelime_ekran"]??NULL; $_SESSION["hak"]=$_SESSION["hak"]??0; if(isset($_GET["uret"])){ baslat(); } if(isset($_GET["harf"])){ hak_arttir($_GET["harf"],$_SESSION["kelime"]); doldur($_GET["harf"]); } //fonksiyonlar function baslat(){ $kelime = kelime_sec(); $_SESSION["kelime"] = harf_dizi($kelime); $_SESSION["kelime_ekran"] = bos_dizi($kelime); $_SESSION["hak"]=0; } function kelime_sec(){ global $baglan; $sonuc = $baglan->query("SELECT * FROM `kelimeler` ORDER BY RAND() LIMIT 1"); return $sonuc->fetch()["kelime"]; } function harf_dizi($kelime){ $dizi=[]; $uzunluk = mb_strlen($kelime); for ($i=0; $i <$uzunluk ; $i++) { $harf = mb_substr($kelime,$i,1); $dizi[]=$harf; } return $dizi; } function bos_dizi($kelime){ global $sembol; $dizi=[]; $uzunluk = mb_strlen($kelime); for ($i=0; $i <$uzunluk ; $i++) { $harf = mb_substr($kelime,$i,1); $dizi[]=$sembol; } return $dizi; } function kelime_yaz($dizi){ $metin=""; foreach ($dizi as $key => $deger) { $metin.=$deger; } return $metin; } function buton_olustur(){ global $harfler; foreach ($harfler as $key => $value) { echo '<a href="?harf='.$value.'" class="m-1 btn btn-warning">'.$value.'</a>'; } } function hak_arttir($harf,$kelime){ $durum = in_array($harf,$kelime); if($durum ===false) $_SESSION["hak"]++; } function doldur($harf){ foreach ($_SESSION["kelime"] as $key => $value) { if($value == $harf){ $_SESSION["kelime_ekran"][$key]=$value; } } } function adam_ciz(){ global $adam; echo "<pre>"; echo $adam[$_SESSION["hak"]]; echo "<pre>"; } function harf_kaldi_mi(){ global $sembol; $durum = in_array($sembol,$_SESSION["kelime_ekran"]); return $durum; } ///PHP kodları ?> <!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous"> <title>TasarımKodlama</title> </head> <body> <div class="container"> <div class="row"> <div class="col"> <a class="btn btn-secondary my-2" href="?uret=1">Kelime Üret</a> </div> </div> <div class="row"> <div class="col"> <hr> <?=$_SESSION["hak"]?> <hr> <div class="alert alert-warning" > <?= kelime_yaz($_SESSION["kelime_ekran"])?> </div> <hr> <?php adam_ciz() ?> <hr> </div> </div> <div class="row"> <div class="col"> <?php if($_SESSION["hak"] <6 && harf_kaldi_mi()){ buton_olustur(); }else if($_SESSION["hak"] <6) { echo '<div class="alert alert-success" role="alert">Tebrikler</div>'; } else{ echo '<div class="alert alert-danger" role="alert">Aranan Kelime: '. kelime_yaz($_SESSION["kelime"]) .'</div>'; } ?> </div> </div> </div> </body> </html> |
Yorum Yap