Projektowanie stron WWW od podszewki

Artykuły na każdy temat

[PHP] Zabawa z emotikonami

Dodano 03.08.2013r. o 15:03
Przypomina mi się jak kiedyś bawiłem się moim niewinnym avatarem zwanym dalej małym satanem, a może powinienem powiedzieć saganem? No mniejsza o to... i podczas jednej z rozmów z Panią Iwoną naszła mnie mała inspiracja i refleksja. Jej efekt przedstawiam poniżej. Rozbija się to wszystko o kwestie postrzegania, perspektywy i percepcji.
Kod:
<!DOCTYPE html>
<html lang="pl" dir="ltr">
 <head>
  <meta charset="UTF-8">
  <title>Drobny projekt inspiracji - CapaciousCore</title>
  <style>
   * { margin: 0; padding: 0; line-height: 0 }
   body { margin: 0 auto; background-color: #D2D2D2; background-image: linear-gradient(-45deg, rgba(255, 255, 255, .2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .2) 50%, rgba(255, 255, 255, .2) 75%, transparent 75%, transparent); -webkit-background-size: 50px 50px; -moz-background-size: 50px 50px; background-size: 50px 50px }
   table { border-collapse: collapse; border-spacing: 0; }
   p { line-height: 1 }
   ol { list-style-type: none }
   li, p { margin: 10px; padding: 10px; height: 20px; line-height: 20px; text-align: center; background: #FFF; border-radius: 10px; box-shadow: 0 0 1px #000000 inset; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px }
   a { color: #000; text-decoration: none }
   li:hover { background: #4F7327 }
  </style>
 </head>
 <body>
<?php
if(!isset($_GET['id']) || empty($_GET['id']))
{
 echo '<ol>';

 for($h 1$h 15; ++$h)
 {
  echo '<li><a href="?id='.$h.'">Propozycja '.$h.'</a></li>';
 }

 echo '</ol>';
 footer();
}
else
{
 $id = (int)$_GET['id'];

 if($id || $id 14)
 {
  echo '<p>Wykryto manipulacje ID</p>';
  footer();
 }
}

// Circle
$objects[0] = $objects[34] = array_fill(139true);
$objects[1] = $objects[33] = array_fill(103true);
$objects[1] += $objects[33] += array_fill(223true);
$objects[2] = $objects[32] = array_fill(83true);
$objects[2] += $objects[32] += array_fill(243true);
$objects[3] = $objects[31] = array_fill(72true);
$objects[3] += $objects[31] += array_fill(262true);
$objects[4] = $objects[30] = array(=> true28 => true);
$objects[5] = $objects[29] = array(=> true29 => true);
$objects[6] = $objects[28] = array(=> true30 => true);
$objects[7] = $objects[27] = array(=> true31 => true);
$objects[8] = $objects[26] = array_fill(22true);
$objects[8] += $objects[26] += array_fill(312true);
$objects[9] = $objects[25] = array(=> true32 => true);
$objects[10] = $objects[24] = array_fill(12true);
$objects[10] += $objects[24] += array_fill(322true);
$objects[11] = $objects[12] = $objects[23] = $objects[22] = array(=> true33 => true);

for($y 13$y 22; ++$y)
{
 $objects[$y][0] = $objects[$y][34] = true;
}

// Eyes
$objects[7] += array(10 => true24 => true);
$objects[8] += array(=> true11 => true23 => true25 => true);
$objects[9] += array(10 => true24 => true);
// Smile
$operator = ($id == 14 || $id : -1);
$index 27;

$objects[$index] += array(=> true27 => true);
$objects[$index $operator] += array(=> true26 => true);
$objects[$index $operator] += array_fill(242true);
$objects[$index $operator] += array_fill(92true);
$objects[$index $operator] += array_fill(222true);
$objects[$index $operator] += array_fill(112true);
$objects[$index $operator] += array_fill(139true);

if($id == || $id == || $id == || $id == 6)
{
 $elements = array(array('biggrin''Very Happy'), array('sad''Sad'));
}
else if($id == || $id == || $id == || $id == 8)
{
 $elements = array(array('sad''Sad'), array('biggrin''Very Happy'));
}
else if($id == || $id == 10)
{
 $elements = array(array('blank''Empty'), array('biggrin''Very Happy'));
}
else if($id == 11 || $id == 12)
{
 $elements = array(array('blank''Empty'), array('sad''Sad'));
}
else if($id == 13)
{
 $elements = array(array('blank''Empty'), array('mrgreen''Mr. Green'));
}
else
{
 $elements = array(array('blank''Empty'), array('wink''Wink'));
}

// Fill the table
if($id && $id 9)
{
 // Watch the circle values
 $fill[0] = $fill[34] = 13;
 $fill[1] = $fill[33] = 10;
 $fill[2] = $fill[32] = 8;
 $fill[3] = $fill[31] = 7;
 $fill[4] = $fill[30] = 6;
 $fill[5] = $fill[29] = 5;
 $fill[6] = $fill[28] = 4;
 $fill[7] = $fill[27] = 3;
 $fill[8] = $fill[9] = $fill[25] = $fill[26] = 2;
 $fill[10] = $fill[11] = $fill[12] = $fill[22] = $fill[23] = $fill[24] = 1;
 // Fill the rest?
}

// @todo: rotate 90, 180, 270 degrees
// @lól: Fatal error: Can't use function return value in write context -> array_fill(10, 3, true) = array_fill(22, 3, true)

echo smile($elements$objects$fill);
footer();

function smile($elements = array(), $objects = array(), $fill = array(), $size 35)
{
 if(is_int($size))
 {
  $size array_fill(02$size);
 }

 $value '<table>';

 for($y 0$y $size[0]; ++$y)
 {
  $value .= '<tr>';

  for($x 0$x $size[1]; ++$x)
  {
   if($x $fill[$y] ^ $size[0] - $fill[$y] > $x)
   {
    $index = (isset($objects[$y][$x]) ? 0);

    $src $elements[$index][0];
    $alt $elements[$index][1];

    $img '<img src="http://www.capaciouscore.pl/smiles/icon_'.$src.'.gif" alt="'.$alt.'" />';
   }

   $value .= '<td>'.$img.'</td>';
   unset($img);
  }

  $value .= '</tr>';
 }

 $value .= '</table>';

 return $value;
}

function footer()
{
 echo '</body></html>';
 exit;
}
?>
Tworząc circle posiłkowałem się tym ponieważ nie chciało mi się pisać funkcji generującej takie cuda. Zamiast wywołania funkcji footer() można było zastosować proste goto. Ten prosty projekt/przykład można rozszerzyć o parę funkcjonalności. Wersje demo można zobaczyć tutaj.

Komentarze

Brak komentarzy

Dodaj komentarz

Zostaw komentarz jeżeli możesz! Nie bądź przysłowiowym botem! Nie bądź obojętny! Ciebie to nic nie kosztuje, a mi sprawi uśmiech na twarzy.
Zezwolono używać: BBCode
Zabroniono używać:
znaczników HTML

(Wymagany)

(Wymagany, niepublikowany)

(Nie wymagana)

Token:

Obrazek dla bota

(Przepisz tylko cyfry!)

(Wymagana)