Сообщество - ИТ-проекты пикабушников

ИТ-проекты пикабушников

592 поста 3 428 подписчиков

Популярные теги в сообществе:

Рыба моей мечты #6 Нет предела совершенству

(Язык Программирования - Аперо, создаём на пару с товарищем. Есть желающие освоить?)


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

Теперь мы добавили в него 6-ых новых монстров и вот что изменилось.

Наш код закономерно начал расти. И теперь, нам предстоит понять - где мы допустили ошибку и быстро исправить её. Не буду томить, проблема в 4-ой строчке кода. Представьте что случится, если мы расширим Массив1 до 100 значений? Не порядок. Код -> https://disk.yandex.ru/d/B3QJVMiWlqXYdQ

Считаю, что работа проделана успешно. Добавив ещё одну переменную Счёт, мы избавились от всего этого лишнего нагромождения кода. Пока мы бьём, переменная Счёт=2. Как только здоровье монстра опускается до единицы, мы приравниваем Счёт=1. А нажатием на кнопку Бить, делаем (локальную) переменную Выбор равной единице. Затем срабатывает условие 4-ой строки кода \ЕСЛИ (Выбор=Счёт) \ТО и Имя монстра, его жизни и их кол-во увеличивается.

Теперь осталась лишь одна зависимость от имени (в 10-й строчке кода). Здесь мы пишем Имя последнего Монстра, на котором игрок пойдёт на второй круг. Но и эту оплошность (недоработку) можно исправить, пишите свои варианты в комментариях (как именно).

Плюс к этому, в последней (12-ой) строчке кода была добавлена дебаг-панель для выявления ошибок. Очень полезная штука, рекомендую каждому проводить данную практику на постоянной основе. Так легче понять, где может быть просчёт в коде.

Каким образом можно оптимизировать код всего в одну строчку? - оставлю этот вопрос на рассмотрение читателя. Решение искать здесь -> https://apero.ru/Документация А вот и сам код -> https://disk.yandex.ru/d/qc-ZnGcdqP0s8w

Дополним наши "Петушиные Разборки" (из 4-ой статьи) новым кодом. Теперь кнопку для каждого удара нажимать не обязательно (её просто нету). Каждый удар Петуха будет происходить по таймеру раз в 3 секунды. Весь секрет в том, что мы объявляем сразу две локации. Одна из них Битва, вторая Битва(Выбор) с локальной переменной. Таймер сам по себе не умеет работать с локациями второго типа (с выбором локальных переменных). Поэтому данный трюк жизненно необходим, чтобы преодолеть это ограничение. (очень важно, в документации этого нет)

Добавлено условие победы, жизнь одного из Петухов должна уменьшиться ниже 1. Если здоровье обоих упадёт ниже нуля, то появится сообщение - что они оба проиграли и игра автоматически (по-таймеру) перезапустится заново через 10 секунд. Код -> https://disk.yandex.ru/d/R3WRLFKl1YK3YA

Вновь вернёмся примеру из 4-ой статьи. Какие отличия (от Петухов) мы здесь видим? - Помимо самых основных Жизней и Урона, добавились Броня и SP (Спец Способность). Для реализации SP мы будем тупо вести подсчёт ходов. Спец Способности вводят в игру новые механики боя. Абаддон атакует дважды. Титан игнорирует броню цели. Некрофос выжигает аурой ХП. Футмен слаб, но имеет бафф брони. Если вам интересен сам принцип работы (и его реализация), поиграть и посмотреть код можно здесь -> https://apero.ru/Текстовые-игры/Arepo-Auto-Chess

Давайте, перед тем как идти дальше, устроим краткий ликбез. Что такое Массив? - Это в первую очередь переменная, содержащая в себе ещё одну переменную(, и более). Количество переменных в Массиве не ограничено. Из Массива можно как извлекать данные, так и записывать туда их. Код -> https://disk.yandex.ru/d/9dwwdhsHJQx6fw

ЦИКЛ это условие, (чаще) требующее многократного повторения до тех пор, пока не будет выполнено. \ЦИКЛ (икс<5) \СДЕЛАТЬ \(икс) [br] \(икс=икс+1) Пример самого примитивного цикла, где [br] это разрыв строки. Ответ: 1 2 3 4

Очередная реализация битвы (через таймер). Данный код уже по-сложнее. Для удобства разбил его на блоки. Код Игры -> https://disk.yandex.ru/d/fnGp8bJDlPrUZQ Начнём по-порядку:

Блок1 содержит только массивы Врагов и наших Героев. Каждый Массив содержит 4-5 переменных, которые включают -> Имя / Жизни / Броню / Урон / Умение.

Блок2 выводит Игроку сообщение для выбора героев.

Блок3 присваиваем значения из Массива -> Имя / Жизни / Броню / Урон / Умение, исходя из выбранного нами Героя. Кол-во героев не ограничено!

Блок4 каждый раз выставляет против нас нового Моба, если старый умирает.

Блок5 содержит способности наших Героев и проверяет, когда их можно активировать (на каком ходу) или если это баффы, то сколько они будут действовать.

Блок6 производит расчёты и выводит на экран сообщение о битве (с таймером в 3 сек)

Блок7 определяет, с какого блока начать - с 3-го (если жизни Моба близки к нулю) или с 4-го (если всё в порядке).

Добавление же новых Героев и Мобов осуществляется путём редактирования Блока1, Блока2 (для выбора) и Блока5 (для их умений). Код -> https://disk.yandex.ru/d/4fiZnUFnixUzxg Покажу на практике:

Если у тебя возникнут вопросы, то на сайте есть подробная документация (как надо работать с кодом) -> https://apero.ru/Документация . Новичкам всегда готовы помочь старожилы проекта. А именно:

1) Александр -> https://vk.com/san90

2) Михаил -> https://vk.com/stalkersleem

3) Дмитрий -> https://vk.com/drkcrwn

4) Михаил2 -> https://vk.com/id17130734

5) Пашка Какашка -> https://vk.com/glumpa

Показать полностью 20
0

Clubhouse на минималках

Всем привет.

Все уже наслышаны о новомодном приложении для общения голосом. Ключевое слово здесь «голосом». А что делать тем, кто адекватный не любит в голос?


И вот однажды за обсуждением данного вопроса, у моего друга появилась идея. Сделать подобный сервис, но для общения буковками. Вроде бы раньше что-то такое было... ну да ладно.

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


Идея понравилась, закрутилась и понеслась.


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


1) Вписать свое имя, нажать кнопку «случайная комната» и попасть в комнату созданную из случайных собеседников.


2) Вписать свое имя, выбрать интересы из предложенных, выбрать размер комнаты (6, 18 или 30 участников) и начать общаться.

Clubhouse на минималках

На данном этапе реализован минимум функций, есть эмодзи, можно ответить на сообщение пользователя. В дальнейшем, планируется ещё множество фишек, но об этом позже. Пройдено нагрузочное и альфа тестирование и мы готовы выходить на beta test. Тест без пользователя - такая себе идея. Мы решили написать на Пикабу, что бы привлечь хотя бы немного пользователей и получить обратную связь.


Мы это команда из 2 бедных самостоятельных разработчиков, для нас на данный момент важен ответ на 2 вопроса:


1) На сколько данный проект окажется интересен аудитории.

2) Стоит ли тратить свое время и деньги и продолжать разработку.


У нашего сервиса нет никакой монетизации и рекламы и кажется, не будет нарушением правил, если я оставлю ссылку на наш проект.


https://rooming.app


Будем благодарны за ваше мнение о сервисе и конструктивную критику в комментариях.

Показать полностью 1
25

Как я почти сделал крутой сайт с отзывами1

Привет, Пикабу! В рамках давно забытой рубрики пятничное моё, перед тем, как похоронить один из своих проектов, хочу рассказать о нём вам.


UPD: получилось длинноватое предисловие, ЛЛ может скролить к абзацу К сути!


Идея пришла в тот момент, когда я выбирал очередную единицу бытовой техники. Как всегда, куча положительных отзывов, но вот только написаны они как-то очень похоже, в едином стиле, и с аккаунтов, имеющих только один отзыв. Так я понял, что отзывы бывают накрученными)


Спустя какое-то время, искал какие-то услуги на картах. Там отзывы выглядят правдоподобнее, да и аккаунты более реальными. Но настороженность осталась. Полез в гугл, и нашёл вот что. Я конечно догадывался, что такое бывает, но одно дело догадываться, другое дело видеть своими глазами)

Так я понял, что отзывам не стоит верить никаким. Вообще. Отрицательные отзывы тоже не всегда показательны, ведь их бывает пишут конкуренты или яжматери. Кстати, в последнее время выработалась привычка пропускать отзывы, в которых упоминаются дети)

Получается, если и можно доверять отзывам и рекомендациям, то пусть это будут отзывы друзей и родственников. Тоже не гарантия, конечно, может твоей тёте Глаше из Мухосранска и понравилось кафе Русалка, не факт, что тебе оно тоже понравится) но в целом, своему кругу общения ты доверяешь, ведь обычно люди одного социального уровня.

К сути!

Я запилил сайт с отзывами, на котором ты в первую очередь видишь отзывы своих друзей и друзей друзей. К сожалению, друзья подгружаются из полудохлой соц. сети ВК. Было бы гораздо круче, если бы показывались отзывы тех, на кого ты подписан в инстаграме, но инстаграм жадина и не даёт доступа к списку подписок для сторонних сервисов.


Выглядит сайт вот так (я не дизайнер и сайты рисовать не умею, сильно не кидайтесь помидорами). Логотип подтёр со скриншота, не хочу быть удалённым за рекламу.

Без авторизации список отзывов, например, о Сушишопе, выглядит вот так:

Но если войти на сайт с помощью ВК, то на первом месте покажутся отзывы ваших друзей, затем отзывы друзей друзей, а потом уже все остальные:

Как обязывает формат пятничного моё, расскажу немного из внутренностей. На скриншоте можно заметить 7585 отзывов на сайте о Сушишопе. К сожалению, эти отзывы не были оставлены на моём сайте, это отзывы, оставленные в группе Сушишопа ВК. Я нашёл группы вконтакте, у которых есть обсуждения с отзывами, скачал оттуда посты и добавил себе на сайт. Наверное, это не очень правильно, и от этого хотелось бы уйти, но на первое время неплохой старт) Из этого также следует то, что эти все отзывы идут без оценки (рекомендую/не рекомендую), а также там есть сообщения, которые скорее просто вопросы, чем отзывы. При желании, можно было бы загрузить все эти отзывы в какую-нибудь Толоку, но желания уже особо нет.

Почему я хочу похоронить проект? Потому, что я тупо не знаю, как его дальше развивать)) Я программист, но не маркетолог и понятия не имею, как развивать проект на начальном этапе. Могу только фантазировать, каким крутым его можно было бы сделать, имея большую аудиторию)


Например, открывается парикмахерская, про неё нет никаких отзывов. Ты идёшь туда, стрижёшься, оставляешь отзыв, и все твои друзья и друзья друзей видят, что тебе там понравилось, и это намного круче, чем 50 возможно фейковых отзывов.

Или хочешь отметить ДР, выбираешь категорию рестораны и видишь кто из твоих знакомых где был, кому где понравилось или нет.

Есть ещё идея добавить возможность оставлять отзыв анонимно. Например, на товары для взрослых или проктологов. Чтобы ты точно знал, что это кто-то из твоих знакомых, но при этом не знал, кто именно. Такой отзыв бы показывался, только если у тебя, например, больше 100 друзей, и даже если ты удаляешь автора отзыва из друзей, этот отзыв не перестаёт тебе показываться, таким образом, нельзя будет вычислить автора.

Спасибо за внимание, готов уворачиваться от минусов и тухлых помидоров, и наконец-то, перестать отваливать каждый месяц бабки за хостинг)

Показать полностью 4

Экспериментальный проект в Minecraft

Всем привет. Всегда хотел на основе Minecraft сделать долгоиграющий проект, с историей и возможным развитием.

1d1b - One Day One Block

Расширение  радиуса игровой зоны на один блок, раз в (реальный) день.

Скрин первого дня (зона 2х2):

Экспериментальный проект в Minecraft

Главный интерес пронаблюдать за возможной корреляционной зависимостью дефицита ресурсов.


Реализовано все в автоматическом режиме, ничего специфичного и сложного, раз в день прибавляется значение радиуса.
Готов сообщать об интересных событиях и новостях, если зайдет.

Показать полностью 1
26

Dell? Нет, Xbox 360!)))

Всем привет!
Печально конечно, что мой предыдущий пост о сборке интересного компа не зашёл от слова «совсем», ну да хрен с ним, не «топом» едины))) Так вот, нашёл я в «закромах» старый системик, совсем старый и древний, аж на слезу пробило (олдфаги, спокойно, не ваш случай))) ) и так, оно есть Dell OptiPlex GX260. И смотря на это чудо, у меня возникло стойкое чувство, что Xbox 360 рисовали именно с этого компа.... Может я конечно плохо вижу, не могу исключить данный факт полностью, я уже старый и слепой) Но мне вдруг захотелось поиграть в «моддинг» и построить проект Dell Xbox series GX и вытянуть производительность данной коробки на уровень Xbox ONE X (не X series, который только вышел, если что).... Как-то так, в общем. В следующей серии подбор компонентов. Не новых, бюджетных...

Картинка из интернета. Собственно сам Xbox 360

Показать полностью 6
39

Делаю планшет на Linux #0: мотивация

Мой старый планшет на Android сломался. Как-то так (проездной для масштаба):

Это был древний планшет на Android 4.2. К счастью, я недавно купил для своей жены новый телефон на Android 10, и был немного обескуражен - у телефона совершенно запутанный интерфейс.

Пока я пользовался телефоном жены, у меня сложилось впечатление, что новый  Android создан для того, чтобы пользователи как можно меньше могли влиять на что-то в своём телефоне, у меня возникло ощущение, что интерфейс и операционной системы, и многих популярных приложений создан для того, чтобы люди как можно больше потребляли контента, и как можно меньше пытались понимать происходящее. Мне же нужен инструмент для эффективной работы с информацией.

С другой стороны Apple iPad показался мне отличным выбором, но мне не нравилась закрытость платформы. Поэтому было решено сформулировать требования для своего планшета и попытаться его создать.


Итак, требования:

1. Эффективная система защиты информации. Вы когда-нибудь задумывались, что система защиты информации в Android немного неэффективна? Пользователь хочет ограничить доступ к определенным данным, но вынужден блокировать доступ приложениям. Хотим защищать данные, но ограничиваем приложения, почему бы не защищать сами данные? Эту проблему я хочу решить с использованием системы защиты на основе CBAC (Category-Based Access Control).

2. Эффективная система хранения данных. Мне кажется странным, что до сих пор распространены иерархические файловые системы. Взять, к примеру, некое фото. Фото было сделано в Москве в 2018 году, на нём изображена семья. Фото кладётся в папку Moscow/2018/family. Проблема возникает, когда мы пытаемся вспомнить, куда положили это фото. Мы помним ключевые слова "Moscow", "family", "2018", но вспомнить порядок вложенности папок бывает очень сложно, особенно если у вас, к примеру, есть одновременно пути family/Moscow/2018 и Moscow/family/2018. Проблему можно решить теговыми файловыми системами, когда для доступа к файлу, вам нужно просто перечислить нужные категории в любом порядке.

3. Системы поддержки работы с информацией. До сих пор не очень распространены эффективные AI-помощники (без онлайн доступа), системы распознавания текста (без онлайн доступа), системы голосового и перьевого ввода и системы создания бэкапов информации.

4. Открытость кода. Тут всё просто, я считаю, что код должен быть открыт, чтобы каждый мог увидеть, что происходит с его информацией.

5. Интуитивный пользовательский интерфейс. Здесь я бы хотел, чтобы пользователю было легко понять, как сделать то или иное действие - закрыть приложение, скопировать текст, ограничить права приложения и т.д. Много эффективных решений можно позаимствовать в том числе из старых OS, таких как BeOS или PalmOS.


Техническая база.

Итак, для того, чтобы начать что-то делать, я закупил/раздобыл некоторые компоненты. За основу планшета я решил взять плату PICO-PI-8M на основе процессора i.MX8M. Процессор является одной из наиболее открытых платформ из доступных на рынке.

На картинке он посередине между RPi2 и Beagleboard-x15. Дисплей я выбрал размером примерно в десять дюймов:

Дисплей такого размера нужен был для того, чтобы можно было легко работать с информацией. К сожалению, через один день дисплей перестал работать (в отзывах на амазон некоторые тоже жаловались на это). Поэтому придётся искать новый дисплей, а пока работать с виртуальной машиной.


Планирую раз в месяц выкладывать посты-отчёты. Буду рад вашим идеям и комментариям.

Наша группа вк об открытом ПО: https://vk.com/linux_spo

Показать полностью 3

Сборка ПК под Cyberpunk 2077. Ну и не только... наверное)

Если кратко, попросили собрать комп, ограничений в финансах нет) совсем нет...
В сборку вошли

Процессор Intel Core i9-10920X (BX8069510920X)
Материнская плата ASUS ROG Strix X299-E Gaming II
Оперативная память Corsair 64 GB (4x16GB) DDR4 3200 MHz Dominator Platinum RGB (CMT64GX4M4C3200C16)
Видеокарта Palit GeForce RTX 3090 GameRock OC (NED3090H19SB-1021G)
SSD накопитель Samsung 970 EVO Plus 1 TB (MZ-V7S1T0BW)
SSD накопитель Samsung 860 PRO 4 TB (MZ-76P4T0BW)
Водяное охлаждение ASUS ROG Ryujin 360 (ROG-RYUJIN-360)
Корпус ASUS ROG Strix Helios
Блок питания ASUS ROG-THOR-1200P

Итоговый бюджет 6200$

Как-то так)

Показать полностью 8 2
6

Аналог Punto Switcher на Android

Если у Вас телефон или планшет с клавиатурой (кнопочками, привет из прошлого) или вы гуглили ‘Punto Switcher на Android’, то Вам сюда.


Пост этот можно рассматривать как отчёт о проделанной за полгода работе.


Вкратце содержимое первого поста-знакомства, в котором я рассказываю о программе и зачем мне это нужно:

-  Не все пользуются только наэкранной клавиатурой на Android. Некоторые печатают на внешней;
-  Android не показывает, на каком языке идёт печать (обычно и не нужно, но... см. пункт 1).

Соответственно, хотелось бы иметь такие возможности:

-  Видеть, какой язык сейчас выбран;
-  Быстро исправить текст в неправильной раскладке (‘Ghbdtn’ на ‘Привет’);
-  Как плюс, чтобы исправление срабатывало автоматически во время печатания.
И Text Layout Tools объединяет в себе эти три пункта.

А теперь перейдём к изменениям относительно прошлой версии TLT.

1. Исключения

Как и обещал, сделал список программ, в которых автоисправление отключено. Дополнительно можно вообще отключить обработку текста.

2. Сохранение и восстановление настроек

Первое правило админа – делай бэкап. При переходе на другое устройство теперь можно не вспоминать, какие галочки выставлены в настройках.

3. Проверка обновлений

Чтобы своевременно получать обновления и исправления, можно разрешить программе самой проверять новые версии. Если же вы хотите полной власти, то всегда можно проверить вручную.

4. Статистика

Пусть и не очень полезно, но забавно иногда посмотреть, сколько раз пригодилась программа.

5. Темы

Куда же без тем в наше время. Их пока немного, но могу сделать больше. Особенно, если найдётся дизайнер.

6. Некоторые доработки и исправления ‘под капотом’

Чтобы памяти уходило меньше, и работа была быстрее.

Если Вы по каким-то причинам пропустили прошлый пост и не следите за обсуждением TLT, то сейчас самое время, чтобы обновиться.

Если же Вы в курсе происходящего – жду критики и рацпредложений.


Автор я, исходники открыты.

Спасибо за внимание!


Ссылка на исходный код: Github

Скачать программу можно вот тут или написав мне.

Показать полностью 5
Отличная работа, все прочитано!