Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
 Аватар для Anonymous4722
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 545

Обобщенные списки List<> не получается их использовать

16.10.2019, 02:42. Показов 2979. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не выходит создать правильно список. Выводит ошибку, что нужен конструктор, хотя он и так есть. Также не выходит создать проверку
C#
1
2
//Если эльф получает в качестве персонажа-цели
//другого эльфа, то отказывается его атаковать.
Как сделать все правильно, чтобы Эльф атаковал Орка, а Орк атаковал Эльфа, и чтобы выполнялась проверка, чтобы орки орков вдруг не атаковали и эльфы эльфов и сделать в Main список персонажей с помощью List<>.
Вот, что я сделал
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
using System;
using System.Collections.Generic;
using static System.Console;
/*
 * Создать класс "Персонаж" со свойством "Имя" и абстрактным методом
 * "Атаковать(другого персонажа)".
Создать наследников "Орк" и "Эльф". Эльф атакует луком, орк - топором
(нужно просто вывести надпись кто кого атакует, например: "Эльф Имя_Эльфа
стреляет из лука в орка Имя_Орка"). Если эльф получает в качестве персонажа-цели
другого эльфа, то отказывается его атаковать.
В Main создать список персонажей (с помощью обобщенного списка List<>),
заполнить его несколькими орками и эльфами. Создать эльфа. Заставить эльфа
атаковать всех персонажей из массива. Заставить всех персонажей из массива атаковать эльфа.
 */
namespace game1
{
    public abstract class Player
    {
        protected Player(string name)
        {
            Name = name;
        }
 
        public string Name { get; set; }
        abstract public void Attack();
    }
 
    public class Orc : Player
    {
        public string Name { get; set; }
        public Orc(string Name) : base(Name)
        {
            Name = "Orc";
        }
 
 
        public override void Attack()
        {
            WriteLine($"{Name} Attack {Name}");
            Attack();
        }
    }
 
    public class Elf : Player
    {
        public Elf(string Name): base(Name)
        {
            Name = "Elf";
        }
 
        public override void Attack()
        {
            WriteLine($"{Name} Attack {Name}");
            Attack();
        }
    }
 
    class MainClass
    {
        public static void Main(string[] args)
        {
            List<string> pl = new List<string>() { "Elf", "Orc" };
            pl.Add("Elf");
            pl.AddRange(new string[] { "Elf", "Orc" });
            foreach (var i in pl)
            {
                WriteLine(i);
            }
 
            List<Orc> play = new List<Orc>(2);
            play.Add(new Orc() { Name = "Orc1" });
        }
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.10.2019, 02:42
Ответы с готовыми решениями:

Обобщенные делегаты с несколькими параметрами не получается сделать
Здравствуйте) Вопрос сугубо учебный, навряд ли пригодится когда-либо. Как создать обобщенный делегат без возвращаемого значения...

List<string> или все же List<StringBuilder>, что лучше использовать?
Добрый день, хочется узнать с точки зрения производительности что подходит лучше в данном случае. Есть List&lt;List&lt;T&gt;&gt;, в...

Ошибка. не получается устранить(list = List<byte>)
Вот накатал, но есть ошибки, никак не получается устранить(list = List&lt;byte&gt;): for (int j = 0; j &lt; list.Count; j++) ...

1
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
16.10.2019, 03:09
Лучший ответ Сообщение было отмечено Anonymous4722 как решение

Решение

Дальше сам думай...
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
using System;
using System.Collections.Generic;
using static System.Console;
/*
 * Создать класс "Персонаж" со свойством "Имя" и абстрактным методом
 * "Атаковать(другого персонажа)".
Создать наследников "Орк" и "Эльф". Эльф атакует луком, орк - топором
(нужно просто вывести надпись кто кого атакует, например: "Эльф Имя_Эльфа
стреляет из лука в орка Имя_Орка"). Если эльф получает в качестве персонажа-цели
другого эльфа, то отказывается его атаковать.
В Main создать список персонажей (с помощью обобщенного списка List<>),
заполнить его несколькими орками и эльфами. Создать эльфа. Заставить эльфа
атаковать всех персонажей из массива. Заставить всех персонажей из массива атаковать эльфа.
 */
namespace game1
{
    public abstract class Player
    {
        protected Player(string name)
        {
            Name = name;
        }
 
        public string Name { get; set; }
        abstract public void Attack(Player target);
    }
 
    public class Orc : Player
    {
        public Orc(string name) : base(name)
        {
            Name = "Orc " + name;
        }
 
        public override void Attack(Player target)
        {
            if (target is Orc)
                return;
            WriteLine($"{Name} Attacks {target.Name}");
        }
    }
 
    public class Elf : Player
    {
        public Elf(string name) : base(name)
        {
            Name = "Elf " + name;
        }
 
        public override void Attack(Player target)
        {
            if (target is Elf)
                return;
            WriteLine($"{Name} Attacks {target.Name}");
        }
    }
 
    class MainClass
    {
        public static void Main(string[] args)
        {
            List<string> pl = new List<string>() { "Elf", "Orc" };
            pl.Add("Elf");
            pl.AddRange(new string[] { "Elf", "Orc" });
 
            foreach (var i in pl)
            {
                WriteLine(i);
            }
 
            List<Player> play = new List<Player>();
            play.Add(new Orc("Orc1"));
            play.Add(new Orc("Orc2"));
            play.Add(new Elf("Elf1"));
            play.Add(new Elf("Elf2"));
 
            // ???
        }
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.10.2019, 03:09
Помогаю со студенческими работами здесь

Почему все рекомендуют для вёрстки меню использовать списки, если проще для этих целей использовать
если для этих целей, особенно для горизонтального меню, проще использовать подряд несколько тегов &lt;a&gt; Для них не придётся задавать...

Списки List<T>
Входные данные для этой задачи должны читаться из текстового файла, а выходные – записываться в текстовый файл. В файле каждый набор...

Списки List
Здравствуйте, форумчанин. Недавно я освоил python. Было все проще и понятно. Но мне дали 3 вопроса: 1. Как обойти список? 2. Какие типы...

Списки, ошибка There is no corresponding list domain
Просьба помочь разобраться в задачах Пролога. Представление базы знаний. Даны сведения о марках машин: 1) Марка; 2) год начала...

КР Списки (Динамические структуры данных) (List) C#
Ребят,помогите,пожалуйста !!! Надо запилить до завтра,это все в оконном приложении! А мы учили только в концольке. 1) Списки List ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru