Интерфейсы или наследование - C#
Формулировка задачи:
Добрый день, помогите с реализацией программы:
Я хочу написать в консоли мини-игрушку. В ней должен быть класс Человек, класс Башня и два интерфейса: стрелять и ходить. Как мне реализовать интерфейсы, чтобы, например, человек мог и ходить и стрелять, а башня могла только стрелять, только начинаю учить интерфейсы и немного не понимаю, как их реализовать в моей идее.
Решение задачи: «Интерфейсы или наследование»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Human : IWalking, IShooter
{
public string Name { get; set; }
public void WalkInConsole(int countOfSteps)
{
// Реализация ходьбы
}
public Human(string name)
{
Name = name;
}
public void ShootInConsole(int countOfShoots)
{
// человек стреляет пулями
for (int i = 0; i < countOfShoots; i++) Console.Write('.');
Console.WriteLine();
}
}
class Tower : IShooter
{
public string Name { get; set; }
public Tower(string name)
{
Name = name;
}
public void ShootInConsole(int countOfShoots)
{
// башня стреляет ядрами
for (int i = 0; i < countOfShoots; i++) Console.Write('*');
Console.WriteLine();
}
}
interface IShooter
{
string Name { get; set; }
void ShootInConsole(int countOfShots);
}
interface IWalking
{
void WalkInConsole(int countOfSteps);
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Human VS Towers\n");
Human human = new Human("Tom");
Tower tower = new Tower("EastTower");
IShooter[] stalkers = new IShooter[] { human, tower };
Random rand = new Random();
foreach (var stalker in stalkers)
{
Console.WriteLine("{0} with name {1} shooting: ", stalker.GetType().Name, stalker.Name);
stalker.ShootInConsole(rand.Next(5, 15));
Console.WriteLine();
}
}
}
}