Оффтоп _Программинг

Описание: Офф-топы, юмор, поздравления, радости и печали.

ADF
Автор темы, Старые
ADF
Автор темы, Старые
Репутация: 23
Сообщения: 4197

#1 ADF » 12.03.2018, 21:19

Картинка для тех, кто программирвонье учит усиленно:

Изображение

Сергей
Старые (Администрация)
Аватара
Сергей
Старые (Администрация)
Репутация: 25
Сообщения: 4781

#2 Сергей » 13.03.2018, 00:25

Не совсем врубился - там дело в области видимости переменной или в том, что происходит присваивание значения true переменной внутри проверки условия оператора if (вместо == стоит =)? Язык вроде какой-то С-подобный, думаю последнее. Вроде как операция присваивания в JS должна возвращать true в данном контексте, если память не изменяет с маразмом. Я правда его только начал подробно изучать. Прав?
Все вышеописанное является моим мнением и моим оценочным суждением, и не претендует быть истиной в последней инстанции. ..Nihil est ab omni parte beatum..

ADF
Автор темы, Старые
ADF
Автор темы, Старые
Репутация: 23
Сообщения: 4197

#3 ADF » 13.03.2018, 00:29

Не важно какой язык, эта жопорукая конструкция везде одинаково сработает :pardon:

Не говоря о том, что условия с булевой переменной вообще без знаков сравнения (или присвоения) записывается, вот так: if (имяПеременной) { делать чёто }

Сергей
Старые (Администрация)
Аватара
Сергей
Старые (Администрация)
Репутация: 25
Сообщения: 4781

#4 Сергей » 13.03.2018, 00:35

Ну то есть я прав во втором предположении. На счет языка я не был уверен. Вроде бы в паскале (да и делфи) операция присваивания :=, а проверка условий =. Правда не помню точно, давно это было. На счет того, что без знаков присваивания условия проверяются, ты конечно прав. Но для новичков это не так очевидно и логической ошибки в этом вроде как нет.
Все вышеописанное является моим мнением и моим оценочным суждением, и не претендует быть истиной в последней инстанции. ..Nihil est ab omni parte beatum..

ADF
Автор темы, Старые
ADF
Автор темы, Старые
Репутация: 23
Сообщения: 4197

#5 ADF » 13.03.2018, 00:55

Сергей писал(а):Но для новичков это не так очевидно и логической ошибки в этом вроде как нет.

Как это нет логической ошибки?! Тут как раз самая что нинаесть явная ошибка, которая приводит к вполне определенной работе кода. И новичков, обычно, особым образом дрочат по поводу случайно поставленного одинарного "=" внутри условий, так как эта ошибка очень частая именно среди новичков. :pardon:

А вот, в порядке разминки мозга, тебе пример логически правильного, однако не всегда предсказуемого выражения:
a[++i] = b[i];
Пояснение: в Си (и возможно также и в ++) эта конструкция срабатывает непредсказуемо, так как в компиляторе не определен порядок обработки левой и правой части выражения. Хотя с точки зрения пользователя результат кажется очевидным, если читать слева направо. :)

Сергей
Старые (Администрация)
Аватара
Сергей
Старые (Администрация)
Репутация: 25
Сообщения: 4781

#6 Сергей » 13.03.2018, 08:02

Я имел в виду, что нет логической ошибки в сравнивании булевой переменной с true или false через знак == вместо просто написания имени переменной в части условия - if (имяПеременной==true) { делать чёто } вместо if (имяПеременной) { делать чёто }.
Все вышеописанное является моим мнением и моим оценочным суждением, и не претендует быть истиной в последней инстанции. ..Nihil est ab omni parte beatum..

ADF
Автор темы, Старые
ADF
Автор темы, Старые
Репутация: 23
Сообщения: 4197

#7 ADF » 13.03.2018, 09:21

Сергей писал(а):Я имел в виду, что нет логической ошибки в сравнивании булевой переменной с true или false через знак ==

Понял.
В этом, безусловно, логической ошибки нет, однако так писать - плохо. Код должен быть максимально простым с точки зрения читаемости, а ещё он, желательно, должен быть таким, чтобы минимизировать возможность вноса/появления ошибок. Именно для этого, в частности, придуманы всякие правила форматирования кода, правила именования переменных и функций и так далее. Компилятору-то посрать, он что угодно съест с любым форматированием и любыми названиями, но вот люди потом будут тупить и косячить, работая с этим кодом. Это особенно важно при коллективной разработке, когда с кодом работает больше 1 человека. При ггрупповой работе над кодом - люди больше времени тратят на чтение кода, чем на его написание - поэтому надо писать код так, чтобы его можно было как можно проще прочитать :) Хотя я сам к этому не сразу пришёл...

Ну да ладно, не буду надоедать занудством.

Вот лучше картинка:

Изображение

MRAk1
Старые
Аватара
MRAk1
Старые
Репутация: 9
Сообщения: 1421

#8 MRAk1 » 13.03.2018, 14:49

нихрена не понимал о чем пишете, но со швабрами вроде разобрался :biggrin:

Сергей
Старые (Администрация)
Аватара
Сергей
Старые (Администрация)
Репутация: 25
Сообщения: 4781

#9 Сергей » 13.03.2018, 21:13

MRAk1 писал(а):нихрена не понимал о чем пишете, но со швабрами вроде разобрался :biggrin:
Не расстраивайся. Зато ты разбираешься в отоплении и таком прочем, а я пока не очень :)
Все вышеописанное является моим мнением и моим оценочным суждением, и не претендует быть истиной в последней инстанции. ..Nihil est ab omni parte beatum..

MRAk1
Старые
Аватара
MRAk1
Старые
Репутация: 9
Сообщения: 1421

#10 MRAk1 » 14.03.2018, 08:56

Сергей писал(а):разбираешься в отоплении
это гораздо проще, чем программирование
тут я за год вкупился, а программировать за 9 лет не научился)))

ADF
Автор темы, Старые
ADF
Автор темы, Старые
Репутация: 23
Сообщения: 4197

#11 ADF » 14.03.2018, 12:06

MRAk1 писал(а):тут я за год вкупился, а программировать за 9 лет не научился)))

Значит просто не надо было :pardon:

(раз уж пошёл оффтоп, потом если надо можно будет в отдельную тему перенести)

(много скучных буков, я предупредил! :( )

Сейчас начать обучаться программированию и научиться что-то базовое делать - проще простого!
Мгновенно как сами инструменты скачиваются (при чём их совершенно дикое количество), так и информации - вагон, включая видео-инструкции по шагам "для тупых", ёмкие шпаргалки - где на одну страницу самое важное по выбраному языку программирования сведено; готовые примеры и даже целиком готовые проекты с исходниками. Даже от некоторых старых игр, допустим от квейков 1-2-3, исходники в открытом доступе - можно брать и хоть целиком готовую игру переделывать.

Чтобы было понятно, насколько сейчас стало проще. Я в 90-ые годы программированием увлёкся, интернета тогда не было (умники могут сказать что всё-таки был, ило что-то про BBS, но всё это было мимо меня). В общем, с информацией была полная Её Величество ЖОПА: если у тебя нет книжки по паскалю, то ты не можешь ничего сделать на паскале. Приходилось расколупывать методом тыка, пробуя по тысяче раз, пока не начнёт компилироваться и работать как надо. Даже сами компиляторы для языков было не просто достать: где-то у кого-то выуживать дискетами. А если достал то, чего ни у кого в круге твоего общения нет и где никто не подскажет? Был у меня диск с watcom C++, в 90-ые годы считался одним из самых крутых IDE для плюсов. Все самые крутые штуки программировани тогда на нём. Да вот не было ни одного человека, который смог бы мне показать, как на нём hello world сделать, в итоге диск валялся без дела. А сама по себе среда разработки не дружественная ни разу - так как родом из прошлого.

Вообще, никаких нормальных встроенных подсказок тогда не было в языках. Зато какая халява сейчас! Набираешь код - и тебе среда разработки сразу подсказывает: какую команду можно набрать, какие параметры этой функции нужны и что означают. Если все-таки набрал неправильно - сразу-же подчеркнёт и очень конкретно напишет, что не так. Если совсем тяжко - тычешь справку, тебя сразу в интернет на специальный ресурс посылает. И даже на русский всё переведено, если с английским плохо: подробнейшее описание с примерами по ЛЮБОЙ команде или функции. Визуаж студию открываешь, выбираешь проект на C# и сразу с разбегу просто делаешь, не изучая. Всё, что надо - узнаешь по ходу дела.

Добавлено спустя 2 часа 27 минут:
Изображение

Сергей
Старые (Администрация)
Аватара
Сергей
Старые (Администрация)
Репутация: 25
Сообщения: 4781

#12 Сергей » 14.03.2018, 21:57

ADF писал(а):Сейчас начать обучаться программированию и научиться что-то базовое делать - проще простого!
И все дальше этого не идет, такой разброд технологий большой. Я тут все таки во фронтэнд слегка ударяюсь, так то, что раньше делалось просто изучением html+css+js сейчас не прокатывает. Там столько инструментов и технологий, что только чтобы их изучить нужно потратить прорву времени, особенно учитывая то, что инструменты рождаются быстро и часто, так же как и умирают и разрабы даже документацию не успевают оформить. Тот же вебпак взять - сколько нервов он мне попортил, инструмент не плохой и развивается, а доков нормальных нет, даже если первоисточники на сайте на наглийском смотреть. Вот так и получается - начать легко и инфы много, а закончить сложно, потому что ее еще и усвоить надо и всякую хрень отсортировать.
ADF писал(а):Визуаж студию открываешь, выбираешь проект на C# и сразу с разбегу просто делаешь, не изучая.
Такие и программки получаться, не более hello world или консольных приложений типа 2*2=4 и вывести результат на экран. А вакансии открываешь - им там нужно знание всего стека технологий .net, MVC и до кучи сайты уметь делать скажем с использованием какого-нибудь Redux+React.js и никак не менее, то что ты hello world умеешь или даже консольную программку для сканирования скажем COM-портов написал или еще чего покруче - такими знаниями нынче мало кого удивишь.
Все вышеописанное является моим мнением и моим оценочным суждением, и не претендует быть истиной в последней инстанции. ..Nihil est ab omni parte beatum..

ADF
Автор темы, Старые
ADF
Автор темы, Старые
Репутация: 23
Сообщения: 4197

#13 ADF » 14.03.2018, 23:10

(продолжая оффтоп про прогроммирвонъе)

Сергей писал(а):И все дальше этого не идет, такой разброд технологий большой.

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

Так или иначе, нет никакой нужды хвататься сразу за всё. Изучение всегда начинается с одного, ну может есть смысл выбрать отталкиваясь от текущих задач.

Сергей писал(а):се таки во фронтэнд слегка ударяюсь, так то, что раньше делалось просто изучением html+css+js сейчас не прока

Тебя наверное вводит в заблуждение, что уеб-программирование нынче считается самым востребованным и самым оплачиваемым? Только там до жопы рукожопов и говнокодеров, кто только и умеет как готовые фреймвёрки использовать. С точки зрения ИЗУЧЕНИЯ программирования и освоения технологий - там делать нечего: если сразу в веб-дизайн - высок шанс, что станешь говняным псевдопрограммистом. Работать сможешь, но упрёшься в потолок зарплаты: так как не сможешь в этом сегменте конкурировать с настоящими программистами.

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

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

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

Ты похоже не в курсе ситуации :)

Это такой кромешный АДЪ - что для уеб-разработки бесконечно придумывают фрэймвёрки. А выбор тех или иных определяется (внимание!) модой, которая форматирует головы заказчиков. Вчера им на Ruby подавай проекты, сегодня на Ангуляр, завтра на АСП.нет и так далее. Глубинной причиной является убожество голого JS и особенно ПХП - они изначально не создавались для тех задач, что ими решают сегодня. Они сломаны на уровне изначальной идеи и с тех пор (с 1995г) всё это тянется. Поэтому для них и придумывают обёртки - чтобы было не так противно работать с чистыми html+css+js+php; чтобы убирать всю нечесть, недостатки языков и особенности работы в разных браузерах "под капот" с глаз долой.

Но к изучению (искусства, хехе) программирования это не относится вообще!

Обязательно почитай:
https://habrahabr.ru/post/312022/

И вот это ещё:
https://habrahabr.ru/post/142140/

Сергей писал(а):Такие и программки получаться, не более hello world или консольных приложений типа 2*2=4 и вывести резу

Надо просто сразу задачи ставить!

Я когда в ~2010 Flash\AS3 начал осваивать - сразу свой 3Д движок писать начал и к концу первого дня у меня уже трухмерный мир рендерился.
В 13 - на JS\HTML5 пришёл на работу и сразу начал игру писать.
В 2015 - открыл C# и сразу начал на нём делать ПО для анализа сигналов с прибора (с графикой - отображение данных, с вычислениями для обработки этих самых данных и т.д.).

Вообще, ИМХО, нельзя научиться программированию, если сам для себя, из внутреннего интереса, не делаешь ничего... Чуть дальше поясню свою мысль.

Сергей писал(а):А вакансии открываешь - им там нужно знание всего стека технологий .net, MVC и до кучи сайты уметь делать скажем с использованием какого-нибудь Redux+React.js и никак не ме...

1. В вакансиях зачастую пишут лишнего (см. картинку :));
2. Знание фрэймвёрков - не относится к умению программировать. Вообще, редкий HR-менагер способен проверить человека именно на владение программированием, а не на знание каких-то там терминов и-или технологий.
3. Также верно и то, что когда на рынке есть конкуренция (сегмент веб-разработки) - то изволь быть более опытным и знающим, чтобы получать больше денег. Логично же :)

Что такое уметь программировать:

Это нфига не знание какого-то конкретного языка, который вдруг стал популярным, или какого-то фрэймвёрка. Это прежде всего опыт.
Постараюсь кратко:
1. Программист должен уметь спланировать архитектуру своей программы. Так, чтобы потом не пришлось мучительно тянуть дохлый проект до релиза и чтобы не возникало желания переписать всё с нуля. Уметь разделить задачу на части по принципу необходимой достаточности;
2. Спланировать структуру данных, чтобы потом не было проблем, схожих с проблемами предыдущего пункта;
3. Навыки оптимизации. Нужны не всегда, но когда встаёт проблема быстродействия или памяти - программист должен уметь с этим разбираться;
4. Навыки отладки, особенно чужого кода (особо тяжкая и стрёмная штука :( ). Для начала хотя-бы в своём коде уметь быстро косяки находить и исправлять :)
5. Знать типовые подходы к решению тех или иных типовых (похожих) задач. Банальный пример: берешь новый для себя язык, на котором ни разу не программировал. начинаешь делать программу. Доходишь до момента, когда тебе нужен цикл: из своего опыта ты знаешь, что в любом (в почти любом :)) ЯП есть циклы и надо просто сходить в гугл и посмотреть, как описывается цикл в этом конкретном языке. Бац - загуглил, сделал, херачешь дальше. При реальной современной разработке вообще постояно в гугл приходится подглядывать - обычное дело. В том числе для копирования готовых кусков кода. Пример чуть сложнее: понадобился тебе анализ Фурье на Питоне. Тут можно просто предположить, что это уже наверняка кем-то делалось и тебе жопу рвать не зачем. лезешь опять-же в гугл - и через 3 минуты у тебя кусок готового кода для Фурье-анализа. Или питоновский модуль, у которого это внутри.
6. Очень похожая ситуация со всякими сторонними фрэймвёрками и, допустим, графическими библиотеками: когда у тебя есть опыт - ты берешь какой-то новый для себя фрэймвурк. Этот фрэймвёрк рисует UI. А тебе нужно нарисовать кнопку и рядолм с кнопкой - поле для ввода цифры. Ты знаешь, что эти элементы типовые и они почти наверняка есть среди функций этого фрэймвурка! Тебе просто надо эти элементы инициализировать: или в виде объектов создать, или они какой-то командой внутри самого фрэймвурка создаются. Зная это - ты целенаправленно набираешь запрос в гугл или в документацию по данному фрэймвурку - бац и вот у тебя кнопка и поле ввода для цифры. Или надо изменить внешний вид кнопки. Ты, из опыта, знаешь, что скорее всего где-то описывается стиль. И очень быстро находишь точную информацию, как этот стиль описать и как применить. Самое важное - что всё это НИКАК не зависит от конкретного языка программирования или от конкретного фрэймвйрка! Это везде одинаково! Ты как программист знаешь принцип - и он везде работает...
7. Тоже самое про инструменты - ты знаешь, что бывают компиляторы, а бывают виртуальные машины для байт-кода (в зависимости от конкретного ЯП). Что бывают команды компиляторов и виртуальных машин. Ты знаешь, что в IDE, в любой (!!!) есть горячие кнопки для сохранения файла, есть отмена изменений, есть возможность запуска в режиме дебага, а есть возможность запуска в режиме продакшина. Чьо бывают (опять-же, для любых ЯП и платформ!) профайлеры - которые позволяют определить узкие места в быстродействиии. Что во многие современные IDE встрена интеграция с системой контроля версий, допустим GIT почти всеми поддерживается. Что почти во всех современных IDE есть автозаполнение и есть подсказки. И так далее. И это - одинаково везде, отличия самые минимальные и зачастую эти отличия даже запоминать не надо :)
8. При этом совершенно НЕ обязательно знать какие-то редко используемые особенности конкретного языка или платформы. То, что называют синтаксический сахар. Не знаешь лямбы в джаве? Да [член] с ними. Или не знаешь, как тернарная операция записывается? Или на собеседовании любят спрашивать всякую дичь, вроде: "а что будет, если a = 1; k = ++a - a-- + a++; " - в реальном программировании это нафиг не нужно, если в реальном коде кто-то такое напишет - ему надо по лицу постучать.
9. На вершине всего находится недоступное для многих знание - что это значит, доводить программу до релиза. Когда ты не программулинку себе в стол написал, а коммерческий продукт, с которым реальные пользователи взаимодействуют. Там фишка в том, что с момента, когда у тебя есть работающая бетта-версия - до завершения остаётся примерно 90% трёдоёмкости :shok: Эта цифра может сильно меняться в зависимости от твоего уровня владения пунктами 1-3. С опытом, трёдоемкость доделки сильно уменьшается. Без опыта - можно вообще не доделать, разработка попадает в так называемый development hell.

Если бы вакансии для водителей писали как вакансии для программистов:
Изображение

Сергей
Старые (Администрация)
Аватара
Сергей
Старые (Администрация)
Репутация: 25
Сообщения: 4781

#14 Сергей » 15.03.2018, 01:56

В вэб я ударяюсь не потому, что так хочется, а потому что то, что я сейчас знаю - никому не нужно, не однократно отправлял резюме на вакантные места. Даже за бесплатно (или около того) с возможностью обучения - никто не берет, даже если пишут типа, что опыт не требуется. А здесь нашлись люди, которые пропускают людей через некие проекты, потом берут если человек прошел. Они реально учат, причем гоняют по основным моментам не просто по теории и тупому ее знанию, а по применению с практической точки зрения - верстка, разработка активности на JS, использование инструментов разработки и контроля версий, даже совместное нахождение решений поощряют, обучая тем самым работать в команде. Даже не учат программированию в большей степени, а учат учится. Грех таким предложением не воспользоваться, тем более за бесплатно. Конечно это не план А, но в противном случае я могу еще 10 лет сам по себе учится и так ничему и не научится в итоге. И не думаю, что вэб разработка для меня это предел мечтаний, но это возможность хоть какого-то входа в отрасль. Пока интересно, а там видно будет. Кроме того я продолжаю в ТУСУРе учится, вот первую сессию сдал почти, на вычислительной математике споткнулся. Тоже кой-чего интересного там дают, например БД хотел давненько освоить хоть в первом приближении, а сейчас пришлось для сдачи сессии и SQL подучить и приложение пользовательское разработать хоть и простенькое.
Про JS статью читал конечно. Там утрировано все, сейчас уже ситуация во многом лучше, хотя конечно есть реальные кое какие проблемы. Например мне уже в глаза кидается - писание какого-либо кода по новым спецификациям JS, а потом своеобразный даунгрейд с помощью babel.js поскольку не все браузерами поддерживают новые спецификации. Маразм конечно. Но я все таки до конца пожалуй это допробую, чтобы хоть какой-то опыт хоть какой-то разработки получить.

Добавлено спустя 17 минут 59 секунд:
Прочитал частично статейку про php вызывает депрессию. Вот, Алехандро, все время ты мне настроение портишь. :cray: Только я кажется определюсь хоть с каким-то планом действий, придешь ты и скажешь, что все говно и все не так. Но в C# разработчики даже типа на джунов берут с такими требованиями, которые на мой скромный взгляд были бы более уместны для мидлов. Пойду убьюсь головой об стену.
Все вышеописанное является моим мнением и моим оценочным суждением, и не претендует быть истиной в последней инстанции. ..Nihil est ab omni parte beatum..

ADF
Автор темы, Старые
ADF
Автор темы, Старые
Репутация: 23
Сообщения: 4197

#15 ADF » 15.03.2018, 21:38

Спокойствие!

1. Даже программисту с опытом - не всегда и не сразу удается на работу попасть. Особенно в Томске, что странно! Буквально в соседнем новосибе - вакансий в разы больше.
Значительная (возможно даже бОльшая) часть программистов свою работу нашли через знакомых, а не через сайты с вакансиями и не через кадровые агентства.

2. Ты всега можешь (даже не побоюсь этого слова, как бы странно оно не звучало - должен ;-) ) делать свои личные проекты. Вне зависимости от наличия или отсутствия у тебя постоянной работы!
В качестве своих проектов - в первую очередь делать то, что хочется делать! Ну и, по возможности, чтобы это было еще и продавабельно. Регистрируешь девелоперский аккаунт на google play. Он стоит $25 разово и на всю жизнь. Потом - устанавливаешь любой инструмент, который позволяет программировать под андроид или кроссплатформенно с поддержкой андроида. Можно банальную android studio установить. Осваиваешь, как сделать hello world и залить APK в стор (публиковать не надо, просто отработать цикл написал - залил). Это буквально задача двух часов вечером с перерывом на чай :)
И потом начинаешь делать простенькие программулинки: фораник, календарик, калькулятор баллистический. Лучше - делать упор на количество. Потом - в эти приложения встраиваешь баннеры с рекламой!
Знаю некоторых разработчиков, они вот так всякого говна разного мелкого и не слишком трудоёмкого софта понаписали в гугл плей, делая по одной новой приложухе каждые две недели. Спустя пару лет - в сумме приложений 100500 и у каждого приложения образовался круг пользователей. Популярность не очень высокая, но каждое сцаное приложение приносит по 15-20 долларов дохода в месяц. 15 * 100500 = куча баблища, что в итоге эти разработчики лежат жопой об диван и ногой х*й попинывают практически весь день. Для этого не надо быть супер-программистом, не надо делать никакие сложные или гениальные продукты, не надо врукопашную реализовывать Рунге-кутта и матан в уме решать. Надо просто последовательно и планомерно херачить в пол силы.

PS: сам столько раз собирался этим заняться :(

Сергей
Старые (Администрация)
Аватара
Сергей
Старые (Администрация)
Репутация: 25
Сообщения: 4781

#16 Сергей » 15.03.2018, 22:18

Рунге-Кутты - это численные методы решения диф. уравнений? Наверняка же уже реализовано где-то, как ты говоришь. Советы принял к сведению. Давно я чую, что надо в Новосиб ехать или еще подальше. Пойду попробую игру Жизнь реализовать на шарпах. Мне вообще-то ее надо на JS реализовать в рамках тестового задания, но на шарпах тоже поди можно. Натолкни на мысль кстати как знаток шарпов - как лучше реализовать поле (что-то типа поля из клеток произвольной ширины и высоты, где нужно отслеживать состояние клетки, заполнена она или нет), что-то я стандартных элементов такого плана не нашел. Точнее нашел нечто похожее, но там состояние как-то не отслеживалось или я не понял как это делать. Короче потом отвлекся и забыл.
Все вышеописанное является моим мнением и моим оценочным суждением, и не претендует быть истиной в последней инстанции. ..Nihil est ab omni parte beatum..

ADF
Автор темы, Старые
ADF
Автор темы, Старые
Репутация: 23
Сообщения: 4197

#17 ADF » 15.03.2018, 23:14

Блин, ты странный вопрос задал :)

Во-первых - не путаем отрисовщик с логикой и с внутренней структурой данных. :) Как оно будет на экране рисовацо - дело десятое.

Теперь по сути:

1. Делаешь двухмерный массив, скажем 50 на 50 ячеек;
2. Пишешь две функции: первая функция - чем-то этот массив инициализирует, допустим 0 - пусто, 1 - занято
вторая функция - делает шаг. Во второй функции создаешь новый массив, равный по размерности исходному. Потом делаешь вложеный цикл, который пробегается по Х и Y этого нового массива. В каждой клетке он делает еще один вложеный цикл от 1 до 3, чтобы перебрать 9 клеток в исходном массиве о сосчитать 1-ы.
По результату подсчета - в новом массиве клетку либо в 0, либо в 1 "красишь".

Когда новый массив готов - старый массив заменяешь этим новым.

Чтобы красиво было - можно два массива стабичных завести и завести переменную, которая указывает нам либо на первый, либо на второй массив. Можно тупо bool и делать ему b = !b, в общем в случае двух статичных массивов просто из одного в другой пересчитываешь и он теперь считается текущим.

Для того, чтобы на экран в шарпе вывести - кинь RichTextBow. Перед началом отрисовки - очищаешь все линии, а потом по одной добавляешь. пустые места, допустим, ставишь точку, в занятые - #.

Чтобы постоянно вертелось - добавляешь таймер, ставишь ему интервал допустим 100 мс и на OnTimer вешаешь свой код, который каждый шаг должен срабатывать.

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

Короче, задача - начать и кончить :pardon:

Добавлено спустя 38 минут 17 секунд:
..
...
....
.....
.......
.........

Эххх... Вот ради интереса накидал тебе на шарпе :)
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Сергей
Старые (Администрация)
Аватара
Сергей
Старые (Администрация)
Репутация: 25
Сообщения: 4781

#18 Сергей » 16.03.2018, 08:10

Эх, Александер, попросил тебя в направлении подтолкнуть, а ты игру сделал. :rolleyes: Работает - да, как надо, но я красивше хотел. На счет внутреннего представления - вчера уже начал думать примерно в указанном тобой направлении самостоятельно придя к зачаткам этих же выводов. Просто изначально подумалось, что может элемент некий есть - можно было бы просто циклически бегать по нему проверяя состояния ячеек и меняя их. Ладно, суть ясна, попробую по-своему, в код смотреть даже не буду в твой.
Все вышеописанное является моим мнением и моим оценочным суждением, и не претендует быть истиной в последней инстанции. ..Nihil est ab omni parte beatum..

ADF
Автор темы, Старые
ADF
Автор темы, Старые
Репутация: 23
Сообщения: 4197

#19 ADF » 16.03.2018, 21:41

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

Сергей
Старые (Администрация)
Аватара
Сергей
Старые (Администрация)
Репутация: 25
Сообщения: 4781

#20 Сергей » 16.03.2018, 22:19

Ну и какой мне теперь интерес ее реализовывать? Разве что в код залезть да посмотреть как там все устроено.
Все вышеописанное является моим мнением и моим оценочным суждением, и не претендует быть истиной в последней инстанции. ..Nihil est ab omni parte beatum..


Вернуться в «Обо всём»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость