Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685

Какой контейнер использовать в качестве рюкзака для персонажа в игре?

23.04.2018, 13:53. Показов 3754. Ответов 79
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день, посоветуйте как лучше решить проблему: пишу консольную рпг, задумал сделать рюкзак персонажу в котором он будет хранить все свои добытые кровью и потом вещи в боях. Что для этого лучше использовать (Вектор)? Как контейнер для содержания вещей или что иное, так же интересен был бы ваш совет как сделать так, что бы при открытии рюкзака выводилось уведомление у вас (нет вещей/ или же перечень вещей находящихся внутри).
Спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.04.2018, 13:53
Ответы с готовыми решениями:

Какой контейнер для чего использовать?
для чего какой контейнер эффективней использовать? vector- list- map- set- queue- stack-

Какой контейнер в STL и для чего эффективнее использовать?
Какой контейнер в STL и для чего эффективнее использовать? И почему

Какой контейнер можно использовать для быстрого сравнения 44-битовых хэшей?
Добрый день. Народ какой контейнер можно использовать для быстрого сравнения 44'битовых хэшов? хэшов примерно 5000000 QMap медленно...

79
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
23.04.2018, 18:10  [ТС]
Студворк — интернет-сервис помощи студентам
Bespridelschic, вот только как мне с интерфейса Дроп занести вещь которая выпала в Лист
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
23.04.2018, 18:13
Esso11, я же выше приводил пример:
C#
1
2
3
List<IDrop> list = new List<IDrop>();
...
list.Add(/*Здесь вставляете любой предмет, унаследованный от IDrop*/);
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
23.04.2018, 18:19  [ТС]
Bespridelschic, в list.Add могу ли я вставить drop.Weapon - у меня же там рандом
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
23.04.2018, 18:24
Esso11, у Вас выпадает рандомная вещь. Класс этой рандомной вещи должен быть унаследован от IDrop. Поэтому, вы можете добавлять в список разные вещи, см. ковариантность.
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
23.04.2018, 19:34  [ТС]
Ребята а переменная Count для чего нужна?

Добавлено через 3 минуты
C#
1
2
3
4
5
6
rivate List<Item> Items;
*
* * public Backpack() => Items = new List<Item>();
* * public Backpack(params Item[] items) => Items= new List<Item>(items);
*
* *
можете кто то дать коментарий по этим строкам?
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
24.04.2018, 04:19
Цитата Сообщение от Esso11 Посмотреть сообщение
Ребята а переменная Count для чего нужна?
Такие мелочи быстро и легко можно найти в гугле. Используется рядом коллекций, для вывода количества элементов.
Цитата Сообщение от Esso11 Посмотреть сообщение
можете кто то дать коментарий по этим строкам?
Два конструктора, которые используют синтаксис лямбда-выражений. Без них:
C#
1
2
3
4
5
6
7
8
public Backpack()
{
    Items = new List<Item>();
}
public Backpack(params Item[] items)
{
    Items= new List<Item>(items);
}
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
24.04.2018, 15:46  [ТС]
Bespridelschic, спасибо вчера нашел это все в и-нете, но за комментарий спасибо

Добавлено через 17 минут
Bespridelschic, простите что я надоедаю, подскажите пожалуйста еще раз как мне в структуру
C#
1
2
3
4
5
6
7
8
9
10
11
12
struct Item
    {
 
        public string Name { get; private set; }
        public int Count { get; private set; }
 
        public Item(string name, int count)
        {
            Name = name;
            Count = count;
        }
    }
передать название вещи которая определяется
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
 IDrop drop = Drop.GetRandom();
public interface IDrop
{
    string Weapon { get; }
 
}
public static class Drop
{
    private static readonly Random rnd = new Random();
 public static IDrop GetRandom()
    {
        return arr[rnd.Next(arr.Length)];
    }
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
24.04.2018, 15:50
Так как ваши поля определены как { private set; }, то Вам нужно передавать название вещей через конструктор, в момент их создания.
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
24.04.2018, 16:18  [ТС]
Bespridelschic, если вы подскажите как правильно написать буду благодарен
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
24.04.2018, 16:22
Во втором листинге, который вы привели, указывается только выбор из существующих. Я подозреваю, что arr - это список со всеми вашими вещами. Найдите участок кода, на котором происходит инициализация этого списка, и передавайте туда ваши имена вещей:
C#
1
2
3
List<IDrop> arr = new List<IDrop>();
...
arr.Add(new Item("Имя предмета", количество));
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
24.04.2018, 16:22  [ТС]
C#
1
2
3
4
5
6
7
8
 public string Name { get; set; }
    public int Count { get; private set; }
 
    public Item(IDrop Weapon, int count)
    {
        Name = Weapon;
        Count = count;
    }
что тут сделано не так? Ошибка пишет что не удается преобразовать IDrop в string
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
24.04.2018, 16:24
Цитата Сообщение от Esso11 Посмотреть сообщение
что тут сделано не так? Ошибка пишет что не удается преобразовать IDrop в string
Name - это строковый тип, а вы к нему пытаетесь привести тип интерфейса IDrop. Я подозреваю, что вам нужно что-то вроде этого:
C#
1
Name = Weapon.Name;
Где в .Name - указываете свойство, которое содержит в себе интерфейс.
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
24.04.2018, 16:44  [ТС]
Bespridelschic, private static readonly IDrop[] arr = { new Swords()..... это поле?

Добавлено через 16 минут
блин бред какой то не могу понять как сделать этот рюкзак...
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
24.04.2018, 17:10
Esso11, да. Но только у вас массив. Если размер рюкзака динамический - используйте списки. Обратите внимание, в списке инициализации для первого объекта вы оставили пустой конструктор, укажите параметры для указания вещи.
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
24.04.2018, 17:19  [ТС]
Bespridelschic, если изменить массив на лист то как измениться этот метод?
C#
1
2
3
4
 public static IDrop GetRandom()
    {
        return arr[rnd.Next(arr.Length)];
    }
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
24.04.2018, 17:20
Esso11, всё так же, за исключением того, что для обозначения длины списка, случит свойство Count, а не Length.
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
24.04.2018, 18:45  [ТС]
Bespridelschic, теперь класс вещи будет выглядеть
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Swords : IDrop
{
    private string v1;
    private int v2;
 
    public Swords(string v1, int v2)
    {
        this.v1 = v1;
        this.v2 = v2;
    }
 
    public string Name { get; } = ("yfuhff");
    public string Weapon { get; private set; } = ("Лучезарный клинок рассвета\nПерсональный при получении\nОдноручное  Меч\nУрон: 58 - 98 \nСкорость 2.60\n(3023.06 урона в секунду)\n+ 974 к силе\n+ 1.462 к выносливости\nКлассы: Воин");
}
так , это правильно?

Добавлено через 1 час 1 минуту
VIAZNIKOVGM, как в вашем примере передать значение в структуру что бы потом заполнился класс ?! подскажите пожалуйста

Добавлено через 18 минут
все короче гори оно в аду.....
0
24.04.2018, 21:57

Не по теме:

Цитата Сообщение от Esso11 Посмотреть сообщение
все короче гори оно в аду.....
вот так и пишутся "шедевры" компьютерных игр:D

0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
25.04.2018, 03:48  [ТС]
Почтальон, .... и понял он что тупой как бревно))) но все же сделать надо так что буду мучить себя и свою нервную систему

Добавлено через 2 часа 30 минут
Bespridelschic, Обратите внимание, в списке инициализации для первого объекта вы оставили пустой конструктор, укажите параметры для указания вещи. что именно надо указать?
0
Wanna be serious
 Аватар для Bespridelschic
587 / 474 / 186
Регистрация: 31.07.2013
Сообщений: 1,693
25.04.2018, 04:38
Цитата Сообщение от Esso11 Посмотреть сообщение
что именно надо указать?
C#
1
2
3
public Swords(string v1, int v2)
{
    ...
Вот это ваш конструктор, который инициализирует поля вашего класса. Когда вы выделяете объект на куче с помощью new, вам стоит указать аргументы для параметров.
По крайней мере так оно было со структурой. Теперь вы определяете класс, у которого свойство инициализируется в процессе:
C#
1
public string Name { get; } = ("yfuhff");
Выделив объект на куче, вы можете помещать его в свой список IDrop:
C#
1
2
3
Sword sword = new Sword(); // Можно не указывать аргументы, потому что свойства в классе содержат в себе начальную инициализацию
...
arr.Add(sword); // Можно добавить, потому что Sword наследуется от IDrop
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.04.2018, 04:38

Какой контейнер использовать?
Привет всем. Я только начинаю программировать на Си и поэтому со многими особенностями языка не знаком. К сожалению сейчас у меня слишком...

Какой контейнер использовать?
Всем привет! Нужно повторить след: Немного не пойму, какой контейнер нужно выбрать. ListView и изменить свой адаптер? Или GridView, но...

Когда какой контейнер использовать?
Поделитесь опытом, когда и при каких условиях какой контейнер особенно удобен? Только поменьше абстракции пожалуйста :)

Прочитать массив чисел неизвестной длины. Какой контейнер использовать?
Доброго времени суток! И всех с наступающими праздниками :drink: В общем необходимо считать последовательность чисел, заранее неизвестной...

Какой файл из всего проекта надо использовать в качестве исполняемого
Какой файл из всего проекта надо использовать в качесвте исполняемого, те что нужно чтобы программа написанная на шарпе работала на других...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
Как надо было делать правильно - вообще не слушать ИИ, его дело - текст.
Hrethgir 15.07.2026
А вообще надо было делать не так, чтобы не исправлять ошибку https:/ / www. cyberforum. ru/ blogs/ 223907/ 10996. html , правильно было : удалил кнопку, а потом добавил её. Всё это стресс конечно. Почему?. . .
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru