Update from 12
This commit is contained in:
parent
e78f187cda
commit
8912bb7190
10 changed files with 130 additions and 130 deletions
|
|
@ -1,32 +1,32 @@
|
|||
Message from developers:
|
||||
Hello, dear friend!
|
||||
Let's play a game.
|
||||
Something like the good old text-based adventure games with elements of a puzzle.
|
||||
Each Task is a challenge, usually some kind of a hurdle you need to overcome.
|
||||
Only those who tackle them all will be able to move further.
|
||||
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.
|
||||
Only those who complete them will be able to advance.
|
||||
|
||||
Below are several tips to help you find your way:
|
||||
1. During the entire journey, you will be accompanied by the feeling of uncertainty and a severe shortage of information: THAT'S OK. It's a part of the game. Remember that the information in the repository and Google are always there for you. Just like other players. Communicate. Search. Collect. Do not be afraid to make a mistake.
|
||||
2. There may be a game inside the game, and another game inside it. That's normal. Just like in real life. Recursion is beautiful.
|
||||
3. Levels can be very different from one another. That's normal. It's a part of the game. You can't just learn one recipe and apply it everywhere. The only way to achieve the goal is by continuously learning and adapting.
|
||||
4. It's a multiplayer game, even if it doesn't seem like it in the beginning.
|
||||
5. You will, however, be able to get through most of it on your own.
|
||||
6. Be careful with information sources. Check. Think. Analyze. Compare. Do not trust.
|
||||
7. Pay attention to the text of the task. Think. Check.
|
||||
8. If the task seems unclear or impossible–it only seems like it. Take your time, sit down in silence or with your favorite music. Get back to the task in 10–15 minutes and read the entire text once again.
|
||||
9. If tip #8 hasn't helped–search for a guide. You are surrounded by many wanderers just like you and they will be happy to help you find the exit.
|
||||
10. Watch the time! It's deceitful. You have to complete at least one challenge a day!
|
||||
11. Be attentive and do not miss important things. Check the repository carefully!
|
||||
12. Always push only to the develop branch! The master branch will be ignored. Work in the src directory.
|
||||
13. Remember that each task undergoes 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 come across different tasks on your way. The tasks marked with the asterisk (*) are only for the most reckless ones. They are more difficult and not compulsory. But if you complete them, you will gain extra experience and knowledge.
|
||||
15. Some things may seem important but they are actually not.
|
||||
16. Remember that ultimately the fact of completing the challenge is not as important as HOW you complete it.
|
||||
Here are some tips to help you find your way:
|
||||
1. Throughout your journey, you will feel a sense of uncertainty and a severe lack of information: THAT'S OK. It's part of the game. Remember that the information in the repository and Google is always there for you. Just like other players. Communicate. Search. Collect. Do not be afraid to make mistakes.
|
||||
2. There may be a game in the game and another game in the game. That's normal. Just like in real life. Recursion is beautiful.
|
||||
3. Levels can be very different from each other. That's normal. It's part of the game. You can't just learn one recipe and apply it everywhere. The only way to get there is to keep learning and adapting.
|
||||
4. It's a multiplayer game, even if it doesn't seem like it at first.
|
||||
5. You can do most of it on your own.
|
||||
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.
|
||||
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!
|
||||
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.
|
||||
15. Some things may seem important, but they are not.
|
||||
16. Remember that in the end, the fact that you complete the challenge is not as important as HOW you complete it.
|
||||
17. The main goal of our journey is to understand what "HOW" means.
|
||||
18. Separate the wheat from the chaff.
|
||||
19. Divide and rule. Decompose.
|
||||
20. Think about the main thing (good code, obviously). Move from the general to the specific.
|
||||
21. Do not cheat, do not try to deceive the system and others. First of all, you will deceive yourself.
|
||||
22. Do not write off, but if you use help - always figure it out to the end. Otherwise, your journey will not make any sense.
|
||||
23. Check "materials" folder often. There can be a lot of useful things there!
|
||||
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!
|
||||
24. Reread these tips several times.
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
От разработчиков:
|
||||
Здравствуй, дорогой друг!
|
||||
Мы предлагаем сыграть тебе в игру.
|
||||
Игру, в духе старых добрых текстовых квестовых игр-бродилок с элементами головоломки.
|
||||
Каждый Task — это очередное испытание, обычно некоторое препятствие, которое необходимо преодолеть.
|
||||
Лишь тот, кто пройдет все — сможет двинуться дальше.
|
||||
Мы предлагаем тебе сыграть в игру.
|
||||
Игру в духе старых добрых текстовых квестовых игр-бродилок с элементами головоломки.
|
||||
Каждый Task — это очередное испытание, обычно некоторое препятствие, которое необходимо преодолеть.
|
||||
Лишь тот, кто пройдет все, сможет двинуться дальше.
|
||||
|
||||
Ниже приведено несколько напутствий, они помогут тебе найти свой путь:
|
||||
1. Всю дорогу тебя будет сопровождать чувство неопределенности и острого дефицита информации: ЭТО НОРМАЛЬНО. Это часть игры. Не забывай, что информация в репозитории и Google — всегда с тобой. Как и другие игроки. Общайся. Ищи. Собирай. Не бойся ошибиться.
|
||||
|
|
@ -19,15 +19,15 @@
|
|||
11. Будь внимателен — и не упусти важное. Внимательно изучай репозиторий!
|
||||
12. Всегда делай push только в ветку develop! Ветка master будет проигнорирована. Работай в директории src.
|
||||
13. Помни, что каждое задание проходит ряд проверок: проверка на стиль кода, проверка статическим анализатором, проверка на корректную работу с памятью, проверка набором автотестов, проверка с помощью чеклиста. Будь внимателен.
|
||||
14. На твоем пути тебе встретятся разные задания. Те, что помечены звездочкой (*) — подходят только для самых отчаянных. Они с повышенной сложностью и в целом не являются обязательными к выполнению. Но если ты их сделаешь, то получишь дополнительный опыт и знания.
|
||||
14. На твоем пути тебе встретятся разные задания. Те, что помечены звездочкой (*), подходят только для самых отчаянных. Они с повышенной сложностью и в целом не являются обязательными к выполнению. Но если ты их сделаешь, то получишь дополнительный опыт и знания.
|
||||
15. Иногда то, что кажется важным — не есть важное.
|
||||
16. Помни, в конечном счете, факт преодоления препятствия не так важен, как то, КАК ты его преодолел.
|
||||
17. Главная цель нашего путешествия — осознать, что такое “КАК”.
|
||||
17. Главная цель нашего путешествия — осознать, что такое «КАК».
|
||||
18. Отделяй зерна от плевел.
|
||||
19. Разделяй и властвуй. Декомпозируй.
|
||||
20. Думай о главном (о хорошем коде, разумеется). Следуй от общего к частному.
|
||||
21. Не жульничай, не пытайся обмануть систему и окружающих. В первую очередь ты обманешь себя.
|
||||
22. Не списывай, а если пользуешься помощью - всегда разбирайся до конца, почему, как и зачем. Иначе твое путешествие не будет иметь никакого смысла.
|
||||
22. Не списывай, а если пользуешься помощью — всегда разбирайся до конца, почему, как и зачем. Иначе твое путешествие не будет иметь никакого смысла.
|
||||
23. Почаще заглядывай в папку materials. Там может быть много полезного!
|
||||
24. Перечитай напутствия несколько раз.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +1,20 @@
|
|||
# Инструкция по запуску тестов.
|
||||
|
||||
Помимо тестов на корректные выходные данные система автотестирования будет проверять вашу программу и ее исходный код по
|
||||
Помимо тестов на корректные выходные данные система автотестирования будет проверять твою программу и ее исходный код по
|
||||
следующим пунктам:
|
||||
|
||||
* **Стилевые тесты.** Чтобы проверить, насколько красота вашего кода соответствует стандартам, вы можете протестировать
|
||||
ваш код с помощью утилиты _clang-format_. В папке ```materials/linters``` лежит файл ```.clang-format```, который
|
||||
* **Стилевые тесты.** Чтобы проверить, насколько красота твоего кода соответствует стандартам, ты можешь протестировать
|
||||
свой код с помощью утилиты _clang-format_. В папке ```materials/linters``` лежит файл ```.clang-format```, который
|
||||
содержит необходимые настройки для стилевого теста. Данный конфигурационный файл распространяет свое действие на все
|
||||
файлы, которые лежат с ним в директории или в директориях ниже. Поэтому, чтобы данные настройки применились к вашим
|
||||
файлам с исходным кодом, скопируйте ```.clang-format``` в папку ```src```. \
|
||||
файлы, которые лежат с ним в директории или в директориях ниже. Поэтому, чтобы данные настройки применились к твоим
|
||||
файлам с исходным кодом, скопируй ```.clang-format``` в папку ```src```. \
|
||||
\
|
||||
Чтобы запустить проверку на стиль, выполните следующую команду: \
|
||||
Чтобы запустить проверку на стиль, выполни следующую команду: \
|
||||
```clang-format -n src/sourcefile_name.c``` \
|
||||
\
|
||||
Чтобы скачать _clang-format_, введите в терминал одну из следующих команд: \
|
||||
Чтобы скачать _clang-format_, введи в терминал одну из следующих команд: \
|
||||
```brew install clang-format``` \
|
||||
или, если у вас есть root-права (для Ubuntu / Linux Mint / Debian) \
|
||||
или, если у тебя есть root-права (для Ubuntu / Linux Mint / Debian) \
|
||||
```sudo apt install clang-format```
|
||||
|
||||
Необходимая версия clang-format: \
|
||||
|
|
@ -27,41 +27,41 @@
|
|||
* **Тест на корректную работу с памятью.** При написании 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
|
||||
|
||||
Ошибка возникает из-за того, что _leaks_ не может найти библиотеку _libLeaksAtExit.dylib_. \
|
||||
В этом случае вам необходимо ввести следующие команды:
|
||||
В этом случае тебе необходимо ввести следующие команды:
|
||||
```sh
|
||||
cd /usr/local/lib
|
||||
sudo ln -s /Applications/Xcode.app/Contents/Developer/usr/lib/libLeaksAtExit.dylib
|
||||
```
|
||||
|
||||
_Дополнительно:_ \
|
||||
Используйте флаг ```-exclude``` утилиты _leaks_ для того, чтобы отфильтровать утечки в функциях, где известно об
|
||||
Используй флаг ```-exclude``` утилиты _leaks_ для того, чтобы отфильтровать утечки в функциях, где известно об
|
||||
утечках памяти. Этот флаг позволяет уменьшить количество посторонней информации, сообщаемой _leaks_.
|
||||
|
||||
**_VALGRIND_**
|
||||
|
||||
Чтобы установить _valgrind_ на компьютер, введите одну из следующих команд: \
|
||||
Чтобы установить _valgrind_ на компьютер, введи одну из следующих команд: \
|
||||
```brew install valgrind``` \
|
||||
или, если у вас есть root-права (для Ubuntu / Linux Mint / Debian) \
|
||||
или, если у тебя есть root-права (для Ubuntu / Linux Mint / Debian) \
|
||||
```sudo apt install valgrind``` \
|
||||
Чтобы запустить ваш исполняемый файл с помощью этой утилиты, наберите в терминале: \
|
||||
Чтобы запустить свой исполняемый файл с помощью этой утилиты, набери в терминале: \
|
||||
```valgrind --tool=memcheck --leak-check=yes ./main.out```
|
||||
|
||||
Не рекомендуется использовать _valgrind_ на OS X, вместо нее лучше использовать _leaks_.
|
||||
|
||||
* **Тест сборки.** Программу можно проверить на корректность сборки на тестовой системе. Для этого потребуется
|
||||
установленный _Docker_. Если на системе есть докер, то можно зайти в директорию `materials/build` и запустить оттуда
|
||||
скрипт run.sh. Скрипт обернет ваше решение в докер и запустит его вместе с типовым сценарием сборки.
|
||||
скрипт run.sh. Скрипт обернет твое решение в докер и запустит его вместе с типовым сценарием сборки.
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
This task is the first in the BrickGame series. There will be four projects, each with its own game and technology. But in addition to developing new projects, you will also need to support old games and add support for new games to old projects. This time the interface will be console, next time - desktop, and so on. In order to support old and new games, it is necessary to determine in advance how the API of interfaces and libraries will be organized, so that in the future you don't have to rewrite already completed projects.
|
||||
|
||||
The game field is a matrix of ten by twenty dimension. Each element of the matrix corresponds to a "pixel" of the game field and can be in one of two states: empty or filled. In addition to the game field, each game has additional information that is displayed in the sidebar to the right of the game field. Provide stubs for additional information that is not used during the game.
|
||||
The game field is a matrix of ten by twenty dimensions. Each element of the matrix corresponds to a "pixel" of the playfield and can be in one of two states: empty or filled. In addition to the playfield, each game has additional information that is displayed in the sidebar to the right of the playfield. Provide stubs for additional information that is not used during the game.
|
||||
|
||||
Each game library must have a function that accepts user input. The console has eight physical buttons: start game, pause, end game, action, and four arrows.
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
# Спецификация для библиотеки игры из коллекции игр BrickGame
|
||||
|
||||
Это задание является первым из серии BrickGame. Всего будет четыре проекта, в каждой - своя игра и свои технологии. Но помимо разработки новых проектов, необходимо будет поддерживать и старые игры, и добавлять поддержку новых игр в старые проекты. В этот раз интерфейс будет консольным, в следующем - десктопный, и так далее. Для того чтобы поддерживать старые и новые игры необходимо заранее определиться как будет устроено АПИ интерфейсов и библиотек, чтобы в дальнейшем не приходилось переписывать уже сданные проекты.
|
||||
Это задание является первым из серии BrickGame. Всего будет четыре проекта, в каждом — своя игра и свои технологии. Но помимо разработки новых проектов, необходимо будет поддерживать и старые игры, и добавлять поддержку новых игр в старые проекты. В этот раз интерфейс будет консольным, в следующем — десктопный, и так далее. Для того чтобы поддерживать старые и новые игры, необходимо заранее определиться, как будет устроено АПИ интерфейсов и библиотек, чтобы в дальнейшем не приходилось переписывать уже сданные проекты.
|
||||
|
||||
Игровое поле представляется как матрица размерностью десять на двадцать. Каждый элемент матрицы соответствует "пикселю" игрового поля и может находится в одном из двух состояний: пустой и заполненный. Кроме игрового поля у каждой игры есть дополнительная информация, которая выводится в боковой панели справа от игрового поля. Для дополнительной информации, не используемой во время игры, предусмотреть заглушки.
|
||||
Игровое поле представляется, как матрица размерностью десять на двадцать. Каждый элемент матрицы соответствует «пикселю» игрового поля и может находится в одном из двух состояний: пустой и заполненный. Кроме игрового поля, у каждой игры есть дополнительная информация, которая выводится в боковой панели справа от игрового поля. Для дополнительной информации, не используемой во время игры, предусмотреть заглушки.
|
||||
|
||||
Каждая библиотека с игрой должна иметь функцию, принимающую на вход пользовательский ввод. У консоли имеется восемь физических кнопок: начало игры, пауза, завершение игры, действие и четыре стрелочки.
|
||||
|
||||
|
|
@ -37,4 +37,4 @@ void userInput(UserAction_t action, bool hold);
|
|||
GameInfo_t updateCurrentState();
|
||||
```
|
||||
|
||||
Обратите внимание, что информация о текущем состоянии игры `GameInfo_t` может быть представлена внутри библиотеки игры статическим объектом.
|
||||
Обрати внимание, что информация о текущем состоянии игры `GameInfo_t` может быть представлена внутри библиотеки игры статическим объектом.
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
# Topoics list
|
||||
|
||||
Hello, student of School21!😉
|
||||
Hello, School21 student! 😉
|
||||
|
||||
To make it easier for you to navigate the material, we have prepared a list of topics that you will learn in this project.
|
||||
To help you navigate through the material, we have prepared a list of topics that you will learn in this project.
|
||||
|
||||
We will study:
|
||||
|
||||
- finite-state machine;
|
||||
- working with matrixes;
|
||||
- finite state machines;
|
||||
- working with matrices;
|
||||
- working with files;
|
||||
- working with GUI library.
|
||||
- working with the GUI library.
|
||||
|
||||
Now, knowing what awaits you in this project, you can slowly begin to study the topics listed above.😇
|
||||
Now that you know what awaits you in this project, you can slowly begin to study the topics listed above. 😇
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# Topics list
|
||||
|
||||
Привет, участник Школы21!😉
|
||||
Привет, участник «Школы 21»! 😉
|
||||
|
||||
Чтобы тебе было проще, мы подготовили список тем, на которые следует обратить особое внимание при выполнении данного проекта:
|
||||
|
||||
|
|
@ -9,4 +9,4 @@
|
|||
- работа с файлами;
|
||||
- работа с графическими интерфейсами.
|
||||
|
||||
Теперь, когда известен список тем, знания которых потребуются в проекте, можешь приступать к изучению.😇
|
||||
Теперь, когда известен список тем, знания которых потребуются в проекте, можешь смело приступать к изучению. 😇
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue