Update from 14
This commit is contained in:
parent
0eb7f0b1c0
commit
fcd73c9b90
8 changed files with 39 additions and 52 deletions
|
|
@ -11,10 +11,10 @@
|
|||
|
||||
Следствия и дополнения вышеизложенных принципов:
|
||||
|
||||
1. Запрет на использование глобальных переменных
|
||||
1. Запрет на использование глобальных переменных.
|
||||
2. Не более одного выхода из функции. Исключение составляет предварительная проверка аргументов функции.
|
||||
3. Не более одного выхода из цикла - это может быть как условие, так и ключевое слово break
|
||||
4. Вложенность любых блоков не должна превышать 4
|
||||
5. Размер функций ограничен по строкам и составляет 40-50 строк
|
||||
3. Не более одного выхода из цикла — это может быть как условие, так и ключевое слово break.
|
||||
4. Вложенность любых блоков не должна превышать 4.
|
||||
5. Размер функций ограничен по строкам и составляет 40-50 строк.
|
||||
|
||||

|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
Message from developers:
|
||||
Hello, dear friend!
|
||||
Message from the developers:
|
||||
Hello dear friend!
|
||||
Let's play a game.
|
||||
Something like the good old text-based adventures with puzzle elements.
|
||||
Each task is a challenge, usually some kind of hurdle you have to overcome.
|
||||
|
|
@ -14,9 +14,9 @@ Here are some tips to help you find your way:
|
|||
6. Be careful with sources of information. Check. Think. Analyze. Compare. Do not trust.
|
||||
7. Pay attention to the text of the problem. Think. Check.
|
||||
8. If the task seems unclear or impossible — it only seems that way. Take your time, sit in silence or with your favorite music. In 10-15 minutes, return to the assignment and read the entire text again.
|
||||
9. If tip #8 didn't help — find a guide. You are surrounded by many wanderers just like you and they will be happy to help you find your way out.
|
||||
9. If tip #8 didn't help — find a guide. You are surrounded by many walkers just like you and they will be happy to help you find your way out.
|
||||
10. Watch the time! It's deceptive. You must complete at least one challenge per day!
|
||||
11. Pay attention and do not miss important things. Check the repository carefully!
|
||||
11. Be careful not to miss anything important. Check the repository carefully!
|
||||
12. Always push to the develop branch only! The master branch will be ignored. Work in the src directory.
|
||||
13. Remember that each task goes through a series of checks: code style check, static analyzer check, check for correct work with memory, check with a set of autotests, check with a checklist. Be careful.
|
||||
14. You will encounter various tasks along the way. The tasks marked with an asterisk (*) are for the most foolhardy. They are more difficult and not mandatory. However, completing them will give you extra experience and knowledge.
|
||||
|
|
@ -27,6 +27,6 @@ Here are some tips to help you find your way:
|
|||
19. Divide and conquer. Decompose.
|
||||
20. Think about the big picture (good code, obviously). Move from the general to the specific.
|
||||
21. Do not cheat, do not try to deceive the system and others. You will fool yourself first.
|
||||
22. Do not write off, but if you use help — always find it out to the end. Otherwise your journey will be meaningless.
|
||||
23. Check the "materials" folder often. There can be a lot of useful stuff in there!
|
||||
22. Do not copy the work of others, but if you use help — always understand it to the end. Otherwise your journey will be meaningless.
|
||||
23. Check the "materials" folder often. There can be a lot of useful stuff there!
|
||||
24. Reread these tips several times.
|
||||
|
|
|
|||
|
|
@ -3,31 +3,30 @@
|
|||
Мы предлагаем тебе сыграть в игру.
|
||||
Игру в духе старых добрых текстовых квестовых игр-бродилок с элементами головоломки.
|
||||
Каждый Task — это очередное испытание, обычно некоторое препятствие, которое необходимо преодолеть.
|
||||
Лишь тот, кто пройдет все, сможет двинуться дальше.
|
||||
Лишь тот, кто пройдет все — сможет двинуться дальше.
|
||||
|
||||
Ниже приведено несколько напутствий, они помогут тебе найти свой путь:
|
||||
1. Всю дорогу тебя будет сопровождать чувство неопределенности и острого дефицита информации: ЭТО НОРМАЛЬНО. Это часть игры. Не забывай, что информация в репозитории и Google — всегда с тобой. Как и другие игроки. Общайся. Ищи. Собирай. Не бойся ошибиться.
|
||||
2. В игре может быть другая игра, в которой будет еще одна. Это нормально. Все как в жизни. Рекурсия — это красиво.
|
||||
3. Уровни могут сильно отличаться друг от друга. Это нормально. Это часть игры. Нельзя выучить один рецепт и его везде применять. Лишь непрерывно обучаясь и адаптируясь ты сможешь достигнуть цели.
|
||||
3. Уровни могут сильно отличаться друг от друга. Это нормально. Это часть игры. Нельзя выучить один рецепт и его везде применять. Лишь непрерывно обучаясь и адаптируясь, ты сможешь достигнуть цели.
|
||||
4. Наша игра — многопользовательская, даже если сначала тебе покажется иначе.
|
||||
5. Хотя, большую часть пути ты сможешь преодолеть и один.
|
||||
5. Хотя большую часть пути ты сможешь преодолеть и один.
|
||||
6. Будь внимателен к источникам информации. Проверяй. Думай. Анализируй. Сравнивай. Не доверяй.
|
||||
7. Будь внимателен к тексту задания. Думай. Проверяй.
|
||||
8. Если задание кажется непонятным или невыполнимым — это только так кажется. Просто посиди спокойно, в тишине, или включи любимую музыку. Вернись к заданию через 10-15 минут и перечитай его полностью.
|
||||
9. Если п.8 не помог — поищи проводника. Вокруг тебя — много таких же путников, как ты, они с радостью помогут найти тебе выход.
|
||||
8. Если задание кажется непонятным или невыполнимым — это только так кажется. Просто посиди спокойно в тишине или включи любимую музыку. Вернись к заданию через 10-15 минут и перечитай его полностью.
|
||||
9. Если п. 8 не помог — поищи проводника. Вокруг тебя много таких же путников, как ты, они с радостью помогут найти тебе выход.
|
||||
10. Следи за временем! Оно коварно. В день ты должен преодолевать минимум одно испытание!
|
||||
11. Будь внимателен — и не упусти важное. Внимательно изучай репозиторий!
|
||||
12. Всегда делай push только в ветку develop! Ветка master будет проигнорирована. Работай в директории src.
|
||||
13. Помни, что каждое задание проходит ряд проверок: проверка на стиль кода, проверка статическим анализатором, проверка на корректную работу с памятью, проверка набором автотестов, проверка с помощью чеклиста. Будь внимателен.
|
||||
14. На твоем пути тебе встретятся разные задания. Те, что помечены звездочкой (*), подходят только для самых отчаянных. Они с повышенной сложностью и в целом не являются обязательными к выполнению. Но если ты их сделаешь, то получишь дополнительный опыт и знания.
|
||||
15. Иногда то, что кажется важным — не есть важное.
|
||||
16. Помни, в конечном счете, факт преодоления препятствия не так важен, как то, КАК ты его преодолел.
|
||||
16. Помни: в конечном счете факт преодоления препятствия не так важен, как то, КАК ты его преодолел.
|
||||
17. Главная цель нашего путешествия — осознать, что такое «КАК».
|
||||
18. Отделяй зерна от плевел.
|
||||
19. Разделяй и властвуй. Декомпозируй.
|
||||
20. Думай о главном (о хорошем коде, разумеется). Следуй от общего к частному.
|
||||
21. Не жульничай, не пытайся обмануть систему и окружающих. В первую очередь ты обманешь себя.
|
||||
22. Не списывай, а если пользуешься помощью — всегда разбирайся до конца, почему, как и зачем. Иначе твое путешествие не будет иметь никакого смысла.
|
||||
22. Не списывай, а если пользуешься помощью — всегда разбирайся до конца, почему, как и зачем. Иначе твое путешествие не будет иметь никакого смысла.
|
||||
23. Почаще заглядывай в папку materials. Там может быть много полезного!
|
||||
24. Перечитай напутствия несколько раз.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# Instructions for running tests.
|
||||
# Instructions for running tests
|
||||
|
||||
In addition to testing for correct output data, the autotest system will check your program and its source code for the
|
||||
following points:
|
||||
|
|
|
|||
|
|
@ -1,13 +1,9 @@
|
|||
# Инструкция по запуску тестов.
|
||||
# Инструкция по запуску тестов
|
||||
|
||||
Помимо тестов на корректные выходные данные система автотестирования будет проверять твою программу и ее исходный код по
|
||||
следующим пунктам:
|
||||
Помимо тестов на корректные выходные данные система автотестирования будет проверять твою программу и ее исходный код по следующим пунктам:
|
||||
|
||||
* **Стилевые тесты.** Чтобы проверить, насколько красота твоего кода соответствует стандартам, ты можешь протестировать
|
||||
свой код с помощью утилиты _clang-format_. В папке ```materials/linters``` лежит файл ```.clang-format```, который
|
||||
содержит необходимые настройки для стилевого теста. Данный конфигурационный файл распространяет свое действие на все
|
||||
файлы, которые лежат с ним в директории или в директориях ниже. Поэтому, чтобы данные настройки применились к твоим
|
||||
файлам с исходным кодом, скопируй ```.clang-format``` в папку ```src```. \
|
||||
* **Стилевые тесты.** Чтобы проверить, насколько красота твоего кода соответствует стандартам, ты можешь протестировать свой код с помощью утилиты _clang-format_. В папке ```materials/``` лежит файл ```.clang-format```, который содержит необходимые настройки для стилевого теста. Данный конфигурационный файл распространяет свое действие на все файлы, которые лежат с ним в директории или в директориях ниже. Поэтому, чтобы данные настройки применились к твоим файлам с
|
||||
исходным кодом, скопируй ```.clang-format``` в папку ```src```. \
|
||||
\
|
||||
Чтобы запустить проверку на стиль, выполни следующую команду: \
|
||||
```clang-format -n src/sourcefile_name.c``` \
|
||||
|
|
@ -24,18 +20,13 @@
|
|||
Google Style: https://google.github.io/styleguide/cppguide.html
|
||||
|
||||
|
||||
* **Тест на корректную работу с памятью.** При написании C-программ очень важно следить за утечками памяти. Для этого в
|
||||
Unix-подобных операционных системах довольно часто используют утилиту _valgrind_. Однако, на OS X имеются проблемы с
|
||||
поддержкой _valgrind_, поэтому вместо нее можно использовать утилиту _leaks_. Вдаваться в механизм работы этих утилит
|
||||
* **Тест на корректную работу с памятью.** При написании C-программ очень важно следить за утечками памяти. Для этого в Unix-подобных операционных системах довольно часто используют утилиту _valgrind_. Однако на OS X имеются проблемы с поддержкой _valgrind_, поэтому вместо нее можно использовать утилиту _leaks_. Вдаваться в механизм работы этих утилит
|
||||
мы сейчас не будем — если интересно, можешь почитать в гугле.
|
||||
|
||||
**_LEAKS_**
|
||||
|
||||
Чтобы запустить свой исполняемый файл с помощью этой утилиты, набери в терминале: \
|
||||
```leaks -atExit -- ./main.out | grep LEAK:```
|
||||
|
||||
Обрати внимание на команду ```| grep LEAK:```. Мы используем ее для короткого вывода, чтобы видеть только линии с
|
||||
утечками, если они есть. Если ты хочешь увидеть весь вывод, просто удали эту команду.
|
||||
Обрати внимание на команду ```| grep LEAK:```. Мы используем ее для короткого вывода, чтобы видеть только линии с утечками, если они есть. Если ты хочешь увидеть весь вывод, просто удали эту команду.
|
||||
|
||||
При запуске исполняемого файла с помощью _leaks_ может появиться сообщение об ошибке:
|
||||
> dyld: could not load inserted library ‘/usr/local/lib/libLeaksAtExit.dylib’ because image not found
|
||||
|
|
@ -48,8 +39,7 @@
|
|||
```
|
||||
|
||||
_Дополнительно:_ \
|
||||
Используй флаг ```-exclude``` утилиты _leaks_ для того, чтобы отфильтровать утечки в функциях, где известно об
|
||||
утечках памяти. Этот флаг позволяет уменьшить количество посторонней информации, сообщаемой _leaks_.
|
||||
Используй флаг ```-exclude``` утилиты _leaks_ для того, чтобы отфильтровать утечки в функциях, где известно об утечках памяти. Этот флаг позволяет уменьшить количество посторонней информации, сообщаемой _leaks_.
|
||||
|
||||
**_VALGRIND_**
|
||||
|
||||
|
|
@ -62,6 +52,4 @@
|
|||
|
||||
Не рекомендуется использовать _valgrind_ на OS X, вместо нее лучше использовать _leaks_.
|
||||
|
||||
* **Тест сборки.** Программу можно проверить на корректность сборки на тестовой системе. Для этого потребуется
|
||||
установленный _Docker_. Если на системе есть докер, то можно зайти в директорию `materials/build` и запустить оттуда
|
||||
скрипт run.sh. Скрипт обернет твое решение в докер и запустит его вместе с типовым сценарием сборки.
|
||||
* **Тест сборки.** Программу можно проверить на корректность сборки на тестовой системе. Для этого потребуется установленный _Docker_. Если на системе есть докер, то можно зайти в директорию `materials/build` и запустить оттуда скрипт run.sh. Скрипт обернет твое решение в докер и запустит его вместе с типовым сценарием сборки.
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
Это задание является первым из серии BrickGame. Всего будет четыре проекта, в каждом — своя игра и свои технологии. Но помимо разработки новых проектов, необходимо будет поддерживать и старые игры, и добавлять поддержку новых игр в старые проекты. В этот раз интерфейс будет консольным, в следующем — десктопный, и так далее. Для того чтобы поддерживать старые и новые игры, необходимо заранее определиться, как будет устроено АПИ интерфейсов и библиотек, чтобы в дальнейшем не приходилось переписывать уже сданные проекты.
|
||||
|
||||
Игровое поле представляется, как матрица размерностью десять на двадцать. Каждый элемент матрицы соответствует «пикселю» игрового поля и может находится в одном из двух состояний: пустой и заполненный. Кроме игрового поля, у каждой игры есть дополнительная информация, которая выводится в боковой панели справа от игрового поля. Для дополнительной информации, не используемой во время игры, предусмотреть заглушки.
|
||||
Игровое поле представляется, как матрица размерностью десять на двадцать. Каждый элемент матрицы соответствует «пикселю» игрового поля и может находиться в одном из двух состояний: пустой и заполненный. Кроме игрового поля, у каждой игры есть дополнительная информация, которая выводится в боковой панели справа от игрового поля. Для дополнительной информации, не используемой во время игры, следует предусмотреть заглушки.
|
||||
|
||||
Каждая библиотека с игрой должна иметь функцию, принимающую на вход пользовательский ввод. У консоли имеется восемь физических кнопок: начало игры, пауза, завершение игры, действие и четыре стрелочки.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue