Шаг-01: Пролог.
Пишу Тетрис на коленке.
Почему тетрис, а не змейка или арканоид?
Потому что с точки зрения кодинга - БЕЗ РАЗНИЦЫ.
Зачем я пишу этот тетрис?
Потому што я школьник и я учусь.
Если вы ещё не писали свой тетрис, змейку или арканоид то этот пайпер, возможно, будет вам. интересен.
Я не буду тут учить вас С++ - я буду писать игру Тетрис и по возможности буду проговаривать вслух те мысли, которые неизбежно будут проскакивать в моей голове, пока я буду писать код.
"Итак, у вас есть план, мистер Фикс?"
Да! У меня есть План:
1. Инструменты, которые мне понадобятся.
2. Как должна выглядеть игра.
3. Первый код.
4. Где рисовать
5. Как писать код.
7. Из чего состоит игра.
8. Тесты.
9. Релиз.
В плане нет ничего про С++ кодинг, а вопросов связанный с ним может быть поболя, чем 100500.
Если я быстро пройдусь по этому плану, то у меня получится вступление. Годно.
Увы не все моменты, которые мне будут интересны я смогу проговорить вслух, поэтому надежда на комменты))
1.
Инструменты, которые мне понадобятся.
Редактор кода Code::Blocks
Компилятор MSYS2 GCC
Это всё.
по мне это лучший выбор для небольших проектов.
2.
Как должна выглядеть игра.
Наикратчайший вариант по скорости написания - консоль.
Консоль безцветная и мигающая, потому что не хочу привязываться к виндосу.
Я уже знаю, мне захочется большего эстетизма,
поэтому, возможно, я добавлю SFML.
Именно добавлю, а не перепишу на SFML.
Почему SFML?
Потому что он для детей - его не надо учить - берёшь и используешь согласно документации.
3.
Первый код.
- проверим русский язык.
- убедимся что у нас есть С++17
+ Показать
4.
Где рисовать
Количество выпущенного железа в разы больше, чем живущих на планете людей.
И ... я не хочу ничего знать про это железо!
Я буду рисовать в абстрактном двумерном(для удобства) массиве, аля, в матрице!
Вместо пикселей - символы ucs-2(внимание - шрифт консоли не все умеет):
вот моя доска матрица, где я и буду рисовать:
unsigned H = 20 ;
unsigned W = 30 ;
wchar_t C = '.';
std::vector<std::wstring> scr(H, std::wstring(W, C));
И всё же нужно выбрать способ вывода на железку, которая мой монитор.
Так выбор сделан на консоль, то:
struct Hard
{
Hard& operator<<(const VScreen& scr)
{ for(const auto& s : scr.mat)
{ std::wcout << s << '\n';
} std::wcout << '\n';
return *this;
}
};
+ полный тест:
вот такая доска для рисования:

5.
Как писать код.
три способа на вскидку:
1. В один файл.
2. Много файлов *.h и один main.cpp
3. Много файлов *.h + *.cpp + main.cpp
выберу второй, хотя и проект мелковат, но и как бы будет "по взрослому".
Пишем код так, пишем логику, если логика похожа на олимпиадную задачу,
то убираем такой код в общий раздел.
7.
Из чего состоит игра.
Тут получится план на код:
1. Код общий - логически не связан с тетрисом.
2. Код логически связан с тетрисом.
- Падающая фигура.
- Корзина, сама корзина + её содержимое.
- Клавиатура.
- Банеры.
- Игра(главный игровой цикл).
8.
Тесты.
Тесты хороши не только ради тестов, но и автоматом склоняют к лучшему проектированию программы. Чтобы тесты не захламляли основной код, то для них я заведу второй проект.
Заключительный тест - это итоговый релиз.
9.
Релиз.
Это не первый мой тетрис.
По итогу релиз будет выглядеть примерно так:
Вот написал первую статью - интересно понадобиться она кому-нибудь или нет. Очень хочу услышать ваши отзывы по этому поводу! Заранее спасибо!
Ссылка
2 ноя 2007
Добро пожаловать!
Одним из первичных вопросов для программировании игр - знание языка программирования. Наиболие распространенным языком для написания игр является C++. Язык довольно сложный, и начинающему будет нелегко самостоятельно овладеть всеми тонкостями. Это сообщество предназначается для начинающих! Тех кто очень хочет создать из ничего что-то!
Для начала я думаю стоит назначить отправную точку. Прежде всего, для ознакомления с общей концепцией программирования на С++, стоит обратить внимание на предка этого мощного инструмента разработки - язык С. Собственно с него мы и начнем!
Для изучения этого языка, а также языка С++ и использования в последующем DirectX или OpenGL. Нам потребуется пакет Visual Studio C++ 6, либо Visual Studio .NET и выше. Все примеры будут проверены в среде Microsoft Visual Studio .NET Enterprise 2003.
Запасайтесь пакетом, желающие мне помогать - помогайте . А я начну писать первую статью!
Ссылка | Комментарии [6]
1 ноя 2007