Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/84: Рейтинг темы: голосов - 84, средняя оценка - 4.62
13 / 13 / 0
Регистрация: 22.09.2021
Сообщений: 41

Написать игру, в которой главный герой ходит по лабиринту и ищет клад

12.10.2021, 14:08. Показов 20111. Ответов 130

Студворк — интернет-сервис помощи студентам
Нужна помощь по решению задачи.
Задача крайне непосильна для меня. Я был бы признателен если вы мне поможете, но если честно то крайне стыдно просить помощи.
Вот текст задачи: "Написать игру, в которой главный герой ходит по лабиринту и ищет клад. Игровой мир представляет
собой прямоугольную матрицу связанных между собой комнат. У каждой комнаты есть от одной
до четырёх дверей (соответствующих сторонам света). В каждой комнате может быть несколько
игровых объектов, с которыми игрок может взаимодействовать по некоторым игровым правилам.
Цель – найти ключ и сундук, открыть сундук ключом и получить священный Грааль. Игра выполнена
в виде консольного приложения, игрок управляет персонажем, вводя текстовые команды."

Детальное описание хода игры.

Сначала игрок вводит количество комнат, и программа генерирует лабиринт. Игрок оказывается
в одной из комнат лабиринта. При попадании в каждую комнату выводится текст:
You are in the room [x,y]. There are [N] doors: [directions]. Items
in the room: [items list].
Вместо текста в квадратных скобках выводятся, соответственно, координаты комнаты, количество
дверей, направления дверей и список предметов в комнате. После этого игроку предлагается ввести
команды:
— N, S, W и E перемещают игрока в соответствующем направлении;
— get [item] поднимает предмет в комнате и кладет его в инвентарь (кроме сундука);
— drop [item] бросает предмет в комнате, убирая его из инвентаря.
К объекту chest можно применить команду open, которая сработает только в том случае, если
в инвентаре игрока есть объект key. Удачное выполнение этой команды приведет к выигрышу.
Проигрыш происходит в случае, когда у игрока кончается лимит шагов, и он умирает от голода
в мрачных застенках драконьей пещеры. В дополнительных заданиях понятия «жизненная сила»,
«здоровье» и «лимит шагов» по сути означают одно и то же.
Важно: лабиринт не должен быть непроходимым. Не должно быть ситуаций, когда ключ или сундук
находятся в изолированной от игрока части лабиринта, или путь из начальной позиции до ключа
и сундука больше лимита шагов.
Надеюсь на вашу понимание. Есть ещё дополнительные , но можно и без них обойтись.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.10.2021, 14:08
Ответы с готовыми решениями:

Мы создаем игру, в которой главный герой маг. Он может убивать монстров заклинаниями, но для каждого монстра треб
Мы создаем игру, в которой главный герой маг. Он может убивать монстров заклинаниями, но для каждого монстра требуется заклинание разной...

Андрей играет в новую игру, в которой герой сражается с монстрами
Андрей играет в новую игру, в которой герой сражается с монстрами. Герой наносит монстру удары. Один удар отнимает у монстра одну единицу...

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

130
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
21.10.2021, 12:52
Студворк — интернет-сервис помощи студентам
Recrut_rf,
я думаю вам нужно сделать этот же проект, т.е ту часть, которая отвечает за визуализацию, и для, например, SFML.
зачем?
чтобы лучше очертить абстракцию движка визуализации.

Цитата Сообщение от Recrut_rf Посмотреть сообщение
ну это своеобразная заготовка
это я прочитал сразу в README.md,
т.е. я в курсе.

Например, в любом opengl движке у вас не будет никаких атрибутов,
поэтому имена графических методов для/из логики игры должны выглядеть обобщённо,
а всё, что касается конкретной аппаратуры должно быть спрятано
в недрах реализации энтого класса описывающий графический движок.
0
13 / 13 / 0
Регистрация: 22.09.2021
Сообщений: 41
21.10.2021, 13:23  [ТС]
ЧТо я делаю . Я ничего не понимаю, но вроде как это декомпозиция разбор игры на классы. Пожалуйста не бейте, если не правильно пойду по 100 раз перечитывать всё.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#ifndef HEADER_H
#define HEADER_H
 
struct Labirint // Лабиринт представляте из себя набор рандомно генерируемых комнат.
{
 
    void generationRazmer()
    {
 
    }
 
};
struct Room // Комната рандомно генериется. В ней находятся двери и предметы
{
    std::vector<Labirint> l;
 
    void generationDoor()// Генератор дверей
    {
 
    }
};
struct GUI // Интерфейс игры в которое входит главное меню и выботы игрока. Интерефес самое главное в данной игре, используется за всё выполнение программы.
{
    
    void GlavnoeMenu()//Главное меню 
    {
 
    }
};
struct Game // Игра, влючатет в себя. Да всё она включает всё.
{
 
 
};
struct Items // Предметы они в комнате лежать. А также их можно складывать в инвентарь типо.
{
 
    void randomItems// Рандомные предметы. 
    {
 
    }
};
1
 Аватар для Annemesski
2692 / 1349 / 485
Регистрация: 08.11.2016
Сообщений: 3,739
21.10.2021, 13:43
Цитата Сообщение от Recrut_rf Посмотреть сообщение
вот в общем ссылка https://github.com/Recrut-rf/Labyrinth.git
Прошел, код особо не смотрел, тут больше чем XLAT не скажу, а вот из-за того что "q" очень рядом с "wasd" при первом прохождении вышел из игры по мисклику ))

Forest155, над этим надо поработать... вмешиваться не хочу (у семи нянек дитя без глазу) но спокойно смотреть на то как комната агрегирует массив лабиринтов... вообще я бы прежде поговорил об агрегации, композиции и наследовании прежде чем переходить к кодированию, а пока что достаточно было бы словесного описания... все-все, не мешаю.
1
13 / 13 / 0
Регистрация: 22.09.2021
Сообщений: 41
21.10.2021, 14:08  [ТС]
А просто словами написать и всё ? Так вы не мешаете всё нормально. Единственно что меня печалит один факт, что я вашу игру скинул работодателю и меня на собеседование пригласили. Простите что своровал, я конечно пытался понять, но да чот ничо не понял. Зачем я это сделал ? Но меня 100% не возьмут, это очевидно. ПРостите что щас только написал.
Буду теорию читать получается.
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
21.10.2021, 14:28
Цитата Сообщение от Forest155 Посмотреть сообщение
ЧТо я делаю
ок.

я чуть чуть поправил исходя из соображений:
Code
1
2
3
4
5
6
7
8
9
10
1. Почему я поменял порядок - гуглите: "forward declarations in C++"
 
2. Почему я убрал такие комменты: void generate_Door()// Генератор дверей
   потому что тут самодокументирование и тавтология не нужна.
   И ваще аглицкий в кодировании мастхэв.
 
3. private - данные класса должны обрабатываться методами этого же класса.
   это значит мы должны запретить внешнему юзеру прямой доступ к этим данным.
 
4. остальное см. в коде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
///----------------------------------------------------------------------------|
/// C++17
/// Исходник должен быть в UTF-8 BOM кодировке.
///----------------------------------------------------------------------------:
#include <iostream>
#include <string>
#include <vector>
 
#define INFOFUNC engine << __FUNCTION__ << '\n'
 
///----------------------------------------------------------------------------|
/// Графический движок.
/// Тут будет коносльная реализация.
///----------------------------------------------------------------------------:
struct Engine
{   template<class T>
    Engine& operator<<(const T a)
    {   std::wcout << a;
        return    *this;
    }
}engine;
 
///----------------------------------------------------------------------------|
/// Предмет лежащий в комнате.
///----------------------------------------------------------------------------:
struct Item
{
};
 
///----------------------------------------------------------------------------|
/// Предметы они в комнате лежать.
/// А также их можно складывать в инвентарь типо.
///----------------------------------------------------------------------------:
struct  Items
{
    void randomItems() 
    {
    }
 
private: // Гуглите: C++ private.
    std::vector<Item>  m;
};
 
///----------------------------------------------------------------------------|
/// Комната рандомно генериется. В ней находятся двери и предметы
///----------------------------------------------------------------------------:
typedef size_t Door_t;
struct  Room
{       Room() // Гуглите: C++ Конструктор.
        {   INFOFUNC;
        }
 
    void generate_Door()
    {
    }
 
private:
    Items           items;
    std::vector<Door_t> m;
};
 
///----------------------------------------------------------------------------|
/// Лабиринт представляте из себя набор рандомно генерируемых комнат.
///----------------------------------------------------------------------------:
struct  Labirint
{       Labirint()
        {   INFOFUNC;
        }
 
    void generate()
    {
    }
 
private:
    std::vector<Room> m;
};
 
///----------------------------------------------------------------------------|
/// Интерфейс игры в которое входит главное меню и выботы игрока.
/// Интерефес самое главное в данной игре,
/// используется за всё выполнение программы.
///----------------------------------------------------------------------------:
struct  GUI
{       GUI()
        {   INFOFUNC;
        }
 
    void GlavnoeMenu()
    {
    }
 
private:
 
};
 
///----------------------------------------------------------------------------|
/// Игра, влючатет в себя. Да всё она включает всё.
///----------------------------------------------------------------------------:
struct  Game
{       Game()
        {   INFOFUNC;
        }
 
    void Run()
    {
    }
 
private:
    GUI           gui;
    Labirint labirint;
 
};
 
///----------------------------------------------------------------------------|
/// Старт.
///----------------------------------------------------------------------------:
int main()
{   setlocale(0, "");
    engine << L"Старт иры...\n";
 
    Game game;
         game.Run();
 
    engine << "GAME OVER!\n";
    return 0;
}
пощупайте и если есть вопросы, то не стесняйтесь их тут задавать.

это пока лишь СКЕЛЕТ прожекта ...

Кликните здесь для просмотра всего текста
почему я люблю такие там заголовки?
типа:
///------------------------------------|
/// Предмет лежащий в комнате.
///------------------------------------|
это предтеча визуального программирования.
что там внутри написано даже неважно,
но они должны быть яркие, а значит заметные...


Forest155,
да, и самый главный из текущих к вам вопрос:

На сколько этот код труден для вашего понимания???
2
 Аватар для Annemesski
2692 / 1349 / 485
Регистрация: 08.11.2016
Сообщений: 3,739
21.10.2021, 14:31
Forest155, да мне не жалко, так если объективно: мой вариант - это говнокод который разве что поставленную (довольно примитивную) задачу выполняет, ну и разве что кое-какой стиль выдержан. Так что, то что утащили - да пожалуйста! - если этот код кому-то поможет на работу устроится я только рад буду.
Цитата Сообщение от Forest155 Посмотреть сообщение
А просто словами написать и всё ?
Суть-то в том что программа - это алгоритм, то есть конкретная последовательность действий над конкретными данными - описать алгоритм можно на любом (достаточно развитом) языке, например на русском, а потом перевести на другой язык.
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
21.10.2021, 14:35
Цитата Сообщение от Annemesski Посмотреть сообщение
Суть-то в том что
может автор имел ввиду, что у вас там графика,
а для задачи достаточно "а-ля разговорный квест"(точно не помню как оно правильно зовётся)?
0
 Аватар для Annemesski
2692 / 1349 / 485
Регистрация: 08.11.2016
Сообщений: 3,739
21.10.2021, 14:38
XLAT, у меня как раз разговорный, это у Рекрута (хоть и псевдо) но графика, а я делал четко по заданию в стратпосте.
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
21.10.2021, 15:07
Цитата Сообщение от Annemesski Посмотреть сообщение
у меня как раз разговорный
ох,
я его уговорил сделать ексешник, а вас ещё не пробовал уговаривать...

Цитата Сообщение от Forest155 Посмотреть сообщение
void generationRazmer()
Цитата Сообщение от XLAT Посмотреть сообщение
void generate_Door()
почему generate, а не generation?
потому, что generate это глагол,
а generation это существительное.

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

это элементарно же,
но почему во многих головах на этом бархет, я хз, но догадываюсь.
0
 Аватар для Annemesski
2692 / 1349 / 485
Регистрация: 08.11.2016
Сообщений: 3,739
21.10.2021, 15:16
Цитата Сообщение от XLAT Посмотреть сообщение
вас ещё не пробовал уговаривать...
ну, тогда сами напросились.
Вложения
Тип файла: rar Labirinth.rar (381.2 Кб, 4 просмотров)
1
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
21.10.2021, 15:26
Annemesski,

добавьте в линкер ключ -static

и убедитесь что в папке запуска у вас один работоспособный ексе без длл.

а потом этот ексе давайте сюда.
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
21.10.2021, 15:34
Цитата Сообщение от XLAT Посмотреть сообщение
и убедитесь
без статика у мя ексешник(код выше) 17 кб
(dll clang'a утекли в систему, поэтому запускается без длл)
а со статиком 904кб

ваш же ексешник должен быть поболя 1 Mb
0
 Аватар для Annemesski
2692 / 1349 / 485
Регистрация: 08.11.2016
Сообщений: 3,739
21.10.2021, 16:27
XLAT, у меня Qt community я, по ходу, не могу статически линковать.

Добавлено через 1 минуту
хотя странно, на mingw это не должно распространяться

Добавлено через 3 минуты
попробую руками собрать
0
 Аватар для Annemesski
2692 / 1349 / 485
Регистрация: 08.11.2016
Сообщений: 3,739
21.10.2021, 16:32
Должно сработать "консоль не обманет!"
Вложения
Тип файла: rar Labitinth.rar (436.8 Кб, 15 просмотров)
1
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
21.10.2021, 17:19
Цитата Сообщение от Annemesski Посмотреть сообщение
Должно сработать
работает.

Цитата Сообщение от Annemesski Посмотреть сообщение
у меня Qt community я, по ходу, не могу статически линковать.
Qt Creator 4.11.1
Based on Qt 5.14.1 (MSVC 2017, 32 bit)
Built on Feb 5 2020 10:36:21

*.pro
Code
1
2
3
4
5
6
7
8
9
10
11
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
 
QMAKE_LFLAGS += -s -static -static-libgcc
QMAKE_CFLAGS_RELEASE -= O2
DEFINES += UNICODE QT_STATIC_BUILD
 
SOURCES += \
        main.cpp
хеллоуворолд(release build):
Вложения
Тип файла: rar helloworld.rar (218.6 Кб, 2 просмотров)
0
 Аватар для Annemesski
2692 / 1349 / 485
Регистрация: 08.11.2016
Сообщений: 3,739
21.10.2021, 17:22
XLAT, мне инкрементная сборка подкузьмиля, я .pro подправил а так как .срр изменений небыло и стаиый .ехе на месте был он и не пересобирал, селедка такая
0
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
21.10.2021, 17:35
Annemesski,
Qt Creator 5.0.2
Based on Qt 5.15.2 (MSVC 2019, 64 bit)
Built on Sep 30 2021 01:26:25

файл с хеллоуволдом вырос до 913кб

Цитата Сообщение от Annemesski Посмотреть сообщение
инкрементная сборка подкузьмиля
надо жать ребилд из выпадающего меню, то которое сверху.
0
 Аватар для Annemesski
2692 / 1349 / 485
Регистрация: 08.11.2016
Сообщений: 3,739
21.10.2021, 17:39
XLAT, очевидно... перед этим еще и клинап неплохо бы выполнить
0
13 / 13 / 0
Регистрация: 22.09.2021
Сообщений: 41
22.10.2021, 13:55  [ТС]
Код понятен , кроме.....

Сейчас я смотрю на него и кое что заметил. Буква L в строке 114 это как я понял это префикс который wchar_t и нужен чтобы китайские и японские символы выводить или я что-то путаю ?

А немного понял что L это широкий строковый литерал(содержит любые графические символы). Но я не сильно понял зачем.

Также не понял класс, почему он заканчивается на engine ? template создаёт свой собственный тип, в данном случаем класса, о боже не бейте не класса, а шаблон функции. Ниже как я понял это уже сама функция a operator << вроде как становится шаблонным и ещё почему-то возвращает указатель *this.

Цитата Сообщение от XLAT Посмотреть сообщение
struct Engine
{   template<class T>
    Engine& operator<<(const T a)
    {   std::wcout << a;
        return    *this;
    }
}engine;
Добавлено через 17 минут
Так, вы мне сделали проектирование как я понял сверху вниз. Но у меня такое чувству что игру делаю не я. А что после проектирование должно идти ? Уже сам непосредственно код или ещё рано ?

Добавлено через 3 минуты
А ещё я понял что означает __FUNCTION__ Использует название имя функции и выводит его с помощью cout.
1
Just Do It!
 Аватар для XLAT
4221 / 2686 / 656
Регистрация: 23.09.2014
Сообщений: 9,246
Записей в блоге: 3
22.10.2021, 14:12
Forest155,
ок.

Цитата Сообщение от Forest155 Посмотреть сообщение
Буква L в строке 114
https://www.cyberforum.ru/post14150856.html

Цитата Сообщение от Forest155 Посмотреть сообщение
нужен чтобы китайские и японские символы выводить или я что-то путаю ?
да.
старайтесь всегда использовать кодировки UCS-2 и UTF-8.
во избежания вопросов про кракозябры.

Цитата Сообщение от Forest155 Посмотреть сообщение
Также не понял класс, почему он заканчивается на engine ?
мы создали объект engine класса Engine.

std::cout это тоже объект класса std::ostream

Цитата Сообщение от Forest155 Посмотреть сообщение
template создаёт свой собственный тип,
да.
но только для перегруженного метода operator<<(...,

но не для объекта engine.
Цитата Сообщение от Forest155 Посмотреть сообщение
template создаёт свой собственный тип, в данном случаем класса
нет - читайте выше.

template нужен чтобы метод operator<<(... принимал ЛЮБЫЕ ВСТРОЕННЫЕ типы

Чтобы рисовать Room, нам потребуется написать специализацию для класса Room:
например
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
///----------------------------------------------------------------------------|
/// C++17
/// Исходник должен быть в UTF-8 BOM кодировке.
///----------------------------------------------------------------------------:
#include <iostream>
#include <string>
#include <vector>
 
#define INFOFUNC engine << L'\n' << L"FUNCTION: " << __FUNCTION__ << '\n'
 
///----------------------------------------------------------------------------|
/// Графический движок.
/// Тут будет коносльная реализация.
///----------------------------------------------------------------------------:
struct Engine
{   template<class T>
    Engine& operator<<(const T a)
    {   std::wcout << a;
        return    *this;
    }
    static void pause(){ std::cin.get(); }
}engine;
 
///----------------------------------------------------------------------------|
/// Предмет лежащий в комнате.
///----------------------------------------------------------------------------:
struct Item
{
};
 
///----------------------------------------------------------------------------|
/// Предметы они в комнате лежать.
/// А также их можно складывать в инвентарь типо.
///----------------------------------------------------------------------------:
struct  Items
{
    void randomItems()
    {
    }
 
private: // Гуглите: C++ private.
    std::vector<Item>  m;
};
 
///----------------------------------------------------------------------------|
/// Комната рандомно генериется. В ней находятся двери и предметы
///----------------------------------------------------------------------------:
typedef size_t Door_t;
struct  Room
{       Room() // Гуглите: C++ Конструктор.
        {   INFOFUNC;
        }
 
    void generate_Door()
    {
    }
 
    size_t number = std::string::npos; /// Признак неинициализированного ...
 
private:
    Items           items;
    std::vector<Door_t> m;
 
    friend Engine& operator<<(Engine& e, const Room& r);
};
 
///----------------------------------------|
/// Рисуем комнату.                        |
///----------------------------------------:
Engine& operator<<(Engine& e, const Room& r)
{   e << L"r.number = ";
    if(r.number == std::string::npos) e << L"НЕ ИНИЦИАЛИЗИРОВАННО\n";
    else                              e << r.number          << '\n';
    return e;
}
 
inline void testclass_Room()
{   INFOFUNC;
    Room room;
    engine << room << L'\n';
}
 
///----------------------------------------------------------------------------|
/// Лабиринт представляте из себя набор рандомно генерируемых комнат.
///----------------------------------------------------------------------------:
struct  Labirint
{       Labirint()
        {   INFOFUNC;
        }
 
    void generate()
    {
    }
 
private:
    std::vector<Room> m;
};
 
///----------------------------------------------------------------------------|
/// Интерфейс игры в которое входит главное меню и выботы игрока.
/// Интерефес самое главное в данной игре,
/// используется за всё выполнение программы.
///----------------------------------------------------------------------------:
struct  GUI
{       GUI()
        {   INFOFUNC;
        }
 
    void GlavnoeMenu()
    {
    }
 
private:
 
};
 
///----------------------------------------------------------------------------|
/// Игра, влючатет в себя. Да всё она включает всё.
///----------------------------------------------------------------------------:
struct  Game
{       Game()
        {   INFOFUNC;
        }
 
    void Run()
    {
    }
 
private:
    GUI           gui;
    Labirint labirint;
};
 
///----------------------------------------|
/// Манегер тестов.                        |
///----------------------------------------:
void alltest()
{   INFOFUNC;
 
    testclass_Room();
 
    engine << L"FINISHED alltest!\n"; Engine::pause();
}
 
///----------------------------------------------------------------------------|
/// Старт.
///----------------------------------------------------------------------------:
int main()
{   setlocale(0, "");
 
    alltest();
 
    engine << L"Старт иры...\n";
 
    Game game;
         game.Run();
 
    engine << "GAME OVER!\n";
    return 0;
}


Цитата Сообщение от Forest155 Посмотреть сообщение
ещё почему-то возвращает указатель *this
такой вот синтаксис в С++.
метод возвращает объект из которого он был вызван.

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

Кликните здесь для просмотра всего текста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.10.2021, 14:12

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

Главный герой застревает в препятствиях
День добрый, столкнулся с такой проблемой что Гг застревает в препятствиях. BoxCollayder2д есть, все ок. У Гг есть способность с помощью...

Сделать так, чтобы главный герой не проходил сквозь некоторые спрайты C++
Всем привет. Я 4-5 недель назад начал изучать OpenGL и разработку игр на С++. Начал изучать SFML и читать статьи на kychka-pc. В общем...

Написать игру в которой имитируется бросание кубиков
Этап первый Написать игру в которой имитируется бросание кубиков игроком. Игра должна представлять собой консольное приложение. В игре 2...

Написать игру, в которой имитируется бросание кубиков
Написать игру, в которой имитируется бросание кубиков компьютером и пользователем. В игре 2 кубика и на каждом из них может выпасть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru