0

Наверное уже всех давно задолбал этот вопрос :D , но все-таки ребят сколько же нужно обучаться с++ чтобы уметь самому создавать небольшие проги . Я не говорю о огромных проектах, а просто для себя типа небольшая 2д игра. Я стараюсь все понимать, смотрю видеоуроки, примерно 2 - 5 штуки за неделю :D Опытные прогеры просветите меня и есть ли какие-нибудь советы новичку ?) (кстати я уже просмотрел уроков 30 и в целом понимаю как все устроено и умею пару вещей :)

LamaPrincess
  • 9
  • 1
  • 1
  • 2
  • 9
    Всю жизнь. – ReinRaus Jan 18 '15 at 11:56
  • 4
    По видеоурокам? Вечность. По более адекватным материалам должно хватить одной жизни – DreamChild Jan 18 '15 at 12:17
  • @LamaPrincess, наверное не стоит начинать изучение программирования с С++. Если глубоко изучить его, то Вы увидите, что это на самом деле сложный язык.

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

    Для себя же (но не только), я бы посоветовал начать с Python.

    – avp Jan 18 '15 at 12:25

5 Answers5

5

Неудержалсяalt text

arg
  • 3,395
3

Просто смотреть видеоуроки недостаточно. Основные усилия при изучении любого языка программирования должны быть направлены на практику. Вы должны как можно больше писать программ, иначе знания просто не закрепятся. Ставьте перед собой задачи и решайте их, со временем усложняя эти задачи. Только так вы сможете освоить C++ (или любой другой язык). И именно от количества практики зависит скорость вашего обучнеия.


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

fori1ton
  • 23,403
3

типа небольшая 2д игра

Для "типа небольшой 2д игры" вообще не обязательно на чем-то уметь программировать. Есть такой движок, называется Construct 2. На нем можно делать "типа небольшие 2д игры". Знаю, звучит не очень вдохновляюще. Поэтому лучше просто загугли сразу про этот движок. Прочувствуешь всю его простоту по первому взгляду. Посмотри на ютубе пару видео о нем. Материала по нему предостаточно, в том числе на русском языке. И как бы оно плохо не звучало, вещь довольно прикольная. Не очень перспективная, но прикольная.

Если же у тебя все-таки где-то в глубине души есть желание делать большие и классные игры (2д/3д - не важно), а не только лишь "типа небольшие 2д игры" - тогда лучше всего подойдет C# и Unity.

Для сравнения... Пока ты будешь "вариться" во всем этом, то:

В случае с Construct 2:

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

Из плюсов, относительно Unity:

  • С ним очень просто и приятно работать, если ты не особо шаришь в программировании
  • Не нужно уметь программировать ни на одном из языков (хотя эти знания будут очень кстати, потому что ты все равно в каком-то смысле будешь программировать различные действия и взаимодействия)
  • Можно быстро делать разные небольшие 2д игры

Из минусов:

  • У движка есть нехорошая особенность, которую в двух словах не объяснишь. Но при падениях FPS у игры, ты можешь столкнуться с тем, что некоторые объекты будут проходить сквозь друг друга (в частности это касается небольших объектов, с большими объектами все в порядке).
  • Движок также мультиплатформенный, как и Unity, но для мобильных платформ он не подойдет, потому что оптимизация огорчает. Тут скорее даже не движок виноват, а то, что игра выходит на HTML5. Поэтому игра на многих даже очень хороших мобильных устройствах будет плохо идти. Исключение: какие-нибудь "point and click" квесты или другие игры, где не нужен хороший FPS. Десктопных игр это не особо касается, на них проблем с производительностью при текущих мощностях компьютеров нет.
  • Если захочешь продавать игру, нужно приобрести лицензию (8000р с небольшим)

В случае с Unity и C#:

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

Из плюсов, относительно Construct 2:

  • Это перспективно (в плане профессии). Сейчас много компаний делают игры исключительно на Unity.
  • Стабильность. В движок влили огроменные деньги, поэтому все на нем прекрасно работает, в том числе на мобильных платформах.
  • Если тебе нужен Unity не для компании с доходом 100000$ в год, то это реально бесплатно (я не шучу, у Unity реально есть такое ограничение). Лицензий никаких приобретать не нужно, игру можно спокойно продавать (например, в Desura).
  • В перспективе ты можешь прикрутить к игре онлайновые функции (в Construct 2 это невозможно в принципе)
  • Если будешь изучать C#, то сможешь не только игры делать на Unity, но и программы (на Xamarin Studio или Visual Studio)
  • Контента по Unity в интернете, все-таки, больше. Что важно, намного больше именно хорошего, качественного контента.

Из минусов:

  • Конечно, можно использовать намного более простой JavaScript, но если все-таки серьезно решил делать игры, то рекомендую изучать именно C#. Это объектно-ориентированный язык, а значит придется также разобраться с объектно-ориентированным программированием. А это не самая простая штука - в этом минус :)
  • Тебе понадобится много времени ;)
JerryGreen
  • 129
  • 1
  • 1
  • 11
2

Сколько учить?

Для основ нужно примерно четыре-семь хороших книг по 1000+ страниц каждая(базовый синтаксис + stl + немного winapi и directx для игр) с довольно сложными для освоение темами и практика написания хороших программ после чтения. Сколько займет это времени у Вас никто точно сказать не сможет, это как вопрос "Как долго читать войну и мир?". Но зато вы можете отслеживать свой прогресс по этому плану и видеть, как быстро вы растете.

Темы для чтения

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


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

P.S. На всякий случай я оставлю тут еще вот эти видеоуроки:

OpenGL от Anton Te

OpenGL от HeNe

Alex Krass
  • 17,744
1

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

Сколько учить? Как писали выше - всю жизнь. имхо выбырайте java не пожалеете.

mak_hash_off
  • 268
  • 1
  • 9
  • я начал с с++ так как начитал что типа это основа всех остальных языков такие как java и тд поэтому я и начал с с++, а то что вы говорите использовать др. проги мне это не нужно, вопрос был про язык с++ – LamaPrincess Jan 18 '15 at 12:08
  • @mak_hash_off, за Бейсик не простим. Всё-таки сейчас это нишевый продукт, существующий либо в виде VBA-скриптов в Офисе, либо в виде старых приложений, которые никто не будет переписывать. Кстати, насчёт Java тоже сомнительный совет. Если уж единственное, что человек собирается делать, изучив язык программирования, это писать несложные 2d игры, то почему бы сразу не начать использовать более приспособленный под эти задачи C# и Unity? – fori1ton Jan 18 '15 at 12:10
  • LamaPrincess ну если вы хотите основы учить тогда лучше смотреть в сторону assembler, на нем наприсали мир ))) fori1ton ну и не прощайте, судя по вопросу ему что c# что unity все одно он хочет учить плюсы чтоб писать простые программки, а что можеть быть проще бейсика? для изучения основ и принципов программирования раньше был чуть ли не единственный доступный вариант, потом конечно пришел паскаль но это было много позже. Так же как вы считаете симнительным Java я считаю сомнительным C# но это тема отдельного холивара. – mak_hash_off Jan 18 '15 at 12:25
  • @mak_hash_off, можете назвать, где Бейсик применяется сейчас (кроме VBA)? То что раньше он был "чуть ли не единственный доступный вариант", ещё не значит, что он до сих пор таким и остаётся. Сейчас есть гораздо более логичные, простые и выразительные языки, которые можно использовать для обучения. Например, Python. В нём скрыто очень много возможностей, но прелесть его в том, что эти возможности можно раскрывать постепенно, не запутывая ученика, как в случае с C++ или Java. – fori1ton Jan 18 '15 at 12:48
  • @fori1ton, наверняка на питоне можно писать, как на бэйсике, но вот стоит ли?

    Скорее надо попытаться сразу изучать его наиболее сильные стороны.

    – avp Jan 18 '15 at 12:55
  • @avp, я не совсем понял, где вы в моём комментарии увидели призыв писать на Python в стиле Basic. Я лишь пытался показать, что для обучения программированию есть гораздо лучшие инструменты, чем Basic, C++ или Java. Для обучению основам программирования писать программы Python-style вполне приемлемо. – fori1ton Jan 18 '15 at 13:00
  • fori1ton а мы о каком месте применения говорим о написании мелкой прикладухи для себя и т.д. либо об энтерпрайз уровне? писать прикладуху дергая api windows на питоне ммм... можно но стоит ли? я бы вообще выбрал delphi(pascal) там уже давным давно есть. писать веб приложение? тут и python и php и asp и еще много всего... энтерпрайз прикладуха - хм c# и java. Да и сами пишите 2Д игры на python, в комплетке с django его лучше юзать для web разработки а писать десктоп приложения для gui-windows лучше на более предназначеных для этого инструментах. Ах да чем может запутать ученика java ? – mak_hash_off Jan 18 '15 at 13:24
  • 1
    @mak_hash_off, я ни слова не сказал о написании прикладных программ, я настаивал на удобности Python для обучения. В Java даже для написания Hello World потребуется создать класс, да и впоследствии жёстко навязывается ООП. Python же не заставляет ученика жёстко следовать какой-либо парадигме. К тому же в Python есть замечательный интерактивный режим, в котором результат выполнения команды сразу отображается на экране. Может ли C++, Java, C# или Delphi похвастаться таким? Вообще, наш с вами диалог вряд ли будет полезен автору вопроса, ибо это классический холивар. Засим откланяюсь - лимит-с. – fori1ton Jan 18 '15 at 13:37