Рубрика «C#» - 26

Здравствуйте! В этой статье хотел бы поделиться как реализовать, уничтожение врагов прыжком, как в Марио. Сам, еще учусь, так что если буду какие-нибудь полезные советы или подсказки пишите в комментарии обязательно прочту. Ну что же, после многочисленных просмотров туториалов, и прочитанных статей было найдено всего два интересных, и наверное проще всего в исполнение вариантов:

  • первый это соприкосновение точек коллайдеров,
  • второй это соприкосновение коллайдеров, когда на объект вешаются два коллайдера один отнимает жизнь у игрока, а второй уничтожает объект к которому он привязан.

Для начала напишем функцию которая будет отнимать жизнь у игрока, и необходима для обоих вариантов:

public int health = 3; 
void Hurt()
    {
        health--;
        if (health <= 0)
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }

Читать полностью »

Сразу хочу оговорится, что наш код выполняется в виртуальной среде(машине) Entity Framework которая в свою очередь исполняется на операционной системе общего назначения, поэтому говорить о какой либо точности даже в пределах 1-2 мс мы не будем. Но тем не менее попытаемся сделать все от зависящие, чтобы увеличить временную точность.

Зачастую в нашей программе, возникает необходимость обновление какой-либо информации c определенным временным интервалом. В моем случаи это было обновление снапшотов (изображений) с ip камер. Зачастую бизнес логика приложения устанавливает перед нами определенные ограничения частоты обновления данных. Для это время составляет 1 секунда.
Решение в лоб — это установить Thread.Sleep(1000)/Task.Await(1000) после запроса снапшота.

static void Getsnapshot()
{
  var rnd = new Random()
  var sleepMs = rnd.Next(0, 1000);
  Console.WriteLine($"[{DateTime.Now.ToString("mm:ss.ff")}] DoSomethink {sleepMs} ms");
  Thread.Sleep(sleepMs);
}

while (true)
{
  Getsnapshot();
  Thread.Sleep(1000);
}

Но срок выполнения нашей операции — недетерминированная величина. Поэтому имитация взятия снапшота выглядит примерно так:
Читать полностью »

Совсем скоро, 29-30 ноября в Санкт-Петербурге и 06-07 декабря — в Москве мы запустим шестой семинар по .NET. На этот раз — по теме многопоточки и конкурентности. Мы уже писали об этом пару раз на Хабре, но сегодня есть отдельный повод для этого: на семинаре настоящий эксклюзив. Будет описана работа гибридного примитива синхронизации: Monitor. Да, всем привычная вещица достойна отдельного доклада. Ведь он в своей работе учитывает и частоту процессора и количество ядер, учитывает lock convoy/starvation и вообще, очень сложен.

А в конце статьи развлечения ради предложу пройти парочку QUIZов по многопоточке.

Недостаточно знать, что такое Mutex, Semaphore и async-await. Надо знать всё, начиная с квантов - 1

Читать полностью »

Рисунок 2

OpenCV — библиотека алгоритмов компьютерного зрения, обработки изображений и численных алгоритмов общего назначения с открытым кодом, знакомая многим разработчикам на C++. Помимо C++, OpenCV также разрабатывается для Python, Java, Ruby, Matlab, Lua и других языков. Так как среди этих языков нет моего основного, C#, то я решила обратить внимание на OpenCvSharp — wrapper библиотеки под C# и проверить этот проект. Что же из этого вышло, можно узнать в данной статье.
Читать полностью »

image

Всем привет!
Последние годы я занимаюсь разработкой под Андроид на Котлине. Не так давно, за неимением RxJava на Kotlin multiplatform, мы начали использовать корутины и flow – холодные стримы для Котлина из коробки. До Андроида я много лет провёл с C#, и там свои корутины есть уже очень давно, только их там так называть не принято. Но вот про аналог flow на async/await я не слышал. Основной инструмент для реактивного программирования – Rx.Net (собственно, здесь rx и родился). Вот я и решил поностальгировать и попробовать напилить велосипед.

Далее подразумевается, что читатель имеет представление о штуках, про которые говорилось в предыдущем абзаце. Для нетерпеливых — сразу ссылка на репозиторий:
https://github.com/ILAgent/flowsharp

Дисклеймер: данный код не претендует на использование в продакшене. Это — концепт, не более того. Что-то может работать не совсем так, как задумывалось.

Читать полностью »

Обзор программы DotNext 2019 Moscow: кто и о чём расскажет? - 1

Порой не понимаешь, интересна ли тебе новая конференция: открываешь сайт, а там сорок докладов, и глаза разбегаются. Это что же, надо вдумчиво пройти по сорока страницам с описаниями? А если на сайте ещё и раздел «воркшопы», о них что знать нужно?

Чтобы помочь хабравчанам, про грядущий московский DotNext (6-7 ноября) мы сделали единый текст, разделив доклады на несколько блоков — так можно понять быстрее.

И заодно сослались на видеозаписи некоторых прошлых докладов тех же спикеров: так можно и понять заранее, нравятся ли они как ораторы, и узнать что-то полезное.
Читать полностью »

Перевод статьи подготовлен специально для студентов курса «Разработчик С#».

Делегаты и события в C# - 1


Что такое события в C#?

Событие может быть использовано для предоставления уведомлений. Вы можете подписаться на событие, если вам нужны эти уведомления. Вы также можете создавать свои собственные события, которые будут уведомлять вас о том, что случилось что-то, что вас интересует. .NET Framework предлагает встроенные типы, которые можно использовать для создания событий. Используя делегаты, лямбда-выражения и анонимные методы, вы можете создавать и использовать события удобным способом.Читать полностью »

Распознаём дату и время в естественной речи - 1

Задача

Привет! Увлёкся я навыками для Алисы и стал думать, какую пользу они бы могли принести. На площадке много разных прикольных игр (в том числе мои), но вот захотелось сделать рабочий инструмент, который действительно нужен в голосовом исполнении, а не просто копирует существующего чат-бота с кнопками.

Голос актуален тогда, когда либо руки заняты, либо нужно выполнять много последовательных операций, особенно на экране телефона. Так возникла идея навыка, который по одной команде выделяет из текста указание на дату и время и добавляет событие с этим текстом в Google Calendar. Например, если пользователь скажет Послезавтра в 11 вечера будет красивый закат, то в календарь на послезавтра в 23:00 уходит строка Будет красивый закат.

Под катом описание алгоритма работы библиотеки Hors: распознавателя даты и времени в естественной русской речи. Хорс — это славянский бог солнца.

Github | NuGet

Читать полностью »

Хостим в облаке вебсайт с гостевой книгой бесплатно

В наше время развернуть свой домен первого уровня в облаке можно бесплатно. Не знаете как? Читайте дальше.

Предлагаю вам разобрать то, как можно создать гостевую книгу на ASP.NET Core (с reCAPTCHA) и захостить ее бесплатно на довольно известном облачном хостинге (да, с ограничениями, но для персонального вебсайта с не особо большим трафиком годится вполне)

Читать полностью »

CLRium #6: Concurrency & Parallelism. Два дня: от процессора до async-await - 1

Совсем скоро, 29-30 ноября в Санкт-Петербурге и 06-07 декабря — в Москве мы запустим шестой семинар по .NET. В рамках семинара мы полным ходом изучаем вопросы многопоточности, которые на самом деле очень и очень сложны. Программа немного меняется, но получается очень хардкорной для вас и волнительной — для нас. Я расширил описание уровня ОС до трёх слотов: теперь там можно будет почерпнуть:

  • Кванты времени, их длину, выбор их длины, изменение настроек системы так, чтобы выбрать длину квантов времени
  • Динамическое повышение приоритетов потоков и длин квантов в зависимости от разных условий: от признака нахождения окна на переднем плане до освобождения блокировок
  • Разработка собственного планировщика UMS потоков

и многое другое. Кофе будет много.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js