Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2011, 16:34   #1
Ziroxz
 
Регистрация: 20.01.2011
Сообщений: 9
По умолчанию Случайный вывод рисунка из массива

Вообщем нужно сделать рандомный вывод снежков, стоящих на тарелке в руке снеговика (всего 3 шт).
Вот что получилось
PHP код:
header ("Content-type: image/png");
$im imagecreatetruecolor(320240);
$ink imagecolorallocate($im255255255);
$white imagecolorallocate($im255255255);
$red imagecolorallocate($im25500);
$grey imagecolorallocate($im18413411);
$black imagecolorallocate($im292929);
// Ноги
imagefilledarc($im,150,185,110,110,0,360,$white,IMG_ARC_PIE);
// Туловище
imagefilledarc($im,150,110,85,85,0,360,$white,IMG_ARC_PIE);
// Одежда
imagefilledarc($im,150,90,10,10,0,360,$black,IMG_ARC_PIE);
imagefilledarc($im,150,110,10,10,0,360,$black,IMG_ARC_PIE);
imagefilledarc($im,150,130,10,10,0,360,$black,IMG_ARC_PIE);
// Голова
imagefilledarc($im,150,50,65,65,0,360,$white,IMG_ARC_PIE);
// Глаза
imagefilledarc($im,135,40,10,10,0,360,$red,IMG_ARC_PIE);
imagefilledarc($im,165,40,10,10,0,360,$red,IMG_ARC_PIE);
// Улыбка
imagefilledarc($im,165,55,5,5,0,360,$grey,IMG_ARC_PIE);
imagefilledarc($im,160,60,5,5,0,360,$grey,IMG_ARC_PIE);
imagefilledarc($im,155,62,5,5,0,360,$grey,IMG_ARC_PIE);
imagefilledarc($im,165,55,5,5,0,360,$grey,IMG_ARC_PIE);
imagefilledarc($im,150,62,5,5,0,360,$grey,IMG_ARC_PIE);
imagefilledarc($im,145,62,5,5,0,360,$grey,IMG_ARC_PIE);
 
// Задаем толщину линии
imagesetthickness ($im8);
// Левая рука
imageline($im11580701300x987654);
imageline($im5095701300x987654);
imageline($im209090900x987654);
// Правая рука
imageline($im195901901700x987654);
 
 
// Непосредственно снежки
$fill $_GET['cap'];
//srand((float) microtime() * 10000000);
$arr = array (
=> 'imagefilledarc($im,20,80,20,20,0,360,$white,IMG_ARC_PIE)',
=> 'imagefilledarc($im,50,80,20,20,0,360,$white,IMG_ARC_PIE)',
=> 'imagefilledarc($im,80,80,20,20,0,360,$white,IMG_ARC_PIE)');
$rand_keys array_rand($arr1);
echo 
$arr[$rand_keys[0]];
echo 
$arr[$rand_keys[1]];
 
imagepng($im);
imagedestroy($im); 
Ziroxz вне форума Ответить с цитированием
Старый 22.11.2011, 18:20   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Тут есть какой-то вопрос, или вы просто хотели поделиться своим способом?
Arigato вне форума Ответить с цитированием
Старый 22.11.2011, 22:42   #3
Ziroxz
 
Регистрация: 20.01.2011
Сообщений: 9
По умолчанию

Суть вопроса: при запуске не генерирует само количество, а просто не выводит снежков. Если в масссиве array убрать скобки: imagefilledarc($im,20,80,20,20,0,36 0,$white,IMG_ARC_PIE) выводятся все 3 штуки, но всеравно не генерируются рендомно. Как сделать Random - генерацию снежков?
Ziroxz вне форума Ответить с цитированием
Старый 22.11.2011, 23:01   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Если вы выбираете только одно значение, функция array_rand() возвращает ключ, соответствующий этому значению. В обратном случае, она возвращает массив ключей, соответствующих случайным значениям. Это означает, что вы можете выбрать из массива как случайные значения, так и случайные ключи.
В вашем случае:
PHP код:
$rand_keys array_rand($arr1); 
вернет один ключ, а не массив ключей.

var_dump() помогает в таких случаях.
Andkorol вне форума Ответить с цитированием
Старый 22.11.2011, 23:15   #5
Ziroxz
 
Регистрация: 20.01.2011
Сообщений: 9
По умолчанию

Можете пожалуйста на моем примере реализовать данную функцию? После ее внедрения перестал выводится рисунок...
Ziroxz вне форума Ответить с цитированием
Старый 22.11.2011, 23:19   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Ziroxz Посмотреть сообщение
Можете пожалуйста на моем примере реализовать данную функцию? После ее внедрения перестал выводится рисунок...
Какую функцию..?
Andkorol вне форума Ответить с цитированием
Старый 23.11.2011, 02:03   #7
Ziroxz
 
Регистрация: 20.01.2011
Сообщений: 9
По умолчанию

Спасибо, буду пробовать.
Ziroxz вне форума Ответить с цитированием
Старый 23.11.2011, 04:10   #8
Ziroxz
 
Регистрация: 20.01.2011
Сообщений: 9
По умолчанию

Функцию случайной генерации, что тут непонятного...
Ziroxz вне форума Ответить с цитированием
Старый 23.11.2011, 04:33   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Еще раз повторю, в вашем коде $rand_keys - это НЕ массив, это одно число (почему - я объяснил выше).
А вы пытаетесь использовать его, как массив:
PHP код:
echo $arr[$rand_keys[0]]; 
echo 
$arr[$rand_keys[1]]; 
Естественно, это не работает...

PS: и какого результата в итоге вы ожидаете от простого вывода в браузер строки "imagefilledarc($im,20,80,20,20,0,3 60,$white,IMG_ARC_PIE)"...?
Это же просто строка, а не вызов функции imagefilledarc().

Вам нужно что-то вроде:
PHP код:
$rand rand(1,3); // "случайное" число
switch($rand){
    case 
1
        
imagefilledarc($im,20,80,20,20,0,360,$white,IMG_ARC_PIE);
        break;
    case 
2
        
imagefilledarc($im,50,80,20,20,0,360,$white,IMG_ARC_PIE);
        break;
    case 
3:
        
imagefilledarc($im,80,80,20,20,0,360,$white,IMG_ARC_PIE);
        break;


Последний раз редактировалось Andkorol; 23.11.2011 в 05:01. Причина: PS
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод массива saix Общие вопросы C/C++ 3 26.03.2011 23:13
вывод массива DrSMERTb C++ Builder 6 23.02.2011 18:07
Вывод рисунка на печать -=<[Evklidd]>=- Мультимедиа в Delphi 10 09.07.2010 18:38
Вывод массива по спирали coNsept Общие вопросы C/C++ 1 15.12.2009 20:20
Вывод двумерного массива pancho Общие вопросы Delphi 10 25.01.2009 23:31