Можете ли вы написать программу, которая отображает группу пикселей, взрывающихся друг от друга (как в простом механизме частиц), и можете ли вы сделать это с любым удивительно небольшим количеством символов (нажатий клавиш)? (Вспомните игровые лемминги, когда эти маленькие парни взорвутся и их маленькие пиксельные кусочки разлетятся.)
Кто-то запрограммировал здесь простую систему частиц как скетч- процессинг, и это довольно дорого по сравнению с тем, что, на мой взгляд, должны быть в состоянии выполнить другие, если они попытаются. Но я был бы гораздо более впечатлен, если бы кто-то мог сделать то же самое в c ++ и sdl, или даже в java или c #.
Ответы:
Питон, 245 символов
источник
C #, WPF - 1523
Не очень серьезно; это была в основном попытка, работало ли это на самом деле.
Здесь я использую ItemsControl (Menu, поскольку он короче) в WPF для отображения частиц с помощью привязки данных и шаблонов. Шаблон данных контролирует, как выглядят частицы (в данном случае простой круг), а привязка данных контролирует цвет и положение частиц.
Каждая частица имеет позицию, цвет и направление, которые обновляются таймером. Первоначально группа частиц генерируется в центре окна с (нормально распределенными) случайными направлениями. Эта коллекция получает привязку к данным для ItemsControl, который затем автоматически обрабатывает отображение частиц при каждом обновлении свойств. Частицы тянутся вниз под действием силы тяжести.
Это стало немного длинным, по общему признанию. Но, по крайней мере, это выглядит красиво:
Конечно, это можно сделать короче, пропустив:
Я решил не делать этого в интересах эстетики. Это решение намного дольше, чем все остальное, независимо от того, Подход к привязке данных и шаблонам может быть элегантным, но он также довольно многословен по сравнению с простым обновлением растрового изображения. (Примечание: я сократил его до 1356 года, исключив все вышеперечисленное, но тогда это выглядит ужасно.)
Код распространяется в трех файлах, которые приведены здесь в отформатированном виде для удобочитаемости:
App.xaml
W.xaml
W.xaml.cs
источник
постскриптум -
287244 символабежать с
gs -dNOPAUSE asplode.ps
Вы могли бы даже распечатать его и сделать флипбук
источник
Javascript - 268 символов
Вот 1-мерный взрыв из двух частиц:
Чтобы запустить его, откройте пустую страницу about: в хорошем веб-браузере, вставьте ее в строку URL и нажмите enter. Вы можете изменить взрыв, отредактировав значения в конце в
s(10,5,1,0)
. Первое значение - это размер взорвавшейся частицы. Второе значение - размер взорвавшейся частицы. Третье значение - это скорость взорвавшейся частицы. Оставьте «0» как есть.источник
APL (
120118)Он имеет тот же тип вывода, что и запись Python (то есть он просто выводит состояния в таблице символов). Только сетка 30x15, а источник частиц - 15x7.
источник
JavaScript
502500496Это комбинация ответов Joey и david4dev (это бесстыдная копия алгоритма Joey, реализованного с использованием Javascript / canvas ☺):
Предварительный просмотр JSFiddle: http://jsfiddle.net/GVqFr/60/ (вы можете нажать кнопку TidyUp, чтобы красиво отформатировать код)
источник
500
. Если вы можете определить глобальную переменнуюa=500
, вы можете сохранить несколько символов, заменив все500
наa
.250
тоже сработало .Баш 380
Зовите, как взорваться.
обновление: раскрашен
t = текст, c = cls, g = gotoxy, f = fly, C = цвет
источник
C с SDL, 423 символа
Поскольку в оригинальном описании проблемы явно упоминался SDL, я чувствовал, что уже давно пришло решение SDL. К сожалению, названия функций и структур SDL не очень кратки, поэтому эта программа немного длинная. На самом деле, я даже не могу пропустить
#include
.(Поскольку код уже настолько огромен, я оставил несколько дополнительных битов, чтобы он компилировался без предупреждений. Иногда я пропускаю компиляцию без предупреждений. Удаление их сэкономило бы около 30 символов.)
Анимация работает в бесконечном цикле. Закройте окно для выхода из программы. Каждый взрыв использует новый набор случайных частиц.
Я также хотел бы указать номер
67372036
в коде. Он появляется в выражении для последнего аргумента во втором вызовеSDL_FillRect()
. Поскольку кодекс стоит, взрыв представлен полностью в серых тонах. Небольшое изменение этого числа добавит очень тонкий, но приятный цветовой эффект к взрыву. Число67372032
окрашивает частицы в начале взрыва, в то время как число67372034
обеспечивает цветовой эффект, когда они исчезают в конце. Другие числа могут производить менее тонкие цветовые эффекты. Я призываю вас попробовать их.источник
Посмотрев некоторые другие замечательные примеры здесь, я решил попробовать и создать функцию частиц, которая умещается в 140byt.es
Javascript, 282 символа
( Функция частиц 138 символов и базовый шаблон для рисования на холсте 150 символов)
Живой пример JSFiddle здесь
Делая код полностью процедурным, я больше не нуждался в массиве или коде назначения объекта, что значительно уменьшало размер. Создание процедурного эффекта также имеет некоторые другие приятные побочные эффекты.
Код можно сделать меньше, пропустив Gravity, Seeds, Number of Particles и т. Д., Но я думаю, что эти функции слишком хороши для удаления;).
Характеристики
Также проверьте это на GitHub , для аннотированной версии.
источник
Питон с PyGame, 240 символов
Я понимаю, что в python уже есть решение, но так как оно просто печатает символы, я подумал, что было бы целесообразно создать такое, которое рисует хорошую анимацию.
Ungolfed, с чего я начал:
После долгих попыток. Полный экран, чтобы сохранить некоторые символы. Не использовать звук или шрифты, поэтому я думаю, что
init()
это не нужно (это работает для меня).источник
Python - 327 символов
Интересные вещи:
(v * cos(a), v * sin(a))
реализовано какv*e**(1j*a)
,
источник
Dwitter 112
попробуйте скопировать / вставить код в dwitter.net
источник