Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Generátor básní v PHP

Jsou to mé začátky v OOP, není to má výmluva, spíš nedostatek zkušeností. Tak když tam najdete nějaké chyby, napiště prosím do komentářů správné řešení. Díky

<?php
session_start();
header('Content-type: text/html; charset=utf-8');

/*
Velmi jednoduchý generátor básniček. Rozšíření je možné podle vašich potřeb.
Je to můj první větší script v OOP, tak to prosím berte velmi s rezervou.
*/

class Basen
{

public $obsah = ""; // záznam obsahu básně

private $pocet_slok = 1; // počet slok básně

private $vety = array("prid rod pod slov","pod prid rod slov","pod rod slov","rod priv pod slov");  // styl vět

private $styl = array("112211","221133","121233","332211","1122","1313","2332","11221122");  // styl básně

private $slova = array(
    "rod1" => array("muž","syn","dědeček","starosta","alkoholik","policista","saniták","svářeč","programátor","řezník","hrubián","hlídač krav","veterán"),
    "rod2" => array("sestra","matka","dcera","jeptiška","dojička","zpěvačka","básnířka","malířka","kurva","řidička","lazebnice","krakatice","večernice","polednice"),
    "rod3" => array("dítě","prase","struhadlo","švihadlo","strašidlo","mýdlo","jídlo","víno","leštidlo","lepidlo","sedadlo","lehátko","ořezávátko","na koberce klepadlo"),
    "pod1" => array("kredenc","počítač","stůl","parní válec","soustruh","olejový hever","boiler","traktor","klakson","katamarán","hoboj","router"),
    "pod2" => array("postel","kabelku","žehličku","ředkvičku","lampičku","tlamičku","lahvičku","stoličku","překližku","vydličku","hoblovku","vrtačku"),
    "pod3" => array("pivo","auto","letadlo","pyžamo","zrdcadlo","lepidlo","hovado","lákadlo","hekadlo","tričko","počítadlo","švihadlo"),
    "prid1" => array("velký","barevný","pevný","silný","jasný","přesný","krásný","starý","unavený","naštvaný","kouzelný","prolhaný","proradný","záhadný"),
    "prid2" => array("tlustá","šílená","ožralá","krásná","štíhlá","vláčná","drahá","levná","mladá","pihovatá","proradná","osamělou","odohodlanou","vyplašená"),
    "prid3" => array("skvělé","drahé","malé","silné","výkonné","bouřlivé","strnulé","rozbité","přiskříplé","zapomenuté","vážné","odhodlané","unavené","uplacené"),
    "slov1" => array("rozladil","hladil","radil","rozbil","zastřelil","zabalil","zapálil","polil","rozdrobil","opravil","opálil","chytil","odpálil","opustil","obrátil"),
    "slov2" => array("rozbila","štípala","vábila","hrozila","žárlila","shodila","zkrátila","mlátila","vypnula","předělala","přeřezala","osolila","omlátila","nabarvila"),
    "slov3" => array("letělo","hledělo","stávalo","načalo","bolelo","křupalo","chápalo","tápalo","skákalo","přestalo","řvalo","žvatlalo","zuřilo","schovalo","klepalo"),
    "priv1" => array("své","vlastní","kamarádův","otcův","drahý"),
    "priv2" => array("svou","cizí","novou","papírovou","zlevněnou"),
    "priv3" => array("své","jiné","zahraniční","levné","rozbité"),
); // pole slov

// upraví větu, první písmeno bude velké
private function uprav_vetu($s, $e ='utf-8')
{
    if (function_exists('mb_strtoupper') && function_exists('mb_substr') && !empty($s)) {
        $s = mb_strtolower($s, $e);
        $u = mb_strtoupper($s, $e);
        preg_match('/(.)/us', $u, $m);
        $s = $m[1] . mb_substr($s, 1, mb_strlen($s, $e), $e);
    }
    else
    {
        $s = ucfirst($s);
    }
    return $s;
}

// vytvoří větu, vybere styl a doplní slova
private function vrat_vetu($x,$veta)
{
    $veta = preg_replace("/(prid)/i",($this->slova["prid$x"][array_rand($this->slova["prid$x"])]),$veta);
    $veta = preg_replace("/(rod)/i",($this->slova["rod$x"][array_rand($this->slova["rod$x"])]),$veta);
    $veta = preg_replace("/(pod)/i",($this->slova["pod$x"][array_rand($this->slova["pod$x"])]),$veta);
    $veta = preg_replace("/(slov)/i",($this->slova["slov$x"][array_rand($this->slova["slov$x"])]),$veta);
    $veta = preg_replace("/(priv)/i",($this->slova["priv$x"][array_rand($this->slova["priv$x"])]),$veta);
    return $this->uprav_vetu($veta).".";
}

// vytvoří tituloek básně
private function titulek()
{
    return "<h1>".($this->vrat_vetu(rand(1,3),"prid rod"))."</h1>\n\n";
}

// vytvoří obsah básně, vegeneruje věty a pošle je ke zpracování do vrat_vetu
private function vytvor_obsah()
{
    $obsah = "";
    for($b=0;$b<$this->pocet_slok;$b++)
    {
        $obsah .= "<p>";
        $x = rand(0,7);
        for($a=0;$a<(strlen($this->styl[$x]));$a++)
        {
            $veta = $this->vety[array_rand($this->vety)];
            $obsah .= $this->vrat_vetu($this->styl[$x][$a],$veta)."<br />\n";
        }
        $obsah .= "</p>\n";
    }
    return $obsah;
}

public function __construct($n)
{
    if($n < 1) $n = rand(2,5);
    $this->pocet_slok = $n;
}

public function __toString()
{
    $this->obsah .= $this->titulek();
    $this->obsah .= $this->vytvor_obsah();
    return $this->obsah;
}

}


// použití třídy Basen
// 0 = použije se náhodné číslo mezi 1 - 5, jinak se vrtátí tolik slok kolik budete potřebovat

$basen = new Basen(20);
echo $basen;

?>

Galerie

Program byl vytvořen v roce 2013.

 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 252x (39.07 kB)
Aplikace je včetně zdrojových kódů v jazyce PHP

 

Všechny články v sekci
Zdrojákoviště pro OOP v PHP
Program pro vás napsal David Hynek
Avatar
Uživatelské hodnocení:
1 hlasů
já jsem redaktor?
Aktivity