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

Причина, по которой я хотел заняться кодированием/программированием, заключалась в том, что я хочу попасть в индустрию дизайна видеоигр. Так что, конечно, мой первый проект по моему выбору будет иметь отношение, как вы уже догадались, к видеоиграм. Я создал CLI-программу на основе популярной компьютерной игры «League of Legends». Что он делает, так это то, что он дает вам список всех чемпионов, и вы можете выбрать чемпиона по вашему выбору и увидеть его статистику, а также увидеть их индивидуальные способности. Если вы никогда не слышали о «League of Legends», это то, что считается «многопользовательской сетевой боевой ареной». У вас есть разные чемпионы с разными способностями, каждый из которых играет важную роль в соответствии с другими чемпионами, выбранными вашей командой. Моя вторая царапина, честно говоря, самая сложная часть для меня во всем этом проекте, происходит здесь, в способностях каждого чемпиона.

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

Моя дилемма заключалась в том, что в текущем списке активных чемпионов «Лиги легенд» 148 чемпионов. Я перепробовал все способы, какие только мог придумать, чтобы заставить Нокогири открывать каждую ссылку, которую я выдрал с исходной страницы, но безуспешно. Итак, после того, как я весь день тестировал свой мозг, я наконец придумал что-то настолько простое, что оно не может работать правильно? Интерполяция строки в URL-ссылку? Я был в конце списка идей, и у меня не было вариантов, я подумал, что еще одно сообщение об ошибке позволяет попробовать это:

`https://mobafire.com#{@champion_links[champion_input.to_i — 1]}/abilities`

Так что мне пришлось не только интерполировать, но и включить исходный выбор чемпиона пользователя, чтобы он точно знал, какую ссылку из огромного списка запустить. Какая переменная champion_input является выбранным чемпионом, перенесенным из выбора главного меню. Мне действительно повезло в том смысле, что каждая веб-страница чемпионов о способностях была точно такой же, как та, которую мне удалось получить в первый раз с простой /abilities после нее. Это было так полезно, когда я впервые попробовал это, и оно не только НЕ сломалось, но и фактически вернуло мне способности чемпиона, которого я выбрал.

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