5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 531
1

Если ли у вас или где-то примеры консольных игр или какие-то учебники по ним? Я имею в виду текстовый квест

15.02.2019, 13:11. Показов 2075. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не могу найти в сети тот пример или учебник, который нужен. Везде игры с интерфейсом, а мне нужны примеры или учебники по созданию консольных игр использую циклы, функции и т.д. Есть у меня мой код, но нужно его доделать и вот по этому, если у вас есть что-то, то поделитесь. Интересует примеры типа: текстовый квест с возможностью создания рюкзака с какими-то предметами или что-то типа того.
Спасибо.

Вот само задание на игру:
и ниже будет код.
Написать программу игры типа "текстовый квест".
а) В глобальном двумерном массиве LOC хранятся типы локаций в виде целых чисел, в глобальных переменных X и Y хранятся координаты текущей локации. Программа должна выводить подробное описание текущей локации на основе её типа, хранящегося в элементе LOC[Y][X].
Например, пусть тип локации равный 5 означает, что эта локация - пустыня, тогда программа должна вывести: "Вы находитесь в пустыне, здесь палящее солнце и песок".
Игрок управляет действиями своего персонажа с помощью ввода чисел (выбора пунктов меню).
Нужно предусмотреть перемещение между локациями, например: "Введите 1, чтобы пойти на север, 2 - на запад, 3 - на юг, 4 - на восток". Некоторые локации могут быть непроходимыми (например, море), тогда программа не должна предлагать в меню пункт для движения в эту сторону. Если игрок дошел до края карты (до левой, правой, нижней или верхней границы массива), то программа не должна позволять ему двигаться в эту сторону дальше. Как вариант, при выводе описания текущей локации программа может дополнительно кратко сообщить игроку, какие локации находятся по соседству ("На севере виднеется пустыня, на западе море, на востоке горы, на юге горы.").
При переходе в другую локацию меняются координаты X, Y.
Программа должна быть зациклена так, чтобы после выполнения очередной команды игра снова запрашивала у игрока дальнейшие действия. Нужно предусмотреть одну из команд для выхода из игры, например: "Введите 0 чтобы закончить игру".

б) В глобальном двумерном массиве хранить уже посещенные локации, а непосещенные отметить, например числом 0 или -1. На основе этого массива предусмотреть возможность показать карту уже посещенных мест.

в) В глобальном трехмерном массиве LOOT хранить предметы, разбросанные по локациям. Два первых индекса массива означают координаты локации, а третий индекс описывает слоты для предметов. Пусть в каждой локации можно будет хранить 5 предметов.
В глобальном одномерном массиве INV нужно хранить инвентарь игрока в виде целых чисел - идентификаторов предметов. Нужно предусмотреть возможность бросить предмет из указанного слота инвентаря в текущую локацию (из массива INV в массив LOOT), и возможность подбирать в инвентарь предмет, находящийся в текущей локации.

г) Предусмотреть возможность применять предметы. При этом может меняться сам предмет, например, при применении бутылки молока игрок пополняет жизненные силы, а бутылка молока (например, предмет с идентификатором 10) превращается в пустую бутылку (например, предмет с идентификатором 11). Применение предметов может влиять также на тип какой-то локации или вносить еще какие-то изменения в данные игры.

д) Добавить в игру показатель сытости персонажа. Каждое перемещение между локациями отнимает одну единицу сытости. Нужно отображать текущий показатель. Предусмотреть пищу, например куст ягод, возможность их съесть с куста или набрать в банку, чтобы съесть позже в другой локации. Ягоды пополняют сразу 3 единицы сытости.


Вот мой код программы, как пример игры:

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
#include "pch.h"
#include <iostream>
#include <Windows.h>
 
using namespace std;
 
int a[20];
int X = 2, Y = 2;
 
int LOC[5][5] = {
    {1,1,1,1,1},
    {1,2,2,2,1},
    {1,2,3,3,1},
    {1,2,3,3,1},
    {1,1,1,1,1},
};
 
void cls()
{
    system("cls");
}
const int black = 0, blue = 1, red = 4, green = 2, yellow = 14;
 
void color(int c)
{
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c % 256);
}
 
void m()
{
    switch (LOC[Y][X])
    {
    case 1:cout << "В данный момент вы в море \n" << endl;
        break;
    case 2: cout << "В данный момент вы в тундре \n" << endl;
        break;
    case 3:cout << "В данный момент вы горах \n" << endl;
        break;
    }
}
 
int main()
{
    setlocale(0, "");
 
    cout << "Добро пожаловать в игру -квест-" << endl << "Вы можете путешествовать по локациям." << endl << "А также собирать какие-то предметы." << endl;
    cout << "Удачной Вам игры!\n" << endl;
 
    while (true)
    {
        int dn;
        cout << "Введите 1, чтобы пойти на север, 2 - на запад, 3 - на юг: " << endl;
        cin >> dn;
        if (dn == 1)
        {
            Y = Y + 2;
        }
        if (dn == 2)
        {
            Y = Y - 1;
        }
        if (dn == 3)
        {
            X = X - 1;
        }
        if (dn == 0)
        {
            break;
        }
        m();
        LOC[5][5];
    }
}
0
66 / 57 / 13
Регистрация: 16.03.2017
Сообщений: 426
15.02.2019, 13:27 2
с рюкзаком просто, создайте вектор и в него добавляйте информацию о содержимом рюкзака.
0
1212 / 706 / 335
Регистрация: 22.02.2018
Сообщений: 2,059
Записей в блоге: 2
15.02.2019, 13:34 3
Anonymous4722, Андре Ламот "Программирование игр для Windows", отдельная глава - создание текстовых квестов, игра Wizard
0
15.02.2019, 13:34
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru