Недавно писал приложение про кота! Одно решил другое началось!
program.cs
using CatsFin.CatsFolder;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CatsFin
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Выберите кота или создайте нового\n");
Console.WriteLine("Для выбора кота нажмите цифру соответствующую коту (1,2,3 и т.д.\n");
Console.WriteLine("Что бы создать кота введите (+)\n\n");
Print();
BaseCats baseCats = new BaseCats();
// Созданные Коты
List<BaseCats> cats = new List<BaseCats>
{
new BaseCats("Ману", 5),
new BaseCats("Марго", 5),
new BaseCats("Васян", 7)
};
BaseCats CreateCat = null;
while (true)
{
try
{
Print();
Console.WriteLine($"1 - Ману");
Console.WriteLine($"2 - Марго");
Console.WriteLine($"3 - Васян");
Console.WriteLine("+ - Создать кота");
Print();
string value = Console.ReadLine();
if (value == "+")
{
Console.WriteLine("Введите имя кота: ");
string name = Console.ReadLine();
Console.WriteLine("Введите возраст кота: ");
int age = Int32.Parse(Console.ReadLine());
CreateCat = new BaseCats(name, age);
cats.Add(CreateCat);
}
else
{
int number = Int32.Parse(value);
CreateCat = cats[number - 1];
Console.WriteLine();
}
}
catch (Exception e)
{
Console.WriteLine($"Возникла ошибка: '{e}'. Попробуйте снова.\n");
break;
}
Console.WriteLine("Текущий выбранный кот:");
Print();
CreateCat.CatsInfo();
baseCats.Added += (MethodEvent); // Вызов события
while (CreateCat.Hangry());
}
}
public static void Print()
{
Console.Write("-------------------------------------------------\n");
}
static void MethodEvent(object sender, EventHendlerArgs e)
{
Console.WriteLine(e._mess);
}
static void Show(string message)
{
Console.WriteLine(message);
}
}
}
BaseCat.cs
using CatsFin.FoodCat;
using CatsFin.CatsFolder;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CatsFin.CatsFolder
{
public delegate void Message(string message);
class BaseCats : IMount
{
protected string _Name { get; set; }
protected int _Age { get; set; }
protected int _Hangry { get; set; }
protected int _Mood { get; set; }
protected int _Health { get; set; }
public BaseCats()
{
}
Message message;
public void MethodMess(Message mess)
{
message = mess;
}
public BaseCats(string name, int age)
{
_Name = name;
_Age = age;
_Hangry = 0;
_Mood = 0;
_Health = 0;
}
public event EventHandler<EventHendlerArgs> Added;
public bool Hangry()
{
Console.WriteLine($"Вы хотите покормить {_Name} (1)");
Console.WriteLine($"Вы хотите поиграть с {_Name} (2)");
Console.WriteLine($"Вы хотите вылечить {_Name} (3)");
Print();
Console.WriteLine($"Если вы не хотите кормить, играть и лечить кота {_Name} то нажмите (n)");
Console.WriteLine($"Если вы закончили играться с {_Name} нажмите (q)");
Print();
string enter = Console.ReadLine();
Print();
bool ok = false;
switch (enter)
{
case "1":
if (_Age < 6) { _Hangry += 10; }
if (_Age > 5 || _Age < 11) { _Hangry += 5; }
if (_Age > 10) { _Hangry += 2; }
ok = true;
//if (message != null) { message($"Кот ({_Name}) жуёт"); }
if (Added != null) { Added.Invoke(this, new EventHendlerArgs($"Кот ({_Name}) жуёт")); }
break;
case "2":
if (_Age < 6) { _Mood += 10; }
if (_Age > 5 || _Age < 11) { _Mood += 5; }
if (_Age > 10) { _Mood += 2; }
ok = true;
//if (message != null)
//{
// if (_Mood <= 0) { message($"Кот ({_Name}) рычит!(Дерёт мебель)"); }
// else { message($"Кот ({_Name}) Мяукает(скачет по шкафам)!"); }
//}
if (Added != null)
{
if (_Mood <= 0) { Added.Invoke(this, new EventHendlerArgs($"Кот ({_Name}) рычит!(Дерёт мебель)")); }
else { Added.Invoke(this, new EventHendlerArgs($"Кот ({_Name}) Мяукает(скачет по шкафам)!")); }
}
break;
case "3":
if (_Age < 6) { _Health += 10; }
if (_Age > 5 || _Age < 11) { _Health += 5; }
if (_Age > 10) { _Health += 2; }
ok = true;
//if (message != null) { message($"Кот ({_Name}) урчит!"); }
if (Added != null) { Added.Invoke(this, new EventHendlerArgs($"Кот ({_Name}) урчит!")); }
break;
case "n":
if (_Age < 6) { _Hangry -= 2; _Mood -= 2; _Health -= 2; }
if (_Age > 5 || _Age < 11) { _Hangry -= 5; _Mood -= 5; _Health -= 5; }
if (_Age > 10) { _Hangry -= 10; _Mood -= 10; _Health -= 10; }
ok = true;
break;
case "q":
ok = false;
break;
default:
break;
}
CatsInfo();
return ok;
}
public void CatsInfo()
{
Console.WriteLine($"Имя кота - {_Name}");
Console.WriteLine($"Возраст кота - {_Age}");
Console.WriteLine($"Уровень сытости - {_Hangry}");
Console.WriteLine($"Уровень настроения - {_Mood}");
Console.WriteLine($"Уровень здоровья - {_Health}");
Print();
Print();
}
public static void Print()
{
Console.Write("-------------------------------------------------\n");
}
}
}
EventHendlerArgs.cs
namespace CatsFin.CatsFolder
{
public class EventHendlerArgs
{
public string _mess { get; set; }
public EventHendlerArgs(string message)
{
_mess = message;
}
}
}
Почему не работает Событие?
Раньше делал похожий пример по уроку всё работало, а тут не в какую! Может глаз за мылился уже. Не могу понять что не так.
Print();
CreateCat.CatsInfo();
CreateCat.Added += (MethodEvent); // not baseCats
while (CreateCat.Hangry());
P.S. Пожалуйста, посмотрите в словаре, как пишутся английские слова. Код очень тяжело читать.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Помогите разобратьсякак корректно построить иерархию для 3 вложенности в treeview, а именно для 3 классов, описывающих таблицы БД (entity framework):
Хочу в классе Eloquent получить название класса Tickers
По ответам из этого вопроса я понял как создавать jwt токенНо теперь встал вопрос, как его неявно обновлять
Есть класс Dispatcher с набором public методов, которые вызываются извнеКаждый из методов - задача(Func<Task>), запускаемая в очереди (в один момент...