[/a/] [/b/] [/c/] [/e/] [/f/] [/m/] [/p/] [/t/] - [Домой] [NIC] [SSL] - [Управление]

[Вернуться к доске]
Постинг ответа
Leave these fields empty (spam trap):
Имя
Ссылка
Тема
Комментарий
Файл Еще файл
Или рандом
Файл 2 Еще файл
Файл 3
Каптча
Пароль (для удаления постов и картинок, а также редактирования)

155665 No.11601   [] []

Hello World! Тред для тех, кто в той или иной мере интересуется программированием. Здесь можно обсудить любой язык программирования, библиотеку, фреймворк или среду разработки, поделиться своим кодом, спросить совет или обменяться опытом.

>> No.11602   [] []

>>11601
Даже не знаю, чего писать сходу. У тебя самого какой опыт?

>> No.11603   []
[]

Хотя вот хотел спросить: почему говорят будто Unix лучше для программирования, чем та же винда? Там утилиты есть какие-то полезные или что?

>> No.11604   []
[]

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

>> No.11605   []
[]
0

>>11604
Про то, что лучше в качестве сервера, я тоже слышал, но вроде и в общем говорят лучше для программирования. Хотя может это просто потому что там меньше gui и командная строка более продвинутая(наверное), чёрт его знает. Самому попробовать побаловаться на виртуалке, что ли.

>> No.11606   []
[]

>>11603
На правах кукаретика заявлю, что скорее всего дело в том, что линух предоставляет больше возможностей для подстраивания системы под себя и свои хотелки. Ну и чисто на эстетическом уровне кому-то приятнее периться в консольку, настроить там менеджеры пакетов и сидеть обмазываться этим. Сама среда располагает под постоянное дрочилово с чем-нибудь.

>> No.11607   []
[]

>>11606

>больше возможностей для подстраивания системы под себя

Какие, например?

>> No.11608   []
[]
0

привет я теперь могу двигать этаво дядю в разныи стораны я типерь магу называть сибя праграмистам м
что скажыте
https://gaycasino.neocities.org/casino.html

>> No.11609   []
[]
0

>>11608
Скажу, что давно пора было там что-то изменить. К примеру, движение к кнопкам привязать и избавиться от лишних магических чисел.

>> No.11610   []
[]
0

Я думал, что просто играться с канвасом через жс будет легче. Но нет, не легче. Даже там я успел найти себе геморрой.

>> No.11611   []
[]

>>11610
В чём проблема-то?

>> No.11612   []
[]
0

>>11611
Хочу затемнять картинку, этакий рукотворный фейдер сделать, но нет хорошего удобного метода для этого. Все, что я нашел, это изменение фил стайла с присвоением ему строки вида rgba(x,y,z,a), где a - альфа. Я хочу через реквест анимейшн фрейм изменять это а от 1 до 0 на 0.1 каждые 100ms, но я тупой лох и не умею работать со строками. Сейчас думаю, как с помощью split и replace менять это a.

А вообще, я никогда ничего серьезного не писал, поэтому меня берет ужас будущая структура. Не знаю, как я это организую. Думал, сейчас быстро классы подучу, смогу что-то сделать, но нет, жс не с++, тут как-то по другому все.

>> No.11613   []
[]

>>11611
Если что, затемняю я не саму картинку, а нарисованный прямоугольник поверх картинки. Не придумал ничего умнее.

>> No.11614   []
[]

>>11612
Пишут, что надо менять globalAlpha контекста. Там поди ничего сложного. Поменял перед тем, как рисуешь, потом обратно перевёл, если надо.

>Думал, сейчас быстро классы подучу, смогу что-то сделать, но нет, жс не с++

Классов в js нет, если что. Только объекты. И да, работает это всё иначе.

>> No.11615   []
[]

>>11614
Да, но глобал альфа осветляет картинку, а не затемняет. Типа, если он 1, то все белое, если 0, то как обычная картинка. Я не понял, как это в надлежащий вид привести.

>> No.11616   []
[]

>>11615
Ну вот для яркости тоже есть:
ctx.filter = "brightness(50%)"; Меняешь до нуля - становится чёрным.

>> No.11617   []
[]

>>11616
О, найс. Сейчас бы до вечера ебланил.

>> No.11618   []
[]

>>11616
Хотя не, это не отменяет ебли с анимацией фейдера и вытаскиванием чисел из строки с подстановкой их под свои.

>> No.11619   []
[]

>>11617
Хотя он поддерживается как-то хуёво. Рисование сверху - не такой уж плохой способ, можно будет любым цветом покрасить. Можно ещё написать функцию, чтобы вручную по пикселям пройтись и затемнить. Но там уже надо будет читать про то, как цвета менять, если фон не чёрный. Хотя для смены яркости будет легко сделать.

>> No.11620   []
[]

>>11618
Зачем тебе их вытаскивать? Просто заново каждый раз пиши ctx.filter = "brightness(" + value + ")"; Там похуй, ты же просто строку посылаешь.

>> No.11621   []
[]
0

>>11620
Я не додумался до + value +. Это и было тем сложным решением, которое я искал.

>> No.11622   []
[]

>>11620
Там ещё процент в конце, сама переменная число просто, но ты понял поди.

>> No.11623   []
[]

>>11622
Та я сделал вот
ctx.filter = "brightness("+ fader +"%)";

>> No.11624   []
[]
0

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

>> No.11625   []
[]

>>11624
Пока что ничего умнее того, чтобы вручную каждую картинку прописывать, я не придумал. А так я пытаюсь сейчас визуальную новеллу делать, где следующая сцена, там следующая картинка и новое обновление. Ну посмотрим, я пока слабо понимаю сам, как это будет выглядеть.

>> No.11626   []
[]

>>11625
Кстати, элемент держать на странице не обязательно, можно просто сделать var image = new Image(); image.src="gomogay.jpg";
Если надо будет много изображений, я бы сделал массив с url и массив с объектами.

>> No.11627   []
[]

>>11626
Да, здорово. Это тоже облегчит мне жизнь.

>> No.11628   []
[]
14355

>>11626
Почему-то ругается на точку

>> No.11630   []
[]

Потому что ты среди объявлений переменных это поставил.

>> No.11636   []
[]

>>11601

> Тред для тех, кто в той или иной мере интересуется программированием.

Господи, наконец-то!

> Здесь можно обсудить любой язык программирования

Not this shit again...

>> No.11637   []
[]

>>11603
А ты возьми и сам попробуй. И поймешь, почему.

>> No.11802   []
[]
81143

Кто-нибудь продолжает использовать neocities или я тут один такой дурачок?

>> No.11807   []
[]

>>11802
Я в первый раз слышу. Да хости где хочешь, какая разница?

>> No.11809   []
[]
84097

>>11807
Там нельзя хостить звуковые файлы без платных подписок. И удаленно если файл указать, тоже проигрывать не будет, насколько я понял.

>> No.11810   []
[]
0

>>11802
У меня свой сервер для таких мелочей.

>> No.11811   []
[]

>>11809
Я бы на твоём месте делал локально всё, а хостингом уже потом озадачился в зависимости от того, что потребуется.

>> No.11812   []
[]
43495

>>11810
Ты крутой, не спорю. Вот бы мне стать таким же крутым, как и ты.

>> No.11814   []
[]

>>11811
Так и делаю пока. Просто хотелось показывать, что я успел наделать за это время.

>> No.11815   []
[]
51154

>>11812
Собираешь компьютер из старого хлама и относишь к другу с постоянным белым IP, вот и все.

>> No.11816   []
[]
71009

>>11815
Этот друг - Jerboa?

>> No.11830   []
[]
0

Продвинулся чуть дальше, но все равно крайне сильно мудалействую и иду весьма медленно. Программировать так сложно.

>> No.11831   []
[]

>>11830
Что нового сделал?

>> No.11832   []
[]

>>11815
Не обязательно постоянным, есть всякие no-ip.

>> No.11833   []
[]

>>11831
Пока что только приблизительно разобрался с тем, как организовать переход между сценами (сценой я называю каждую новую фоновую картинку + действия, на ней происходящие), фейдер вынес в отдельную функцию для того, чтобы юзать его с каждой новой сценой. Сейчас разбираюсь с тем, как лучше сделать отступы от помещенного на рамку текста (рамкой выступает отрисованный рект). Потом буду разбираться с таймерами, для меня это сложнее всего. Все эти setInterval и setTimeout - все не то. Придется делать свой, как я понял, либо на основе performance.now, либо там еще какой-то timer можно передавать функцию, который явно нигде не объявляется, но откуда-то он есть, я так и не понял, откуда.

>> No.11834   []
[]

>>11833

>Потом буду разбираться с таймерами, для меня это сложнее всего. Все эти setInterval и setTimeout - все не то. Придется делать свой

Что с ними не так? Что тебе сделать надо?

>еще какой-то timer можно передавать функцию, который явно нигде не объявляется, но откуда-то он есть, я так и не понял, откуда.

Этого не понял, ты о чём?

>> No.11835   []
[]

>>11833
Это ты про свою новеллу рассказываешь?

>> No.11836   []
[]

>>11834

>Что с ними не так?

Скорее всего дело в моей криворукости и глупости, но пока что я не могу сделать так, как мне нужно. И еще джаваскрипт, как я понял, работает асинхронно, а не так, как я привык, когда все выполняется последовательно команда за командой. Если мешать между собой выполнение requestAnimationFrame и любой из выше обозначенных таймеров, то могут происходить различные несостыковки, если пользователь, к примеру, на время перешел в другую вкладку. Команды, поставленные в setTimeout или setInterval будут работать, тогда как то, что в requestAnimationFrame будет ждать переключение на вкладку обратно. Кроме того, насколько я мог узнать из обрывочных крупиц информации, пока интересовался темой, те два таймера сильно нагружают память, так что лучше обходится без них.

>Что тебе сделать надо?

Та много чего. От таймера будет зависеть время между сценами, диалогами, анимацией на экране.

>Этого не понял, ты о чём?

Я сам не знаю, о чем я, но глянь в последний блок кода на страничке: http://qaru.site/questions/11804715/use-js-countdown-timer-in-canvas-with-requestanimationframe, там в параметры функции update передается некий timer, объявления которого я нигде не увидел и не могу понять, откуда он взялся. Также этот timer я видел в одном из уроков по написанию тетриса https://youtu.be/H2aW5V46khA?t=560 (время 9:20), он передает time в update, но не объявляет его через var и нигде не указывает ранее. Я не понимаю, как это работает.
>>11835
Ага.

>> No.11837   []
[]
0

>>11816
С какой целью интересуетесь?

>> No.11838   []
[]
0

>>11837
Буду звать его Жыроба.

>> No.11839   []
[]

>>11836

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

Тут уже сложнее что-то посоветовать, не видя кода/не имплементируя самому. Надо как-нибудь попробовать сделать чего подобного. Одно понятно, что таймеры мешать не надо. Явно лучше просто доставать время с помощью того же requestAnimationFrame.

>джаваскрипт, как я понял, работает асинхронно

В случае с т.н. callback, как в setTimeout или ajax - да.

>в параметры функции update передается некий timer, объявления которого я нигде не увидел

Там немного неочевидно, но ничего сверхъестественного. Вот с mdn про requestAnimationFrame:

>The callback has one single argument, a DOMHighResTimeStamp, which indicates the current time (the time returned from performance.now() ) for when requestAnimationFrame() starts to fire callbacks.

Другими словами, callback(update в этом случае) вызывается как update(performance.now()); внутри requestAnimationFrame. То есть он каждый раз заходя в функцию передаёт ей новое значение времени. Оттуда оно берётся.

>> No.11980   []
[]
15667

бяяяяААААААААААААА

>> No.11988   []
[]
0

>>11980
Теперь нужно написать функцию переноса части строки, если та больше, чем величина рамки по X за вычетом отступа + сделать подобие пользовательского скроллбара, если величина набранного текста больше объема рамки. Если с первой задачей я еще смогу справиться, то насчет второго идей пока нет. Все сложно для меня.

>> No.11989   []
[]
0

Пойду отдыхать.

>> No.11992   []
[]

>>11988

>сделать подобие пользовательского скроллбара, если величина набранного текста больше объема рамки

В чём сложность? Можно новый прямоугольник с текстом поверх старого нарисовать. Или как ты хотел?

>> No.11994   []
[]

>>11988

>сделать подобие пользовательского скроллбара, если величина набранного текста больше объема рамки

Тред не читал, но в чем проблема использовать стандартную textarea? Тогда скроллбары сами появятся. Куда там тебе этот текст?

>> No.11995   []
[]

>>11994
Он хотел сделать анимированный текст, который на canvas отрисосывается, как я понял - html тут не при делах.

>> No.11996   []
[]

>>11994
Я сам хотел предложить текст отдельно сделать с html и под полотно поставить - так было бы явно проще. Но что-то забыл. Теперь ладно уже.

>> No.12026   []
[]
14706

Ой хоре мне хоре, теперь я пытаюсь сделать click area для треугольничка, предназначенного для пользовательского scrollbar. Если для квадратика это сделать легко, то для треугольника, очевидно, нужен какой-то цикл. Треугольник отрисован move и lineTo, возможно есть более удобный метод для картинок, но хз, там тоже нужно считать клик именно по той зоне, где альфа канал не пустой, а залит краской. В общем, сложно все. Не думал я, что столкнусь с такими трудностями, когда начинал. Мне казалось, что VN будет значительно легче любой другой игры по написанию.

>> No.12027   []
[]
13362

>>12026
Библиотеки для работы с canvas не судьба использовать?
Там такое делается через спрайты, т. е. отрисовывается изображение треугольника из загруженного файла, на которое добавляются слушатели событий потянуть мышью, например.

Вот, глянь:
https://pixijs.io/examples/#/basics/click.js

В крайнем случае посмотри исходный код, придёт понимание как делать свой велосипед.

>> No.12028   []
[]

>>12026
А почему нельзя заранее запоминать, где ты рисуешь эту хуйню, а надо заново вычислять ее позицию?

>> No.12029   []
[]
0

>>12027
Я не знаю таких. Да и думал, что учить js лучше без всяких сторонних библиотек. Мне казалось, что что-то простое без их использования написать реально.

>> No.12030   []
[]
0

>>12028
А как это?

>> No.12032   []
[]

>>12027
Так ему надо клик на треугольник. Картинки будут по умолчанию находиться в прямоугольнике, разве не так?

>> No.12033   []
[]

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

>> No.12034   []
[]
0

>>12027
Спасибо за библиотеку, я поиграю с ней позже. Однако я заметил там то, что если наводить на зону, не занятую пикселями, onlick и hover все равно срабатывают. Так походу никто не делает, чтобы от каждого пикселя картинки зависело срабатывание события. Видимо я подошел к задаче как перфекционист, сейчас я подумал, почему бы просто не поместить зону для клика под квадрат на треугольник, который будет в него вписан. Он все равно небольшой, поэтому нет большого смысла чего-то слишком мудреное придумывать.

>> No.12035   []
[]

>>12032
Можно по желанию только непрозрачную область изображения сделать активной.

>> No.12036   []
[]

>>12030
Ну, запоминаешь координаты граней треугольника и при клике проверяешь, попадает он в них или нет. Разве нельзя так сделать у тебя?

>> No.12037   []
[]

>>12036
Я не знаю, как такое делать. Можно создать матрицу, состоящую из матриц, которые будут хранить значение по x и по y, затем сделать проверочный цикл, который будет ходить по матрице и если значение не 0, то сделать активным срабатывание события onclick. Но я что-то сейчас подумал, ну в пизду так мудрить. Слишком сложно для меня. Я только учусь. Пускай будет зона клика квадрата на треугольнике.

>> No.12038   []
[]

>>12037
Так не надо - явно есть несложный геометрический способ нахождения, для которого нужны только координаты самой точки и вершин треугольника.

>> No.12039   []
[]

>>12038
Я не знаю про этот способ.

>> No.12040   []
[]

>>12039
Интернет на что? Вот первая же ссылка:
Реализация - считаются произведения (1, 2, 3 - вершины треугольника, 0 - точка):
(x1 - x0) * (y2 - y1) - (x2 - x1) * (y1 - y0)
(x2 - x0) * (y3 - y2) - (x3 - x2) * (y2 - y0)
(x3 - x0) * (y1 - y3) - (x1 - x3) * (y3 - y0)
Если они одинакового знака, то точка внутри треугольника, если что-то из этого - ноль, то точка лежит на стороне, иначе точка вне треугольника.

>> No.12041   []
[]

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

>> No.12067   []
[]
0

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

>> No.12070   []
[]

>>12067
Прямо уж тупой - что-то же у тебя получилось?

>> No.12076   []
[]

>>12070
Пока что я имею несколько папок с кусками одной и той же задумки, но каждый раз в различных новых ее аспектах, потому что маленькими частями мне легче пишется и запоминается, нежели бы я написал один раз что-то большое и каждый раз возвращался бы к этому. Но это что-то - совсем не то, о чем я мечтал когда-то. В голове все это представлялось совсем иначе, красивыми стройными структурами. А когда дело доходило до кодинга, то сразу тупёж, балдёж, прокрастинация. Я не стремлюсь программировать, скорее заставляю себя этим заниматься. И то, что получается в итоге, совсем не изделие искусства, а довольно топорный и глупый код с разбиением того, что вполне могло бы выступать на текущем уровне представления, на еще более мелкие и от того уже уродливые своей милиприздричностью и неуместно большим количеством составляющие.

>> No.12077   []
[]
0

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

>> No.12079   []
[]
0

>>12077
Попробую.

>> No.12130   []
[]

>>12076
Попробуй формулировать строго и однозначно (вплоть до математических формул), что делает та или иная твоя функция. Вот как в https://cppreference.com.

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

И не бросай, пока не освоишься, верно говорят.

Если не знаешь английского, то закрой редактор и удали написанное. Кодинг - не для тебя.

>> No.12133   []
[]
0

>>12130

>Если не знаешь английского, то закрой редактор и удали написанное. Кодинг - не для тебя.

Чего так сразу категорично? Я когда только начинал учиться программировать, не знал английский почти.

>> No.12145   []
[]
35878

Мне тут похоже надо будет писать сетевое приложение по учёбе. Сам таким особо не занимался, только общее представление имею. Что лучше использовать, чтобы сильно жопу не рвать? На C++ там всё сложно походу. C#, Python?

>> No.12146   []
[]

>>12145
Сетевое приложение - понятие растяжимое. Обрисуй хоть примерно, что оно делать должно, сервер это или клиент и для каких сетей. Насчет C++ - там есть сокеты, но они и правда не особо удобные по сравнению с компонентными языками. Насчет питона сказать ничего не могу - практически им не пользовался. Можешь на дотнете (C# или VB.NET) попробовать, наверняка там есть что-нибудь удобное для работы с сетью. Сам пишу на VB6.

>> No.12147   []
[]

>>12145
Если смотреть на то, что ты перечислил, то питон кажется подходит лучше всего.

>> No.12148   []
[]

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

>> No.12149   []
[]

>>12147
Наверное. Мне c-подобные языки ближе, но C# на вид получается очень уж громоздкий. Чтобы не париться, можно будет и впрямь сделать на Python + может библиотеку какую.

>> No.12150   []
[]

Ещё подумал - а ведь можно на node сделать. Поди примут.

>> No.12154   []
[]
42128

>>12145
C#, Java.
>>12150
Node не может быть мультипоточной.

>> No.12157   []
[]

>>12154
Я знаю. Но ведь я и не говорю, что нужно именно мультипоточное. Требований к этому не предъявляли. Главное чтобы можно было одновременно подключить несколько клиентов, принять от них что-то и передать. Node с этим вполне справляется. Я же не собираюсь там расчёты тяжёлые городить.

>> No.12252   []
[]
0

Сделал всё-таки на Node, кому интересно да, я знаю, что никому. Пока ничего сложного.

>> No.12253   []
[]
0

>>12252
Да ты оGUIел!

>> No.12254   []
[]

>>12252
Что сделал то, расскажи.

>> No.12255   []
[]
0

>>12253
Вообще-то нет. Консоли достаточно в этом случае, думаю. Даже не знаю, делают ли в node gui, если не считать html. Поди что нет.
>>12254
Пока надо было сделать udp-сервер и клиент. В первой части сервер элементарно раздаёт клиентам по запросу своё время. Потом клиент считает его как-то с учётом т.н. rtt - то бишь задержки. Я по заданию только не вполне понял, как её задавать/считать. Будто говорится, что надо искусственно сделать. Ну я поставил таймауты и нашёл промежутки между запросом-ответом. Наверное, так надо. Неплохо бы уточнить.
Во второй части задание сделать сервер, который собирает время у всех своих клиентов, усредняет его, и по запросу клиента выдаёт ему, насколько его время отличается от общего среднего времени. Над этим пришось дольше поработать, но тоже несложно.

>> No.12256   []
[]
0

>>12255
Какое-то говно, а не задания.

>> No.12257   []
[]
0

>>12256
Звучит тупо, конечно. Но делать было не особо скучно.

>> No.12258   []
[]

>>12256
По крайней мере интереснее какого-нибудь говна с документами или полугуманитарной мутью, например.

>> No.12355   []
[]
0

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

>> No.12356   []
[]
0

>>12355
Олсо, если б не некоторые удобные методы у жса, решать бы мне эту задачу еще 300 лет и 3 года.

>> No.12358   []
[]
0

>>12355

>Дня три ебался с делением строк.

В чём была сложность? Разве там нельзя просто было на слова разделить, к примеру, и количество символов в строке ограничить?

>> No.12364   []
[]

>>12355
Напомни, а что ты вообще сделать пытаешься, в общем? Что должна вся эта система делать?

>> No.12366   []
[]

>>12364
Он же говорил - визуальную новеллу. Движок для неё точнее.

>> No.12367   []
[]

>>12366
Движок для визуальной новеллы, ты имеешь в виду? Или он реально хочет ее всю запрограммировать?

>> No.12369   []
[]

>>12367
Я как понял, он хотел сам движок написать сначала. Дальше лучше у него спросить.

>> No.12370   []
[]

>>12369
Не понимаю, как ему все эти треугольники помогут. Все равно же придется руками рисовать картинки и интерфейс.

>> No.12371   []
[]
0

>>12366
Движок подразумевает полное абстрагирование от кода, на котором он написан, насколько я знаю + полная автоматизация разработки последующих игр движка, на котором они были созданы. В моем случае часть этого кода можно будет использовать при создании других новелл, так как некоторые задачи однотипные и могут решаться в большинстве новелл одинаково, но я не думаю, что это можно назвать движком. Каркасом для игры - возможно. Но движок слишком крутое слово для того, что я делаю.

>> No.12372   []
[]
0

>>12358

>Разве там нельзя просто было на слова разделить, к примеру

Так я и сделал в итоге командой split. А до этого пытался что-то с пробелами мудить, записывал последний с конца, переписывал в массив, перезаписывал каждый элемент, пока он не будет меньше заданной ширины текста, но в итоге все равно не смог выполнить без использования split. Как только додумался до сплита, задачу выполнил часа за полтора. Потом просто разбил на слова, пробелы использовал в качестве разделителя, из полученного массива слов записывал в строки под индексами, тут у меня сложности с ундефайнами возникли, но я пофиксил это так, как смог, меняя все встреченные мной ундефайны на пустую строку. Теперь я не смогу использовать по крайней мере одно слово в новелле.

>и количество символов в строке ограничить

Ограничением выступало не количество символов, а длинна строки в 300 пикселей, ибо ширина рамки, если я правильно помню, 320 пикселей.

>> No.12373   []
[]

>>12371

>Движок подразумевает полное абстрагирование от кода, на котором он написан, насколько я знаю + полная автоматизация разработки последующих игр движка, на котором они были созданы.

Совсем не обязательно, иначе зачем были бы нужны программисты при разработке игр на готовом движке? По-большей части движок будет одинаков в разных играх на нем, но что-то может и модифицироваться по желанию/нужде. Скажем, Fallout 3 и Oblivion сделаны на одном и том же движке, но черта с два ты их запустишь, просто поменяв друг с другом игровые ресурсы. Или, к примеру, мог ты себе представить, что Sims 3 и GTA 3 сделаны на одном и том же движке?

>> No.12374   []
[]

>>12373
Энивей, то, что я сделаю, я отдам потом на ваше растерзание и анализ, и вы уж там решите, что это. Я к своей работе отношусь скептически, иллюзий не питаю, оцениваю так, что по большей части там не оптимизированная смешная сырая поделка, написанная на быдлокоде.

>> No.12375   []
[]

>>12372

> сложности с ундефайнами возникли

Откуда они берутся у тебя?

>> No.12376   []
[]

>>12372
И я не вникал, но у canvas кажется есть метод "measureText". Ты им пользуешься?

>> No.12377   []
[]
10911

>>12375

>Откуда они берутся у тебя?

^
>>12376
Да.

>> No.12378   []
[]

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

>> No.12379   []
[]

>>12378
С undefined сравнивают так, если что: if(typeof(myvar) === 'undefined') {}
Ты какую-то хрень написал.

>> No.12380   []
[]

>>12379
У меня все работает, энивей :\

>> No.12381   []
[]

>>12380
Потому что у тебя undefined-переменная типа undefined, очевидно. Несколько странно. И как-то цикл сделан не вполне понятно. Нахуй тебе эти присвоения? Чтобы добавить в массив, достаточно сделать array.push(element); И без всяких перебрасываний индексами.

>> No.12382   []
[]

>>12379
Кроме того, оператор typeof возвращает строку, именно поэтому в

>typeof(myvar)

сравнивается со строкой 'undefined'. Вот такой бы вид мне точно не позволил использовать слово undefined в тексте. А в моем случае сравнивается сам undefined, как значение, а не как строка.

>> No.12383   []
[]

>>12381

>Нахуй тебе эти присвоения? Чтобы добавить в массив, достаточно сделать array.push(element); И без всяких перебрасываний индексами

Ню извинити, я пря этя нитиво ни зняль. Делал, как умел.

>> No.12384   []
[]

>>12382
То есть по-твоему тип переменной var ass = "number"; будет равен "number", наркоман?
Не надо городить эти индексы, вот тебе та же функция со стандартным циклом:
function splitText(text, maxWidth) {
    let workArray = text.split(" "), strings = [], temp = "";

    for(var i=0, m=workArray.length; i<m; i++) {
        if(ctx.measureText(temp + workArray[i] + " ").width >= maxWidth) {
            strings.push(temp);
            temp = workArray[i] + " ";
        } else {
            temp += workArray[i] + " ";
        }
    }
    if(temp) strings.push(temp);
    return strings;
}

>> No.12388   []
[]
47651

>>12384

>То есть по-твоему тип переменной var ass = "number"; будет равен "number", наркоман?

"number" будет тип string, потому что ты заключил его в скобки для строк. Ты не понял, что я тебе сказал. Введи у себя typeof(typeof(number)) или typeof(typeof(string)) и посмотри, что вернется.

>вот тебе та же функция со стандартным циклом

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

>> No.12389   []
[]

>>12388
Я там походу что-то неправильно сначала поставил, сейчас проверил - работало.

>Введи у себя typeof(typeof(number)) или typeof(typeof(string)) и посмотри, что вернется.

Я знаю, что вернётся. Я тебя не понял сейчас вообще. Почему нельзя строку undefined использовать?

>> No.12390   []
[]
18843

А пока что я решил отдохнуть от новеллы, хотя там осталось не так много. Что-то меня клюнуло немного побаловаться.

>> No.12391   []
[]

>>12388
А, ты же ему ширину-то не дал в аргумент.

>> No.12392   []
[]

>>12389

>Почему нельзя строку undefined использовать?

Я детально не анализировал код, но предполагаю, что это сделает невозможным для использования слово "undefined" в тексте конкретно для моей версии. А так, ничего не мешает. Но зачем мне лишаться возможности написать лишнее слово?

>> No.12394   []
[]

>>12391
Теперь дал. В значение 300. Результат на скрине.

>> No.12395   []
[]

>>12392
Но typeof('undefined") - это string, а не 'undefined' - разве не очевидно? Поэтому сравнение будет работать правильно. Мой код можешь не использовать, но просто на будущее - лучше так циклы не делать.

>> No.12396   []
[]

>>12394
Я его исправил, говорил же. Возьми из поста снова.

>> No.12397   []
[]
19485

>>12395

>Но typeof('undefined") - это string, а не 'undefined' - разве не очевидно?

Очевидно. Но ты на мой код смотрел?

>> No.12399   []
[]

>>12396
Да. Теперь работает.

>> No.12400   []
[]
0

>>12399
Надо было сразу проверить, а то вслепую написал. Больше не буду так.

>> No.12401   []
[]

>>12397
Ну и if(typeof(strings[index]) === 'undefined') бы сработало. А то так сразу не ясно, что за переменная undefined - вдруг она у тебя там глобальная своя какая-то.

>> No.12402   []
[]

>>12401
Сработало бы. Но при этом съело бы все слова undefined, если бы они были в строке. То есть если я захочу написать undefined text, оно оставит мне только text. Понял, о чем я?

>> No.12403   []
[]

>>12397
Хотя ладно, я понял походу. Можно и так, и так короче. undefined уже зарезервировано.

>> No.12404   []
[]

>>12401
Но вообще ты прав, твой вариант менее косячный и нужно стремиться делать сразу с минимумом косяков, чтобы потом не латать дыры лаптем.

>> No.12405   []
[]

>>12402
Нет, ты что-то спутал.
console.log(typeof('undefined')); будет string.

>> No.12406   []
[]

А typeof(undefined) всегда undefined, т.к. слово зарезервировано и ему не получается ничего присвоить.

>> No.12407   []
[]

>>12405
Я не о значении undefined, а о СЛОВЕ в ПРЕДЛОЖЕНИИ. Хочу я выразить мысль, и мне нужно выразить что-то "неопределенное", не обозначенное". И если я оставляю свой вариант, но при этом сравниваю if (typeoff(value) === 'undefined') оставляя действие value = ""; то остаюсь без тех undefined, которые хочу написать именно я.

>> No.12408   []
[]

>>12407
Я что-то запутался. У тебя слово в предложении - строка. Если строка - 'undefined', то это всё равно строка и typeof вернёт тип string, а не undefined.

>> No.12409   []
[]

>>12408
Смотри, есть undefined - значение, а есть слово. Я сравниваю по значению, и мне это позволяет писать слова undefined, но если я начну undefined значение оборачивать в строчные скобки, то я все undefined (и слова, и то, что было значение) свои и лишние уберу из текста. Потому что typeof(value) - это строка и будет сравниваться со строками, а не как в моем случае со значением. Понял?

>> No.12411   []
[]
0

Я уже ненавижу это слово.

>> No.12412   []
[]

>>12409
Нет. Подставь typeof и покажи, что он реально убирает строки 'undefined'.

>> No.12413   []
[]

>>12412
Давай попробуем. Ща... Лел, вообще какая-то ебанина произошла. Я думал, он их уберет, а он их подставляет теперь наоборот.

>> No.12414   []
[]

>>12413
typeof(strings[index]), а не typeof([index])

>> No.12415   []
[]
0

>>12413
Все, в пизду, это выше моих сил!

>> No.12416   []
[]
0

>>12414
Все хорошо, я облажался.

>> No.12417   []
[]

Чувствую себя школьником из страны невыученных уроков.

>> No.12418   []
[]
0

Нахуя я только спор этот развязал - код всё равно эквивалентый получается по сути.

>> No.12426   []
[]
0

Случайно удалил фон и рисунки для >>12390. Чувствуется нарастающий зуд в заднем проходе. Кажется что-то горит.

>> No.12430   []
[]

Какая-то дискуссия о чем-то пустяковом.

>я не использую решения, которые не сделал сам, ибо это не мои решения

Вот это бессмысленно, не понимаю упорства.

Вижу использование идентификатора let, логично массив перебирать методом forEach(...).

>> No.12431   []
[]

>>12430
Я плохо воспринимаю чужой код. Мне нужно обязательно писать свой, чтобы вникнуть. И поэтому иногда необходимо писать велосипеды.

>> No.12433   []
[]
0

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

>> No.12434   []
[]

>>12430

>Вижу использование идентификатора let, логично массив перебирать методом forEach(...).

А какая тут связь? let только на область видимости переменной влияет, насколько я знаю. В этом случае что var, что let - всё равно. Если бы он в цикле или условии был, я бы понял. Ну и foreach - просто сахар.

>> No.12446   []
[]

>>12431
Как почувствуешь прохождение текущей стадии, вернись к изучению чужих решений.
>>12434
Let из ECMAScript6, в связи с этим стоит обращать внимание на все новые возможности языка и стандартные функции.

>> No.12447   []
[]

А в ближайшем будущем стоит ожидать каких-либо фантастических космических йоба-технологий от браузеров? Я только слышал, что какой-то стандарт приняли, который позволит шифровать видосы на стороне сервера, дабы защититься от пиратства. Но это такой себе праздник конечно. А вот что-то крутое ожидать можно вообще?

>> No.12448   []
[]

>>12446
imo, лучше не пихать всюду es6. Версия сильно новая, поддержка у браузеров так себе. Совместимость надо какую-никакую иметь. Хотя можно ещё потом через babel прогнать, к примеру. Я твоей позиции не понял - ты использовать рекомендуешь или нет?

>> No.12449   []
[]

>>12447
А что крупного такого может быть, даже в теории? Если говорить со стороны пользователя, для меня ничего сильно не менялось. Так, новые фишки появлялись, но ничего глобального.

>> No.12450   []
[]

>>12449
Лично я хочу больше плюшек для 3d. Интересно, можно ли как-то оптимизировать текущие технологии так, чтобы не грелся процессор, когда открываешь что-то масштабное и крутое. Это возможно вообще или только с ростом производительности пеки можно избавиться от всех болячек вроде задержек, большой нагрузки на память и всего в этом духе?

>> No.12451   []
[]

>>12450
Думаю, технологии идут соверешенно по другому пути. То есть не пытаются подстроиться под чьё-то там слабое железо. Наоборот программы всё тяжелее и требовательнее. Хочешь нового и современного - раскошеливайся только учти, что оно тоже устареет.

>> No.12494   []
[]

>>12447

>А в ближайшем будущем стоит ожидать каких-либо фантастических космических йоба-технологий от браузеров?

Блять, надеюсь, что нет. Браузеры и так слишком монструозны как для программы для показа гипертекста.

>Я только слышал, что какой-то стандарт приняли, который позволит шифровать видосы на стороне сервера, дабы защититься от пиратства.

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

>А вот что-то крутое ожидать можно вообще?

Крутое - не значит удобное. Вон в девяностые придумали VRML для трехмерных сайтов - и где он сейчас? Круто, ново, интересно - но ресурсоемко и неудобно для реальной работы с сайтами.

>> No.12502   []
[]

>>12431

> Я плохо воспринимаю чужой код

, потому что обычно он плохо документирован. Сравни, например, group1() и group2():

http://paste.org.ru/?ijvnzw (почему-то сюда не постится)

К слову сказать, я так и не понял, что делает твоя splitText().

>> No.12505   []
[]

>>12502
Чего там непонятного? Берёт текст, дробит на слова и составляет строки размером не больше заданного числа пикселей. Я по-другому написал её в >>12384, если так понятнее.

>> No.12506   []
[]

>>12502
И по-моему код можно и без документов понять, если он разбит на модули и не слишком наворочен. Если написано нормально, и так должно быть всё ясно.

>> No.12508   []
[]

>>12506
Нет, нельзя.

На модули разбивают в том числе и для того, чтобы часть кода можно было не читать. Попробуй доведи свою мысль до абсурда: есть у тебя функция makeSuffixTree(text). Описание у нее содержится в названии, в доку достаточно вынести только нюансы. Реализация у нее, предположим, 20 экранов. Ты предлагаешь назвать ее f(text) и НАПИСАТЬ НОРМАЛЬНО?

>> No.12509   []
[]

>>12508
Поэтому я и сказал, что если не слишком много наворочено. Если там не 20 экранов, а 50-100 строк для каждой из нескольких функций с говорящими названиями, то разобраться можно. Хотя документацию знать полезно, наверное. Там есть какие-нибудь общие стили и стандарты?

>> No.12520   []
[]

>>12509

> Если там не 20 экранов, а 50-100 строк для каждой из нескольких функций с говорящими названиями, то разобраться можно.

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

Твое утверждение верное, только ты в цифрах ошибся. Не 50-100, а 1-2. При большем количестве строк метрики сложности тела почти всегда превышают метрики сложности документации.

> Там есть какие-нибудь общие стили и стандарты?

Есть. Английский технический. Можно русский технический, если уверен, что за пределы России твоя разработка не выйдет. Впрочем, начать можешь с JSDoc.

>> No.12524   []
[]

>>12520
С 1-2 и ты загнул по-моему.
Посмотрю. Русский изучать нахуй надо, я не работаю. Я не пытаюсь на тебя тупо наехать, но кто ты сам-то такой крутой будешь? Что-то крупное лепил?

>> No.12544   []
[]

>>12524
Ты на АИБ или где? Что за ad hominem? Сам попробуй так делать и поймёшь, что к чему. Особенно если пилишь в группе с кем-то, это помогает.

>> No.12559   []
[]

>>12544

>Что за ad hominem?

Я тебя спросил чисто ради интереса. Не хочешь - не отвечай. И ты первым начал намекать, что я хуй простой и нуб, потому не прав.

>> No.13030   []
[]

Красиво. Но как же, блять, жутко это говно грузит проц. Почему 3д для браузеров - такое больное место. И это очень грустно. Безумно грустно.

https://threejs.org/examples/#webgl_animation_keyframes

>> No.13032   []
[]

>>13030
Говно без задач это 3D в браузерах. Грустно будет, если все повально на него перейдут вместо нормальных 2D интерфейсов.

>> No.13059   []
[]

>>13056
Вроде на нем пишут софт для работы в почти реальном времени: операционные системы, их компоненты и видеоигры.

>> No.13061   []
[]

Тут есть любители с++? Что на нём написать такого можно интересного, чтобы реально язык себя проявил, а не так что на более высокоуровневых получилось бы чище и проще? Захотелось сделать чего именно на нём.

>> No.13062   []
[]
0

>>13059
Знаю, но это сложно дохуя. Для одного человека нереально.

>> No.13065   []
[]

>>13062
Ну почему же, есть мелкие системы, которые в одно рыло создавались. Приходят на ум драйвера и небольшие утилиты для всякой там диагностики компьютера или подключаемых устройств. Еще антивирусы и фаерволлы. Нестандартные сетевые приложения (не TCP/IP).



Удалить пост []
Пароль