<?php

# игровые функции
class game {

# обработка и вывод сообщений
public function message($var, $length = false) { if ($length) 
return (mb_strlen($var) <= $length) ? true : false; // длина строки
else { $msg = strtr($var, array( // массив, обработка смайлов
':)' => '<img alt class=smile src=/design/smiles/smile.png>',
';)' => '<img alt class=smile src=/design/smiles/wink.png>',
':D' => '<img alt class=smile src=/design/smiles/laugh.png>',
'XD' => '<img alt class=smile src=/design/smiles/biggrin.png>',
':(' => '<img alt class=smile src=/design/smiles/sad.png>',
'8)' => '<img alt class=smile src=/design/smiles/cool.png>',
':P' => '<img alt class=smile src=/design/smiles/tongue.png>',
':|' => '<img alt class=smile src=/design/smiles/happen.png>',
':O' => '<img alt class=smile src=/design/smiles/shock.png>',
':Z' => '<img alt class=smile src=/design/smiles/angry.png>'));
return preg_replace('/\\r\\n/si', '<br>', $msg); } } // перевод строки, вывод

# вывод числа, формат
public function number($num) { return number_format($num, 0, false, '\''); } // возвращение результата

# вывод картинки персонажа
public function person() {
$num = array('one', 'two', 'three', 'four'); $sex = array('man', 'woman'); $gender = $sex[array_rand($sex)]; // номер, пол
if ($gender == 'woman') $name = array('Елена', 'Татьяна', 'Ольга', 'Наталья', 'Ирина', 'Мария', 'Светлана',
'Анастасия', 'Марина', 'Виктория', 'Оксана', 'Лариса', 'Кристина', 'Елизавета', 'Маргарита'); // женское имя
elseif ($gender == 'man') $name = array('Александр', 'Сергей', 'Владимир', 'Андрей', 'Алексей', 'Николай',
'Михаил', 'Евгений', 'Виктор', 'Василий', 'Максим', 'Виталий', 'Роман', 'Вячеслав', 'Владислав'); // мужское имя
return array($num[array_rand($num)] .'-'. $gender, $name[array_rand($name)]); } // возвращение результата

# вывод картинки животного
public function pet($image, $feed, $food) {
if ($feed == 0 && $food == 0) return $image .'/null'; // нулевое значение
else { $perc = round((time() - $feed) / ($food - $feed) * 100); // проценты
if ($perc <= 33) $num = 'zero'; elseif($perc <= 66) $num = 'one';
elseif ($perc <= 99) $num = 'two'; else $num = 'three'; // стадия
return $image .'/'. $num; } } // вывод картинки

# вывод картинки растения
public function plant($image, $seed, $harv) {
$perc = round((time() - $seed) / ($harv - $seed) * 100); if ($perc <= 20) $empty = true; // проценты
elseif ($perc <= 40) $num = 'zero'; elseif($perc <= 60) $num = 'one'; elseif ($perc <= 80) $num = 'two'; // стадия
elseif($perc > 80) $num = 'three'; return (isset($empty)) ? 'soil/ground' : $image .'/'. $num; } // картинка

# вывод случайного числа
public function random($min, $max) { return mt_rand($min, $max); }

# сумма ремонта техники
public function repair($tech, $strong) { $money = PRICE['tech_'. $tech] / 2; // цена техники
$fritz = explode(';', DATA['crash']); return floor(($money / $fritz[1]) * $strong); } // сумма ремонта

# создание, проверка сигнатуры, платеж. система
public function signature($one, $two, $three = false) {
$check = ($one == 'check' || $one == 'pay' || $one == 'error') ? true : false; // проверка статуса
if ($check) { ksort($two); unset($two['sign']); unset($two['signature']); // сортировка параметров
array_push($two, PAY['secret']); array_unshift($two, $one); return hash('sha256', implode('{up}', $two)); } // сборка хеша
else return hash('sha256', $one .'{up}RUB{up}'. $two .'{up}'. $three .'{up}'. PAY['secret']); } // вывод хеша

# получение задания
public function task($count) { $anim = array('plant', 'food'); $tech = array('plant', 'food', 'tech'); // списки продуктов
$type = ($count >= 50) ? $tech[array_rand($tech)] : (($count >= 25) ? $anim[array_rand($anim)] : 'plant'); // тип продукта
$num = ($type == 'plant') ? mt_rand(1, 5) : mt_rand(1, 3); $count = mt_rand(3, 15); return array($type, $num, $count); } // номер, количество продукта

# вывод картинки техники
public function technic($image, $prod) { return ($prod != 0 && $prod < time()) ? 
$image .'/product' : (($prod != 0) ? $image .'/loaded' : $image .'/empty'); }

# вывод даты и времени
public function when($time, $gap = false) { if ($gap) $time = $gap - $time; $hour = floor($time / 3600); // промежуток
$min = floor(($time - ($hour * 3600)) / 60); $sec = $time - ($hour * 3600) - ($min * 60); if ($hour > 0 && $min > 0) 
return $hour .' ч. и '. $min .' м.'; elseif ($hour > 0 && $sec > 0) return $hour .' ч. и '. $sec .' с.'; elseif ($min > 0 && $sec > 0) 
return $min .' м. и '. $sec .' с.'; elseif ($min > 0) return $min .' м.'; elseif ($sec > 0) return $sec .' с.'; else return '0 с.'; }

# склонение слова от цифры
public function word($count, $one, $two = false, $three = false, $text = false) {
$two = ($two) ? $two : $one; $three = ($three) ? $three : $one; $intval = $count % 10; // проверка слов
if ($count == 0) return ($text) ? $three : $count .' '. $three; // нулевое количество
elseif ($count > 10 && $count < 20) return ($text) ? $three : $count .' '. $three; // много
elseif ($intval > 1 && $intval < 5) return ($text) ? $two : $count .' '. $two; // средне
elseif ($intval == 1) return ($text) ? $one : $count .' '. $one; // единица
else return ($text) ? $three : $count .' '. $three; } }

# запуск класса
$GAME = new game();

?>