Autor | Zpráva | ||
---|---|---|---|
Alastor_Kopal Profil |
#1 · Zasláno: 22. 5. 2009, 21:15:31
Jak mohu vyjádřit životy uživatele graficky ?
něco jako - |
||
SwimX Profil |
#2 · Zasláno: 22. 5. 2009, 21:17:55
Alastor_Kopal
hledej php funkci image a všechny její odvozeniny. |
||
SwimX Profil |
#3 · Zasláno: 22. 5. 2009, 21:29:17
Alastor_Kopal
z nudy: <?php $img = imagecreate(100,20); // delka, vyska $live_color = imagecolorallocate($img, 0,255,0); $dead_color = imagecolorallocate($img, 255,0,0); imagefill($img,0,0,$live_color); imagefilledrectangle($img, 0, 0, 50, 20,$dead_color); // zacatek x, zacatek y, DELKA, VYSKA header("Content-type: image/png"); ImagePng($img); imagedestroy($img); ?> |
||
Majkl578 Profil |
#4 · Zasláno: 22. 5. 2009, 22:28:32
proc zatezovat server vykreslovanim obrazku? nestaci css?
|
||
Bubák Profil |
#5 · Zasláno: 22. 5. 2009, 23:31:45
|
||
Alastor_Kopal Profil |
#6 · Zasláno: 23. 5. 2009, 13:46:52
No jo článek 5 je sice pěkný ale co až uživatel bude mít vyšší úroveň ? V session mám uložen počet životů a maximální počet životů můžu jen do CSS dosadit proměnné ?
|
||
Majkl578 Profil |
#7 · Zasláno: 23. 5. 2009, 14:37:32
si udelej procenta. jinak vzdy muzes dosadit do html do style="...", popripade i css se da generovat v php.
|
||
Alastor_Kopal Profil |
#8 · Zasláno: 23. 5. 2009, 15:41:36
když mám 18/20
to snad bude počítat 18% z 20% celé stránky ne ? |
||
Alastor_Kopal Profil |
#9 · Zasláno: 24. 5. 2009, 19:18:45
Pokud to uzavřu do stylu který má pevnou šířku a výšku tak by to nemuselo počítat 20% ze stránky snad
|
||
Majkl578 Profil |
#10 · Zasláno: 25. 5. 2009, 08:45:37
Alastor_Kopal
18 zivotu z 20, tj 18*(100/20) pro zelenou a 100-(18*(100/20)) pro cervenou. nevim co resis |
||
Alastor_Kopal Profil |
#11 · Zasláno: 25. 5. 2009, 10:32:34
Tak sem udělal tohle
<style> #cervena{ background: red; width: 18*(100/20); } #zelena{ background: green; width: 100-(18*(100/20)); } </style> <div id="cervena">18</div><div id="zelena">20</div> a udělalo to tohle |
||
Str4wberry Profil |
#12 · Zasláno: 25. 5. 2009, 10:39:10
CSS zatím neumí dělat matematické výpočty.
|
||
blaaablaaa Profil |
#13 · Zasláno: 25. 5. 2009, 10:41:00 · Upravil/a: blaaablaaa
<style> #cervena{ background: red; width: <?php echo round(18*(100/20)); ?>px; } #zelena{ background: green; width: <?php echo 100-round(18*(100/20)); ?>px; } </style> |
||
Alastor_Kopal Profil |
#14 · Zasláno: 25. 5. 2009, 11:00:24
|
||
Alastor_Kopal Profil |
#15 · Zasláno: 25. 5. 2009, 11:06:54
aha takže dal jsem si
<? session_start(); // Startujeme session $zdravi = $_SESSION['zdravi'] ?> <style> #cervena{ background: red; } #zelena{ background: green; width: <?php echo"$zdravi" ?>px; } </style> <div id="cervena"><div id="zelena"><? echo"$zdravi" ?></div></div> a do stránky dám iframe s délkou $maxzdravi diki moc |
||
Majkl578 Profil |
#16 · Zasláno: 25. 5. 2009, 11:06:56
Str4wberry
Alastor_Kopal kdyz jsem to psal, predpokladal jsem, ze se pouzije nejaky scriptovaci jazyk na vypocet(php), viz [#13] |
||
Alastor_Kopal Profil |
#17 · Zasláno: 25. 5. 2009, 11:13:27
myslím si že toto je jednoudšší ne ?
|
||
Majkl578 Profil |
#18 · Zasláno: 25. 5. 2009, 11:36:30 · Upravil/a: Majkl578
ja bych to udelal treba takto (napsano exklusivne pro toto tema):
<?php class HpGenerator { /** * sirka css boxu */ const WIDTH = 100; /** * vyska css boxu */ const HEIGHT = 15; /** * generace css stylu hp * @var int $userHas kolik hp ma uzivatel * @var int $max maximalni pocet hp * @return int sirka boxu zbyvajicich zivotu */ public static function generateCssHp($userHas, $max) { return $userHas * (self::WIDTH / $max); } } $uzivatelovoHp = 18; $maximum = 20; ?> <style type="text/css"> .lives { width:<?php echo HpGenerator::WIDTH; ?>px; height:<?php echo HpGenerator::HEIGHT; ?>px; background: #FF0000; } .user-has { width:<?php echo HpGenerator::generateCssHp($uzivatelovoHp, $maximum); ?>px; height:<?php echo HpGenerator::HEIGHT; ?>px; background-color: rgb(0,255,0); } </style> <div class="lives"><div class="user-has"></div></div> |
||
Alastor_Kopal Profil |
#19 · Zasláno: 25. 5. 2009, 11:49:23
To je daleko lepší dííky moc
|
||
Časová prodleva: 3 dny
|
|||
NoName Profil * |
#20 · Zasláno: 28. 5. 2009, 02:11:36
Majkl578
Aneb proc to delat jednoduse, kdyz to jde slozite... Pri jeho znalostech urcite pochopi tridu se statickou metodou... Na to staci normalni konstanta a funkce. Nic proti, ale OOP je dnes proste IN - cim slozitejsi struktura, tim vic PHP guru... Sry za OT, ale tohle uz je moc |
||
Majkl578 Profil |
#21 · Zasláno: 28. 5. 2009, 12:35:20
NoName
nerikam ze nestaci, ale proc bych mel nekoho motivovat psat dnes jiz "nevhodny" proceduralni kod? sorry, ale v soucasnosti je OOP zaklad. napsal jsem jednoduchou tridu, ktera je logicka (vice nez nejaka obycejna funkce). jsem proste zvykly psat objektove orientovany kod (soucasne uz i se jmennymi prostory) a kdyz muzu, snazim se ostatnim, kteri jej nepouzivaji naznacit, ze je lepsi. a pokud tomu nerozumi, predpokladam, ze si o tom neco dohleda (navic kdyz jsou ty prvky i ozivene a odkazuji na manual). rekni mi, co vypada logicteji, tridy, ktere se staraji o specificke veci, nebo plny kod nesmyslne pojmenovanych funkci, ktere napreskacku delaji cosi o cem cizi clovek pri pohledu na kod nema ani paru..? |
||
imploder Profil |
#22 · Zasláno: 28. 5. 2009, 13:20:11
Majkl578
Program má něco vykonat? Co vypadá logičtěji: třídy (co to je?), které se starají o specifické věci, nebo kód volající funkce/procedury, z nichž každá prostě něco udělá? OOP je nadstavba nad procedurálním programováním. Když neumíš psát obyčejné funkce, asi těžko můžeš vytvářet kód, kde jsou taky a navíc ještě zapouzdřené v něčem dalším. Co přináší členská funkce třídy oproti té samé funkci, která je prostě funkcí? Hlavní je, že to udělá. Že ve větších projektech je výhodné takové funkce "balit" společně s daty, které využívají, a od těch balíčků se pak teprv dělají různé instance, příp. můžou od sebe tyhle věci dědit a jinak kouzlit, je až navíc. Nenahrazuješ tím samotnou funkci, jenom jsi ji do něčeho zabalil. To něco je tam v tomto případě jenom navíc. |
||
tiso Profil |
#23 · Zasláno: 28. 5. 2009, 13:27:42
imploder - +1
|
||
Majkl578 Profil |
#24 · Zasláno: 28. 5. 2009, 13:40:26 · Upravil/a: Majkl578
imploder
co to prinasi? prehlednost? nebo treba seskupeni parametru stejneho vyznamu (to vlastne prinasi i namespaces ted) do jednoho "balicku"? ocividne jsi nepochopil jak jsem to myslel. no, zkus nad tim jeste zamyslet :) mimochodem, co ja vim tak v oop se funkcim rika metody a slouzi k logickym akcim s objektem, kdezto funkce ciste v kodu delaji co chteji (jsou nezavisle) tiso bezvyznamny komentar, za takove bych daval tresty |
||
tiso Profil |
#25 · Zasláno: 28. 5. 2009, 13:49:36
Majkl578 [#24] - srandista... Trest? Za čo? Začni láskavo od seba.
|
||
Majkl578 Profil |
#26 · Zasláno: 28. 5. 2009, 13:50:35
|
||
tiso Profil |
#27 · Zasláno: 28. 5. 2009, 14:01:20
Majkl578 - keby som napísal:
"Súhlasím s imploder-om." bolo by to v poriadku? Alebo som mal napísať: "Súhlasím s imploder-om, je zbytočné vytvárať novú triedu, je lepšie navrhnúť funkciu, ktorú si, ak používa OOP, vie vložiť do správnej triedy." ? |
||
Majkl578 Profil |
#28 · Zasláno: 28. 5. 2009, 14:04:40
tiso
to posledni je alespon prinesne, je to obohacene o tvuj nahor, ty prvni dve ostatni nijak neobohati. ;) |
||
DJ Miky Profil |
#29 · Zasláno: 28. 5. 2009, 14:29:07
„rekni mi, co vypada logicteji, tridy, ktere se staraji o specificke veci, nebo plny kod nesmyslne pojmenovanych funkci, ktere napreskacku delaji cosi o cem cizi clovek pri pohledu na kod nema ani paru..?“
A co je opravdu lepší, 20řádková třída, kterou použiješ jednou a dělá jednu jedinou věc, nebo jednořádkový výraz (popř. jednořádková funkce), který udělá to samé mnohem přehledněji a rychleji? OOP ano, ale nic se nesmí přehánět. |
||
imploder Profil |
#30 · Zasláno: 28. 5. 2009, 14:54:01
<?php define("HPVIEW_WIDTH", 100); // sirka css boxu define("HPVIEW_HEIGHT", 15); // vyska css boxu function generateCssHp($userHas, $max) { return $userHas * (HPVIEW_WIDTH / $max); } $uzivatelovoHp = 18; $maximum = 20; ?> <style type="text/css"> .lives { width:<?php echo HPVIEW_WIDTH; ?>px; height:<?php echo HPVIEW_HEIGHT; ?>px; background: #FF0000; } .user-has { width:<?php echo generateCssHp($uzivatelovoHp, $maximum); ?>px; height:<?php echo HPVIEW_HEIGHT; ?>px; background-color: rgb(0,255,0); } </style> <div class="lives"><div class="user-has"></div></div> Co je s tímto za problém? Objekt měl šířku i výšku konstantní (natvrdo už v prototypu), takže stejně nešlo dělat víc zobrazovacích boxů s různými rozměry. Dělat pro každý takový box zvláštní instanci objektu by bylo zbytečné, jenom by to zabíralo paměť. Takže by se více boxů ovládalo jako jeden objekt - jeden box. To mi nepřipadá zrovna logické. Nepopírám, že v okamžiku, kdy je program složen z mnoha takových objektů, je podpora objektů a prostorů jmen přímo v jazyce užitečná věc a že OOP se vyplatí znát a používat. To rozhodně ne. Ale v tomto případě mě naprosto nenapadá, co to přináší. Co získám z té třídy, tak, jak jsi ji napsal, oproti samotné funkci? Opravdu nevím. „mimochodem, co ja vim tak v oop se funkcim rika metody a slouzi k logickym akcim s objektem“ Není to to samé, protože tomu říkáme jinak, že jo. Funkcím se v OOP říká metody, konstantám a proměnným atributy. Obojí se vyznačuje tím, že patří objektu (narozdíl od běžných funkcí a proměnných). Akce s objektem je zrovna tak logická jako akce mimo objekt. „kdezto funkce ciste v kodu delaji co chteji (jsou nezavisle)“ Zadání bylo zobrazit zdraví. Na to stačí zobrazit zdraví, není potřeba vytvářet nějakou virtuální "věc" (objekt), jejíž jedinou funkcí je zobrazit zdraví. |
||
Téma pokračuje na další straně.
|
0