Войти
С++ ПрограммированиеФорум

Услуги наставничества по программированию на C++(Платно) (2 стр)

Страницы: 1 2 3 Следующая »
#15
9:45, 8 июня 2023

xlat-code
ютуб версию если не тяжело и не лень

#16
10:03, 8 июня 2023

BiLL_Gaits
> ютуб версию если не тяжело и не лень
ок.

План такой.
1. Тема: "Tетрис C++17 на коленке с нуля."
2. Пишу у вас тут в треде ~20 постов с пояснялками.
3. Пункт 2 переношу(озвучку могу доверить вам) в видефайл и кладу(кладёте) на ютуб(можно ваш).

Требование к Тетрису.
1. минимальный код для консоли.
2. с учетом порта на SFML.

у мя консоль под Винду,
но т.к. всем всегда хотца кросс, то аскетично(моноцветно и с миганием),
но и за то и автоматом согласуется с требованием п.1

BiLL_Gaits
вопросы, критику и поправки я приветствую.

согласны?

#17
10:05, 8 июня 2023

xlat-code
  А ты не можешь просто сделать чтобы квадратики попадали в дырку?

#18
10:09, 8 июня 2023

равен
> А ты не можешь просто сделать чтобы квадратики попадали в дырку?
ок. создай тему и там обсудим твою дырку.

#19
10:10, 8 июня 2023

xlat-code
> ок. создай тему и там обсудим твою дырку.
xlat-code
> вопросы, критику и поправки я приветствую.

#20
10:41, 8 июня 2023

равен
могу.
жди 20 пост.
дырка будет там.

равен

Запустить видео по клику - Как делать игрыЗапустить видео по клику - Как делать игры

ок. я позже сделаю отдельный тред про квадрат в дырке,
приходи тестится.

+ Показать
#21
12:21, 8 июня 2023

xlat-code
> 2. Пишу у вас тут в треде ~20 постов с пояснялками.
корочъ,

ПОСТ-01

так как это всё же должно быть в форме урока,
то будут присутствовать мои пояснения(не путать с комментами).

есть два способа начать писать прогу:
1. снизу вверх.(не гуд)
2. сверху вниз.(гуд)

первый проще - не надо думать о всей проге,
а рассмотреть только отдельную её часть.

поэтому проще начать с него.

с другой стороны, если эту отдельную часть обобщить,
то она автоматом мигрирует во второй способ и становится отдельным прожектом.
вокак.

Главный ТЕКУЩИЙ вопрос:
ГДЕ МЫ БУДЕМ РИСОВАТЬ,
на доске, листке бумаге или мелом на тротуаре?

1. есно, мы будем рисовать на экране.
2. экран железка и к этой железке есть 100500 способов доступа.
3. какой именно способ будет использован для Тетриса?
4. по идее, хотелось бы, чтобы любой.
5. значит, наш Тетрис ничего не должен знать о конкретном экране.
6. для него мы сделаем абстрактный экран.
7. абстрактный экран это тупо буфер в памяти компа.
8. в нем мы и будем рисовать.
9. чтобы картинку увидеть на мониторе, нам понадобиться процедура для сброса буфера на монитор.
10. + хотя бы один тестовый метод для тестовой отрисовки в сам буфер.

итого все эти пункты в код:

/// Тетрис на коленке.
///----------------------------------------------------------------------------|
/// C++17
/// исходник в utf-8
/// https://rextester.com/RCU7465
///----------------------------------------------------------------------------:

#include <vector>
#include <string>
#include <cassert>

///----------------------------------------------------------------------------|
/// Интерфейс конкретного девайса отображения
///----------------------------------------------------------------------------:
namespace console
{
    void draw (const std::vector<std::wstring>& buf);
    void pause(const std::wstring s);
}

struct Vec2ui
{   unsigned x, y;
};

///----------------------------------------------------------------------------|
/// Виртуальный экран.
///----------------------------------------------------------------------------:
struct  VirtiualScreen
{       VirtiualScreen(Vec2ui sz) : buf(sz.y, std::wstring(sz.x, ' '))
        {
            ///-------------------------------------|
            /// ТОDO: проверить на корректоность sz.|
            ///-------------------------------------?
        }

    Vec2ui get_size() const
    {   return { buf.front().size(), buf.size() };
    }

    void draw(const Vec2ui& pos, wchar_t c)
    {   if(pos.y < buf.size() && pos.x < buf.front().size())
        {   buf[pos.y][pos.x] = c;
        }
    }

    const std::vector<std::wstring>& operator()()
    {   return buf;
    }

private:
    std::vector<std::wstring> buf;
};

///---------------------------|
/// Тестируем работу класса.
///---------------------------:
void testclass_VirtiualScreen()
{
    std::wstring test = {L"Привет! я Тетрис ..."};

    VirtiualScreen vscr({60, 20});

    Vec2ui pos{10, 10};

    for(const auto c : test)
    {   vscr.draw(pos, c);
        pos.x++;
    }

    console::draw(vscr());
}

///----------------------------------------------------------------------------|
/// Старт.
///----------------------------------------------------------------------------:
int main()
{
    testclass_VirtiualScreen();

    console::pause(L"TETRIS FINISH!");
}

///----------------------------------|
/// Ниже подвал:                     |
/// Игра знать не хочет то, что ниже.|
///----------------------------------:
///----------------------------------------------------------------------------|
/// Конкретный способ отображения ...
///----------------------------------------------------------------------------:
#include <iostream>

namespace console
{
    struct  Screen
    {       Screen()
            {   setlocale(0, "");
            };

        void draw(const std::vector<std::wstring>& buf)
        {   for(const auto& s : buf) std::wcout << s << '\n';
        }
    };

    void draw(const std::vector<std::wstring>& buf)
    {   static Screen screen;
        screen.draw(buf);
    }

    void pause(const std::wstring s)
    {   std::wcout << s << '\n';
        std::cin.get();
    }
}

https://rextester.com/RCU7465

BiLL_Gaits
продолжать?

#22
13:18, 8 июня 2023

да

#23
13:18, 8 июня 2023

только ошибки с buf на 40 строке

#24
13:41, 8 июня 2023

xlat-code
> чтобы квадрат попал в дырку его сторона должна быть больше радиуса в
> sqrt(d*d/2) раз.
  А ты соображаешь. Ты наверное Искандер, да?

#25
14:18, 8 июня 2023

BiLL_Gaits
> только ошибки с buf на 40 строке
мой волшебный шар в химчистке.

нужно больше инфы.

а так,
у тя не настроен компилятор.

акроме выше показанного кода в рекстере.

1. Code::Blocks + MSYS GCC 12

+ Показать

2. VS2013

+ Показать

дай больше инфы об ошибке,

#26
14:39, 8 июня 2023

xlat-code
> нужно больше инфы.
https://gamedev.ru/flame/forum/?id=248221&page=244&m=5318814#m3659

#27
14:50, 8 июня 2023

равен
> Ты наверное Искандер, да?
я мог бы быть искандером, но у меня лапки.

возможно Искандер это БиллГайтс или gudleifr

ничаво нельзя исключать в эпоху дипфейков...

xlat-code
> дай больше инфы об ошибке.

BiLL_Gaits
напиши:
1. полный текст ошибки.
2. название твоей OS и её билд.
3. название твоего ИДЕ
4. название компилятора и его версию.

#28
15:06, 8 июня 2023

https://gamedev.ru/flame/forum/?id=237117&m=4783844#m4

#29
18:05, 8 июня 2023

xlat-code
Чуть позже?

Страницы: 1 2 3 Следующая »
С++ ПрограммированиеФорум