«Говорят, случайностей не бывает» Проверим? Знаменитый шарик из «Трассы 60», отвечающий на вопросы Как устроен реальный шар? История создания и варианты ответов.
Опыт использования:
несколько раз
Salve!
Недавно я пересмотрела замечательный фильм «Трасса 60». Видела его только раз и давно, поэтому помнила плохо. Такое удовольствие было — посмотреть его снова! Как будто впервые. Если вы еще не видели этот фильм, очень, от души прямо, советую его посмотреть.
Если коротко, то фильм про парня, загадочную девушку, которая ему нравится, несуществующую дорогу, человека, исполняющего желания, и так называемый «Шар судьбы», который умел отвечать на вопросы, тем самым как бы предсказывая судьбу. Точнее помогая принять решение, в дальнейшем влиявшее на судьбу.
После просмотра мне, конечно же, было интересно узнать, есть ли такие шары в реальности. И да, они были. И есть. Думаю, на подобные штуки был огромный спрос после выхода фильма. Покупать я не стала, хотя очень хотелось. Почитала отзывы, и как-то они меня не убедили.
КАК ПОЛЬЗОВАТЬСЯ ПРИЛОЖЕНИЕМ SHARE IT / ШАРИТ
Решила поискать бесплатный аналог, желательно в онлайн-формате. И нашла данный сайт.

История создания / Как устроен реальный шар? / Как пользоваться шаром?
Прототип волшебного шара изобрел Альберт Картер, вдохновившись изделием, которое сделала его мать. Она была гадалкой, и ее считали городской сумасшедшей. Она создала коробку с доской внутри. Когда кто-то задавал вопрос, на доске появлялось определенное сообщение.
Итак, в 40-е годы прошлого века, Альберт сотворил цилиндр «Syco-Seer», который делал то же, что сейчас делает шар.
Принцип работы у него был следующий:
Цилиндр был разделён на две половины — в каждой из них находился кубик с ответами. В цилиндре было не одно прозрачное дно, а два. А внутри находилась какая-то тёмная жидкость. На сторонах цилиндра располагались длинные шипы.
Игрушку необходимо было встряхнуть и повернуть одной из прозрачных сторон кверху.
Кубик, наполненный лёгким газом, мгновенно начинал подниматься к поверхности. Шипы, расположенные на внутренней стороне, задевали кубик и заставляли его вращаться. Таким образом, ответ на вопрос получался непредсказуемым. В тёмной жидкости кубик не было видно, пока он не поднимется к самой поверхности. Это делало его появление неожиданным.
Однако Альберт не смог доработать свое произведение до конца, поэтому реализация не состоялась. Что именно пошло не так? Дело в том, что в темной жидкости ответ сложно было увидеть (буквы с трудом читались). Нужна была какая-то подсветка. Ее-то изобретатель и не сделал.
В 60-х годах идею Картера воплотил другой человек — А. Букмен. Почему-то в русскоязычном интернет-пространстве я не нашла информацию ни про одного, ни про другого. Именно он превратил цилиндр в шар, а также решил проблему читаемости ответов.
Как пользоваться приложением shareit
Внутри шара уже плавал многогранник со сторонами в форме треугольников, а не два кубика. На каждой из сторон был ответ, буквы которого были выпуклыми и четко различимыми. Вот так. Даже подсветка не понадобилась.
В чём преимущества модели Букмена?
Прежде всего, использовать волшебный шар удобнее, чем цилиндр — он удобно располагается в руке. Кроме того, сама форма шара мистически загадочна. Во многих сказках инструментом для того, чтобы заглянуть в будущее или прошлое, был именно шар. Также его успешно использовали ведьмы и волшебники.
Популярным шар стал как раз благодаря фильму, о котором я писала ранее — «Трасса 60». Также его появление можно заметить в таких фильмах и сериалах, как:
- «Друзья»
- «Доктор Хаус»
- «Зачарованные»
- «История игрушек»
- «Крутые бобры»
- «Симпсоны»
- «Шоу Трумана»
- и др.
Ну а теперь, как видите, такое есть даже в онлайн-формате (:
А что на сайте?
На сайте есть ровно то, что необходимо, не больше. А именно:
- сам шар;
- его описание;
- кнопки социальных сетей, чтобы поделиться.
Целиком (а точнее в двух скриншотах) это выглядит как-то так:


Нажимая на «Узнать больше», вы узнаете историю шара и принцип его работы. Еще ниже есть имя создателя ресурса и ссылка на его личный сайт. У него много разных проектов, кроме этого. Было интересно посмотреть.
Варианты ответов
Спросить можно двумя способами: нажав на центр шара, либо вписав вопрос в поле, отведенное для этого, и нажав на «Спросить». Как по мне, проще сформулировать вопрос в голове и нажать центр шара. Кстати, вопросы должны быть такими, чтобы на них можно было ответить «Да» или «Нет». Ответы условно поделены на 4 группы:




Можно нажать на шар не один раз, получая другие ответы, но тогда, как по мне, смысл теряется (:
Другие ресурсы (сайты-генераторы)
Когда я искала материалы для отзыва в доп. источниках, наткнулась еще на пару сайтов с подобными шарами. Но там они были не самодостаточными, а в составе чего-то большего. Простыми словами, это был один из разделов. А сайты были такими, где много разной информации генерируется в случайном порядке (имена / клички, пароли, цитаты и даже комплименты).
Один мне совсем не понравился, а другой ничего. Там даже есть генератор фильмов (удобно, когда не можешь выбрать фильм на вечер) и новой музыки. Как-нибудь напишу про него отдельный отзыв.
Вывод / итог
Астрология, гадания и пр. Люди — существа любопытные, но часто ленивые и трусливые, и некоторым из них во все времена хотелось знать, что готовит им будущее. Кто-то же напротив считает, что «Меньше знаешь — крепче спишь».
Мне кажется, никто не может знать, что случится, поскольку это зависит от многих факторов, вплоть до мелочей. Будущее, завися от настоящего, меняется каждую секунду. Можно догадываться, можно выполнять какие-то действия для определенного исхода, можно надеяться. Но знать на 100%? Вряд ли.
Лучше использовать подобные ресурсы в качестве забавы / развлечения. Чтобы поддержать себя или опровергнуть свою теорию. Не нужно относиться ко фразам, выпадающим случайно, слишком серьезно.
Поэтому мой общий вывод такой: пользуйтесь, но не увлекайтесь. Все же по большей части судьба в ваших руках

А на этом пока всё, но я не прощаюсь.
Рада, если информация, изложенная в отзыве, принесла или принесёт вам пользу.
С вами была ✨ Анастасия ✨
Заглядывайте в профиль, нажав на мое имя. Там вас ждёт море полезных интересных отзывов
Источник: irecommend.ru
Как установить программу шары
SHAREit — удобное приложение, помогающее пользователю обмениваться различными документами и файлами по единой сети Wi-Fi. При передаче отсутствуют любые ограничения по количеству передаваемых файлов и трафику. Особенностью SHAREit является высокая скорость передачи данных. Благодаря приложению можно подключаться к устройствам под управлением разных операционных систем.
Для пользования нужно всего лишь инсталлировать приложение, создать точку доступа, подключиться и начать передавать разные файлы. На принимающем устройстве пользователь нужно принять файл. Интерфейс SHAREit не отличается сложностью и содержит подсказки. Посредством приложения можно передавать файлы без наличия активного интернет-соединения либо сети.
Передача производится только с помощью радиомодуля Wi-Fi. Скорость передачи может доходить до 20 Мб/с.


Особенности программы
— Предназначено для помощи в обмене информацией через Wi-Fi.
— Позволяет обмениваться данными с разными устройствами.
— Поддерживает передачу файлов любого размера.
— Обеспечивает скорость обмена данными до 20 Мб/с.
— Можно передавать файлы без наличия активного интернет-соединения либо сети
— Можно подключаться к устройствам под управлением разных операционных систем.
— Не отличается сложностью и содержит подсказки.
— Небольшой размер приложения.
— Обладает стильным и приятным внешним дизайном.
— Устройства с установленным приложением автоматически находят друг друга.
— Есть поддержка русского языка.
Недостатки программы
— Имеет закрытый исходный код.
— Отсутствует портативная (portable) версия.
Системные требования
— Процессор с тактовой частотой 1200 MHz или более мощный.
— Оперативная память 256 Мб или больше.
— Свободное место на жёстком диске от 18 Мб.
— Архитектура с разрядностью 32 бит или 64 бит (x86 или x64).
— Операционная система Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10
См. также
SHAREit — бесплатная программа, которая позволяет обмениваться файлами, фотографиями, видеозаписями и документами между любыми устройствами: компьютерами, ноутбуками, планшетами и смартфонами. SHAREit работает на всех устройствах под управлением Windows, Android, iOS и позволяет удобно и быстро отправлять файлы размером от 1 Мб до 100 Гб.
Установите на нужных устройствах программу Шареит, чтобы эти устройства могли взаимодействовать. Для начала обмена данными два устройства нужно связать — подключите их к одной точке доступа, а потом запустите поиск доступных устройств. Выберете файлы, которые необходимо передать и нажмите «Отправить», а на другом устройстве «Получить».
Особенности SHAREit
- Возможность передать файлы без наличия сети и интернет трафика. Процесс осуществляется с помощью радиомодуля Wi-Fi вашего устройства.
- Высокая скорость передачи данных до 20 Mб/с, что значительно превышает скорость обмена файлами по инфракрасному порту и Bluetooth.
- Обмен данными между устройствами, работающими на разных операционных системах: Windows, Android, iOS, Windows Phone.
SHAREit скачать бесплатно
Скачайте SHAREit бесплатно для компьютера на русском языке с официального сайта. Мы отслеживаем все обновления программы для того, чтобы у Вас была последняя версия SHAREit.
Это новое бесплатное приложение компании Lenovo, благодаря которому можно беспрепятственно обмениваться файлами и папками между смартфонами, планшетами и ПК. С её помощью можно обмениваться файлами и между различными ОС: например, со смартфона с ОС Android на планшет с ОС Windows или с ноутбука Windows на iPad и др.
Преимущества SHAREit
Одно из преимуществ программы — малый размер дистрибутива. А вот для больших файлов рекомендуем бесплатно скачать торрент программу для windows и других операционных систем на русском языке. С ее помощью можно качать файлы любых размеров.
Еще одним достоинством программы можно назвать её стильный и эстетичный внешний вид. Работать в ней действительно очень удобно и приятно. Максимально простой интерфейс позволяет разобраться в программе даже неопытному пользователю. Всего пара кнопок: «Принять» и «Отослать» и настройки делают работу с SHAREit быстрой и комфортной.
Для передачи данных не нужны никакие провода — процесс осуществляется с помощью радиомодуля Wi-Fi вашего устройства. С помощью SHAREit можно передавать любые файлы:
- фото;
- видео;
- музыку;
- целые папки с любыми файлами без ограничений по размеру.
Передача осуществляется в 40-60 раз быстрее, чем через Bluetooth, она может только незначительно замедлиться если размер файла чересчур велик. Для начала обмена данными 2 устройства нужно связать. Сначала нужно их подключить к одной точке доступа, а потом запустить поиск доступных устройств. За несколько секунд устройство распознает окружающие модели. Пользователю останется лишь отправить запрос.

Устройства с установленными SHAREit могут автоматически находить друг друга в пределах досягаемости.
Совместимость SHAREit
- SHAREit для компьютеров Windows и macOS;
- Мобильные устройства Android;
- Телефоны и планшеты iOS.
Как с помощью SHAREit передать файлы на компьютер
Полезное андроид приложение SHAREit (Шарит) предназначено для быстрой передачи данных и обмена файлами между двумя мобильными устройствами (или между компьютером с телефоном или планшетом в одной сети wi-fi). Если нужно передавать крупные файлы и нужна высокая скорость обмена данными, то можно скачать SHAREit на андроид бесплатно без смс и регистрации на нашем сайте (apk по ссылке).
Возможности и особенности Шарит на Андроид
Высокая скорость работы – главное достоинство приложения. Эксперты подсчитали, что с помощью программы Шарит обмен файлами между гаджетами происходит почти в 200 раз быстрее, чем при использовании Bluetooth. Уже только ради такой скорости обмена файлами на андроид смартфонах или планшетах стоит установить приложение Шарит.
- Обмен данными между разными мобильными устройствами – приложение SHAREit позволяет обмениваться данными с компьютером под управлением Windows, айфонами и быстро скачивать всю информацию с одного гаджета с Android на другое. Но нужно чтобы все устройства находились в одной и той же сети Wi-Fi или точке доступа.
- Обмен файлами и различными данными – бесплатная программа Шарит передает с устройства на устройство файлы разного объема. Это может быть информация о пользователе, apk, фотографии, видео, игры, фильмы и другие приложения. Все данные передаются одинаково быстро и удобно.
- Удаленная связь с компьютером – программа SHAREit позволяет управлять некоторыми действиями компьютера с помощью смартфона или планшета. Пользователь сможет передать на экран монитора компьютера фото со своего гаджета, включить музыку через ноутбук или запустить на нем программу.
Удобство использования и дизайн Шарейт
Приложение Шарейт очень просто и имеет достаточно понятный интерфейс. Для передачи данных достаточно всего лишь выбрать нужные файлы и выбрать пользователей, после чего начнется передача данных. Очень просто можно закачать данные на компьютер или перенести всю информацию со старого смартфона или планшета на новый. Попробуйте установить русскую версию Шарит по ссылке и вы сможете передавать файлы быстро и просто.

Платный контент
Программа SHAREit полностью бесплатно. Разработчик дает установить и использовать программу для прямой передачи файлов, музыки, фото и других данных на русском языке и со всеми функциями совершенно бесплатно. на телефон или планшет бесплатно, без регистрации и смc.
Пользователям мобильных устройств на windows phone и IOS для передачи файлов рекомендуем версию Шарит для телефонов на IOS и WINDOWS.
Видео обзор программы Шарит
SHAREit — программа для быстрого, высокоскоростного обмена файлами по сети Wi-Fi на планшете, смартфоне на ОС Андроид. Раньше такая функция была доступна только тем, у кого прошивка MIUI пятой версии,но теперь обмен данными очень прост, и по сравнению с BlueTooth быстрее более чем в 60 раз.
SHAREit — это полезная программа для высокоскоростного обмена данными, при помощи сети Wi-Fi на телефоне или планшете на Андроид. Многие пользователи ещё помнят то время, когда делится файлами между двумя телефонами можно было лишь через невероятно медленного ИК-порт, а также через протокол Bluetooth, который хоть и быстрее ИК, но тоже очень маленькая пропускная способность, далекая от идеала.
И потому понятно, почему на всех современных смартфонах и планшетах предпочтение отдаётся беспроводной сети Wi-Fi. Принцип действия этой программы очень прост и понятен. Перенос автоматизирован полностью и от вас потребуется только «связать» устройства, указать что нужно передать: контакты, сообщения, заметки, и запустить процесс обмена. А именно: на принимающем устройстве создаётся точка доступа Wi-Fi, на которую, с другого смартфона, файлы могут передаваться просто с космической скоростью (самая быстрая скорость передачи достигнет до 20 Мбит/с и выше).
Особенности SHAREit на Android:
- обмен данными на базе Андроид;
- подходит для передачи крупных файлов;
- групповой «шаринг»;
- обменивайтесь файлами всегда и везде;
- красивый интерфейс со стилями;
- обмен самыми различными файлами: фото, видео, музыка и любой файл, содержащийся на SD-карте;
- передача осуществляется в 200 раз быстрее, чем через Bluetooth;
- возможность связаться с ПК;
- чтобы перенести данные со старого смартфона на новый воспользуйтесь функцией OneKey;
- стабильность подключения, и высокая скорость;
- простой и функциональный интерфейс;
- обмен файлами между разными устройствами;
- передать файлы очень просто всего в два шага: выбирать→связаться с другом→передача завершена;
- нет ограничений на размер и тип передаваемых данных;
- делитесь файлами так же с PC и Mac.
Скачать бесплатно SHAREit для Андроид без отправки сомнительных смс по ссылке ниже.
Источник: offlink.ru
Начала анимации. Движение шара на бильярдном столе
Постановка задачи. Требуется запрограммировать движение шара или шаров на бильярдном столе без учета трения, но с учетом упругого отражения от стенок бильярда. Границы стола — прямоугольник, без луз. (в новой редакции)
Начнем проектирование приложения с определения объектов и классов. Объектами являются бильярдный стол (пусть это будет форма) и шар(ы), для описания которых объявим класс Sharik, эти объекты взаимодействуют между собой.
Рассмотрим сначала перемещение одного шара, а затем изменим программу для N шаров.
Обсуждение будет более детальное и состоит из 7 пунктов. Продолжаем мыслить в объектах:
1. Бильярдный стол — все окно формы — Form1 (кроме заголовка). Имеет цвет — BackColor, размеры: Width – ширина, Height – высота. Графический объект — холст (для анимации) Graphics g;
2. Шар — объект со своими полями и методами. Так как их может быть более одного, создадим сразу класс (вне стандартного класса Form1) Sharik.
Шар характеризуется радиусом, цветом, местоположением на плоскости:
int radius; // радиус
int x; // координата x — левая граница шара
int y; // координата y — граница шара сверху
Напомним, что начало координат (0,0) находится в левом верхнем углу формы, ось х — горизонтальная, слева направо, ось y — вертикальная, направлена сверху вниз.
Цвет шара передадим через конструктор, используя его для задания поля — объект Кисть (Brush):
SolidBrush br; // кисть для рисования шара
Перемещение по прямой предполагает изменение каждой из координат на постоянные приращения — шаги смещения (могут быть >0, =0, <0):
int dx; // шаг смещения по x
int dy; // шаг смещения по y
При таком объявлении полей они являются закрытыми членами (private) класса по умолчанию (термин default по англ.).
3. Определим три метода класса Sharik.
Первый — конструктор, для задания характеристик шара:
public Sharik(int r, Color c, int x0, int y0, int d_x, int d_y).
Второй — для определения смещения шара на каждом такте:
public void Next().
Третий — перерисовка нового положения шара на столе:
public void Move(Graphics g),
где g — холст для рисования.
Смысл первого метода класса состоит в задании полей объекта «шар»:
public Sharik(int r, Color c, int x0, int y0, int d_x, int d_y)
Конструктор Sharik( ) обеспечивает начальное задание 6 полей объекта «шар» передачей 6 параметров. Поле br является объектом класса SolidBrush (обеспечивает сплошную заливку фигуры заданным цветом). Объявление объектов класса Brush невозможно (если хотите — попробуйте), так как он является абстрактным, но возможно объявление объектов наследуемых классов SolidBrush, TextureBrush и LinearGradientBrush.
Второй метод public void Next(), используемый для определения координат шара на каждом следующем такте рисования, казалось бы предельно прост:
x += dx;
y += dy;
что, как вы понимаете, соответствует x = x + dx; y = y + dy;
Однако, это будет правильно до тех пор, пока шар не достигнет какой-либо границы (стенки бильярдного стола).
И вот тут нам понадобится информация об объекте «форма» (Form1), который определен в другом классе :
public partial class Form1 : Form < >.
Нам будут нужно всего лишь свойства формы Width и Height. Проще всего это сделать через активную форму приложения:
Form1.ActiveForm.Width и Form1.Active.Heigth.
Проверяя условия достижения границ (с учетом размера шара), легко догадаться, что отражение от стенки будет означать просто смену знака приращения dx или dy. Тогда метод Next() может быть определен так:
// перемещение и/или отражение от стенок бильярда public void Next() < if (x >= Form1.ActiveForm.Width — 2*(radius+dx)) dx = -dx; if (x < 0) dx = -dx; x += dx; if (y >= Form1.ActiveForm.Height- SystemInformation.CaptionHeight — 2 * (radius+dy)) dy = -dy; if (y
Примечание. Если вы захотите изменять траекторию другим способом, например, по некоторой кривой, то вам придется переопределить только этот метод Next( ). Возможно, что к свойствам шара придется добавить какие-либо параметры (через конструктор Sharik( )). Тогда применяйте другие два принципа ООП: наследование и полиморфизм.
Третий метод — public void Move(Graphics g) рисует каждое новое перемещение шара:
public void Move(Graphics g) < g.Clear(Form1.BackC); Next(); // вычисление нового положения шара g.FillEllipse(br, x, y, 2 * radius, 2 * radius); >
4. Реализация движения шара
Вспомним принцип кино «24 кадра» (в секунду). Если мы с некоторой частотой будем стирать предыдущее изображение шара, и затем будем рисовать его не далеко от предыдущего места, то мы сможем получить иллюзию движения.
Для задания тактов удобно использовать невизуальный компонент timer, который находится на Панели элементов. В окне свойств для этого объекта задайте свойство Interval=40. Интервал задается в миллисекундах, это означает, что за 1 секунду произойдет 25 срабатываний таймера (вот вам и частота кадров — 25 в секунду). Тогда метод, реагирующий на событие timer1.Tick, может быть определен так:
private void timer1_Tick(object sender, EventArgs e)
5. Полное описание класса Form1 приведено ниже.
public partial class Form1 : Form < public Sharik shar; // шар Graphics g; // холст (стол) static public Color BackC = Color.Green; // цвет стола public Form1() < InitializeComponent(); this.BackColor = BackC; this.Width = 800; // длина стола this.Height = 400; // ширина стола this.DoubleBuffered = true; >// загрузка private void Form1_Load(object sender, EventArgs e) < g = this.CreateGraphics(); >// старт private void Form1_Click(object sender, EventArgs e) < shar = new Sharik(30, Color.Yellow, 5, 150, 10, 7); g.Clear(BackC); timer1.Enabled = true; // запуск таймера >// при срабатывании таймера — перемещение private void Timer1_Tick(object sender, EventArgs e) < shar.Move(g); >// при изменении размеров стола private void Form1_SizeChanged(object sender, EventArgs e) < g = this.CreateGraphics(); >> // конец описания класса
6. Полное описание класса Sharik
public class Sharik : Form1 // класс Шары < int radius; // радиус SolidBrush br; // кисть для его рисования int x; // координата x — слева int y; // координата y — сверху int dx; // шаг смещения по x int dy; // шаг смещения по y // конструктор — передача параметров шара public Sharik(int r, Color c, int x0, int y0, int d_x, int d_y) < radius = r; br = new SolidBrush(c); x = x0; y = y0; dx = d_x; dy = d_y; >// отражение от стенок public void Next() < if (x >= Form1.ActiveForm.Width — 2 * (radius + dx)) dx = -dx; if (x = Form1.ActiveForm.Height — SystemInformation.CaptionHeight — 2 * (radius+dy)) dy = -dy; if (y // перемещение public void Move(Graphics g) < g.Clear(Form1.BackC); Next(); // вычисление нового положения шара g.FillEllipse(br, x, y, 2 * radius, 2 * radius); >>
7. Последние замечания. Общая последовательность действий:
1) Создаем проект — приложение Windows Form с именем проекта, например, анимация1. Растягиваем форму до желаемых размеров.
2) Помещаем на форму таймер (timer1 класса Timer), задаем в свойствах интервал 40 (миллисекунд). Событию Tick назначаем метод обработки события timer1_Tick( ).
3) Аналогичные действия выполняем для событий Form1.Load( ) и Form1.Click( ).
4) Вставляем описания классов Form1 и Sharik, как указано выше. Не ленитесь записывать комментарии.
5) Запустите готовое приложение.
Внесите в текст изменения, анализируйте результаты и возможные ошибки.
Почти конец примера?
Зададимся вопросом, а насколько усложнится данная программа, если по бильярдному столу будет перемещаться несколько шаров: от 1 до 50 ?
Оказывается, что это сделать совсем просто. Просто нужно задать N объектов-шаров и посмотреть что получится. Это дополнение к примеру демонстрирует преимущества ООП. Нам понадобится изменить (текст файла Form1.cs приведен ниже):
1) Объекты, объявляемые в классе Form1:
public Graphics g; // холст
const int N_max = 50; // максимальное число шаров
public Sharik [] shar = new Sharik[N_max]; // объявление массива шаров
public int N = 10; // фактическое число шаров
readonly Random r = new Random(); // случайное число
SolidBrush brf; // кисть фона
Пусть максимальное число шаров — 50. Константа N_max нужна для объявления размерности массива объектов-шаров (резервируется место только для ссылок. Помним, что массив в C# является ссылочным типом). Переменной N (фактическое число шаров) присвоим пока какое-нибудь значение, например, 10. Далее придумаем, как число шаров можно менять.
Для задания массива шаров (ссылок) используем конструктор массива (третья строка) вместо объявления public Sharik shar; для одного шарика в исходном примере.
Для демонстрации анимации удобно задавать свойства шаров случайным образом, для этого пригодится переменная r класса Random.
2) Заменим в классе Sharik конструктор
Sharik(int r, Color c, int x0, int y0, int d_x, int d_y)
на конструктор
Sharik(int rch)
c одним параметром — случайным числом.
Поскольку мы будем его вызывать N раз (по числу создаваемых шаров), то этот параметр обеспечит нам гарантированное разнообразие (см. описание класса Random в справке Microsoft). По сути, мы ввели конструктор с тем же именем, но с другим (меньшим!) числом параметров. Это действие определяется в C# термином «перегрузка».
3) В класс Sharik добавим метод RandomColor(int_rch) для изменения цвета шаров. Также (через метод Random.Next( )) будем в конструкторе изменять все размеры.
4) Для задания числа шаров в верхнем левом углу формы разместим компоненты label1 (“Выберите количество шаров:») и comboBox1 (со списком возможного числа шаров, например: 1,2,3,5,7,10,15,20,50 — свойство Items «Коллекция», можете ее менять).
5) Для обработки события SelectedValueChanged (выбор позиции списка) у comboBox1 используем метод
private void ComboBox1_SelectedValueChanged( ),
с помощью которого изменяем число шаров, делаем невидимыми объекты comboBox1 и label1 и запускаем метод Form1_Click().
6) Метод Form1_Click() задает и инициализирует объекты-шары, задает их свойства, запускает таймер и очищает бильярдный стол от чего бы то на нем не было.
7) При срабатывании таймера реализуется метод Tmer1_Tick(), выполняющий те же действия: стирание, сдвиг (функция Next()), рисование — что и для одного шара, но уже в цикле для N шаров.
Вот полный текст файла Form1.cs (полезно сравнить его с файлом для одного шара, чтобы понять суть комментариев, общность и отличия):
/* Пример анимации — перемещение N бильярдных шаров (С) Рычков В.А. 2018/21 */ using System; using System.Drawing; using System.Windows.Forms; namespace анимация1 < public partial class Form1 : Form < public Graphics g; // холст const int N_max = 50; // максимальное число шаров public Sharik [] shar = new Sharik[N_max]; // объявление объектов — массив шаров public int N = 10; // фактическое число шаров Random r = new Random(); // случайное число SolidBrush brf; // конструктор формы public Form1() < InitializeComponent(); this.BackColor = Color.Green; // цвет сукна this.Width = 1700; // новая ширина стола this.Height = 800; // новая длина стола >// при загрузке формы private void Form1_Load(object sender, EventArgs e) < g = CreateGraphics(); // объект — на форме >// реакция на клик по форме private void Form1_Click(object sender, EventArgs e) < N = Convert.ToInt32(comboBox1.Text); int rch; for (int i = 0; i < N; i++) < rch=r.Next(100000); shar[i] = new Sharik(rch); >timer1.Enabled = true; // запуск таймера g.Clear(BackColor); // очистка поля от шаров brf = new SolidBrush(BackColor); > // при срабатывании таймера private void Timer1_Tick(object sender, EventArgs e) < Sharik s; // ссылка на объект класса Sharik for (int i=0; i> // изменение числа шаров private void ComboBox1_SelectedValueChanged(object sender, EventArgs e) < N = Convert.ToInt32(comboBox1.Text); comboBox1.Visible = false; label1.Visible = false; Form1_Click(sender,e); >> // класс Шары public class Sharik < public int radius; // радиус public SolidBrush br; // кисть для его рисования public int x; // координата x — слева public int y; // координата y — сверху int dx; // шаг смещения по x int dy; // шаг смещения по y // задание свойств шара public void Sharik(int rch) < Random r = new Random(rch); // для новой цепочки // случайных чисел через rch br = new SolidBrush(RandomColor(rch)); radius = r.Next(20, 50); x = r.Next(1, ClientRectangle.Width-2*radius); y = r.Next(1, ClientRectangle.Height-2*radius); dx = r.Next(10,20); dy = r.Next(8,15)-10; >// отражение от стенок бильярда public void Next() < if (x >= Form1.ActiveForm.Width-2*radius) dx = -dx; if (x = Form1.ActiveForm.Height-2*radius) dy = -dy; if (y // случайный цвет public Color RandomColor(int rch) // rch — случайное число < int r, g, b; byte[] bytes1 = new byte[3]; // массив 3 цветов Random rnd1 = new Random(rch); rnd1.NextBytes(bytes1); // генерация в массив r = Convert.ToInt16(bytes1[0]); g = Convert.ToInt16(bytes1[1]); b = Convert.ToInt16(bytes1[2]); return Color.FromArgb(r, g, b); // возврат цвета >> >
Запустите программу. Сначала выбираем количество шаров. Каждый клик на форме генерирует новый набор шаров (по цвету, размерам и динамике).
Сравните ваш результат с видеороликом: 10 шаров
Подумайте, какие недостатки есть у такой анимации, что бы вы можете изменить?
Конец примера «N шаров».
NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.
Источник: c-sharp.pro