Generátor básní v PHP

PHP Ostatní 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ženo 231x (39.07 kB)
Aplikace je včetně zdrojových kódů v jazyce php

 

  Aktivity (1)

Program pro vás napsal David Hynek
Avatar
já jsem redaktor?

Jak se ti líbí článek?
Celkem (1 hlasů) :
55555


 


Miniatura
Všechny články v sekci
Ostatní tutoriály v PHP
Miniatura
Následující článek
Šablonovací systém PHP_JUI - Úvod

 

 

Komentáře

Avatar
carpi
Neregistrovaný
Avatar
carpi:

V první řadě bych odsadil bloky, takhle se to neda cist

 
Odpovědět 14.5.2013 19:26
Avatar
David Hynek
Redaktor
Avatar
Odpovídá na carpi
David Hynek:

v počítači to tak mám, tady to odstranilo tabulátory

Odpovědět 14.5.2013 21:13
Čím víc vím, tím víc věcí nevím.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na David Hynek
David Čápka:

Ty se musely odstranit nedopatřením když jsi vkládal text, editor taby podporuje.

Odpovědět 14.5.2013 21:17
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Hynek
Redaktor
Avatar
David Hynek:

v pohodě... už jsem je tam přidal

Odpovědět 14.5.2013 21:18
Čím víc vím, tím víc věcí nevím.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.