В этой статье расмотрено классическое приложение Hello, World! Краткое введение в среду Visual Studio C++ и также разобран код нашего первого приложения на С! Так сказать - первый шаг в мир программирования на С/С++!
Читать | Комментарии [14]
2 ноя 2007
В этой статье расмотрено классическое приложение Hello, World! Краткое введение в среду Visual Studio C++ и также разобран код нашего первого приложения на С! Так сказать - первый шаг в мир программирования на С/С++!
Читать | Комментарии [14]
18 окт 2023
PS:
///----------------------------------------------------------------------------|
данный проект репроектился тут https://github.com/BDOTimer/Calculattor-2024.Apr
///----------------------------------------------------------------------------|
...
Итак, ... тик-так,
Цель: уменьшить время, которое я провожу фо флейме.
Напишу ка, я тут, обычный(хз, или необычный) калькулятор.
Сразу о том, что это будет за калькулятор,
он будет НЕ КНОПОЧНЫЙ, а СТРОЧНЫЙ.
на вход подаётся строка текста,
на выходе результат вычисления.
всё просто.
1.
да,
я видел калькулятор у страуструпа,
и чуть ранее писал свои,
и даже пару написал своих.
2.
хочу исправить тамошние недостатки, такие как, например,
- парсинг и вычисление в одной и той же процедуре кода.
- негодность для рисования графиков.
- неочевидная легкость(т.е. сложность) добавления новых операторов.
- ...
3.
В релизе,
собсно форма, на которой два контрола:
- Control ввода строки текта
- Control вывода(рисования) графика
- ...(контролы масштаба и тп..)
4.
не будет никакого дедлайна - т.е. я не буду торопиться.
но я по опыту(возможно кривому) уже знаю, что у меня тут есть только 15 страниц.
в эти 15 страниц я обязуюсь уложиться))
(тутошнюю верстку я обсуждать не буду)
5.
заявить, что я пишу этот журнал для тех кто изучает С++,
будет брехня, ибо С++ ради С++ меня ваще никогда не интересовал,
однако, возможно оно и будет кому то полезно, я не возражаю.
в общем то эти записи чисто ради моего личного фана,
поддержания тонуса, и ясного осознания моей социальной животности.
...
Итого,
конечный желаемый результат разделю на две части:
1.
Сам консольный калькулятор.
2.
Демо вариантов его использования.
Ссылки на инструменты:
версия для винды(то что буду юзать я):
1. Редактор кода: Code::Blocks
2. С++17 компилятор(i686-posix-dwarf-gcc-13.1.0-mingw-w64msvcrt-11).
Вместо хеллоуворлда:
///----------------------------------------------------------------------------| /// -std=c++17 /// Исходник в utf-8 ///----------------------------------------------------------------------------: #include <iostream> #include <string> ///----------------------------------------------------------------------------| /// Calculator. ///----------------------------------------------------------------------------: namespace Calculator { using T = double; struct Instance { Instance() = default; Instance( std::string_view s){ parse( s); } ///---------------------| /// Парсинг строки. | ///---------------------: void parse( std::string_view s) { /// TODO ... } ///---------------------| /// Само вычисление. | ///---------------------: T calc( ) { /// TODO ... return 0; } ///---------------------| /// Тест. | ///---------------------: static bool test( std::string_view s, T r) { Instance instance; instance.parse( s); return instance.calc ( ) == r; } private: }; } #define TEST( a) Calculator::Instance::test( #a, a) ///-----------------------------| /// Тесты. | ///-----------------------------: bool tests( ) { bool isgood = true; isgood &= TEST( 3 - 3); isgood &= TEST( 4 * 5); return isgood; } ///----------------------------------------------------------------------------| /// main. ///----------------------------------------------------------------------------: int main( ) { setlocale( 0, ""); std::wcout << L"Привет, я ваш Calculator!\n\n"; std::wcout << L"Тесты: " << ( tests( ) ? L"ОТЛИЧНO" : L"ПЛОХО\a") << '\n'; }
10 июня 2023
Пишу Тетрис на коленке.
Почему тетрис, а не змейка или арканоид?
Потому что с точки зрения кодинга - БЕЗ РАЗНИЦЫ.
Зачем я пишу этот тетрис?
Потому што я школьник и я учусь.
Если вы ещё не писали свой тетрис, змейку или арканоид то этот пайпер, возможно, будет вам. интересен.
Я не буду тут учить вас С++ - я буду писать игру Тетрис и по возможности буду проговаривать вслух те мысли, которые неизбежно будут проскакивать в моей голове, пока я буду писать код.
"Итак, у вас есть план, мистер Фикс?"
Да! У меня есть План:
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.
Релиз.
Это не первый мой тетрис.
По итогу релиз будет выглядеть примерно так:
На самом деле я полностью перепишу код демонстрируемый гифкой выше.
Это было вступление ...
Ссылка | Комментарии [85]
2 ноя 2007
Вот написал первую статью - интересно понадобиться она кому-нибудь или нет. Очень хочу услышать ваши отзывы по этому поводу! Заранее спасибо!
1 ноя 2007
Добро пожаловать!
Одним из первичных вопросов для программировании игр - знание языка программирования. Наиболие распространенным языком для написания игр является C++. Язык довольно сложный, и начинающему будет нелегко самостоятельно овладеть всеми тонкостями. Это сообщество предназначается для начинающих! Тех кто очень хочет создать из ничего что-то!
Для начала я думаю стоит назначить отправную точку. Прежде всего, для ознакомления с общей концепцией программирования на С++, стоит обратить внимание на предка этого мощного инструмента разработки - язык С. Собственно с него мы и начнем!
Для изучения этого языка, а также языка С++ и использования в последующем DirectX или OpenGL. Нам потребуется пакет Visual Studio C++ 6, либо Visual Studio .NET и выше. Все примеры будут проверены в среде Microsoft Visual Studio .NET Enterprise 2003.
Запасайтесь пакетом, желающие мне помогать - помогайте . А я начну писать первую статью!
Ссылка | Комментарии [6]