Загрузка данных
using System;
namespace RPGGame
{
// Перечисление типов предметов
enum ItemType { Weapon, Armor, Potion, Artifact }
class GameItem
{
public string Name { get; set; }
public int Power { get; set; }
public ItemType Type { get; set; }
public GameItem(string name, int power, ItemType type)
{
Name = name;
Power = power;
Type = type;
}
// 1. Оператор + : объединение предметов
public static GameItem operator +(GameItem a, GameItem b)
{
string newName;
ItemType newType;
if (a.Type == b.Type)
{
newName = a.Name; // Если типы одинаковые (например, два меча), название остается
newType = a.Type;
}
else
{
newName = "Artifact"; // Если разные — получается артефакт
newType = ItemType.Artifact;
}
return new GameItem(newName, a.Power + b.Power, newType);
}
// 2. Оператор * : усиление предмета (например, зельем или множителем)
public static GameItem operator *(GameItem item, int multiplier)
{
return new GameItem(item.Name, item.Power * multiplier, item.Type);
}
// 3. Оператор - : износ предмета (уменьшение силы)
public static GameItem operator -(GameItem item, int wear)
{
int newPower = Math.Max(0, item.Power - wear); // Сила не может быть меньше 0
return new GameItem(item.Name, newPower, item.Type);
}
// 4. Операторы > и < : сравнение силы предметов
public static bool operator >(GameItem a, GameItem b) => a.Power > b.Power;
public static bool operator <(GameItem a, GameItem b) => a.Power < b.Power;
// 5. Операторы == и != : проверка равенства силы и типа
public static bool operator ==(GameItem a, GameItem b)
{
return a.Power == b.Power && a.Type == b.Type;
}
public static bool operator !=(GameItem a, GameItem b) => !(a == b);
public override string ToString()
{
return $"{Name} ({Type}), Power: {Power}";
}
}
class Program
{
static void Main()
{
Console.WriteLine("--- Тестирование операторов ---");
GameItem sword1 = new GameItem("Меч", 10, ItemType.Weapon);
GameItem sword2 = new GameItem("Меч", 15, ItemType.Weapon);
GameItem shield = new GameItem("Щит", 20, ItemType.Armor);
GameItem potion = new GameItem("Зелье", 5, ItemType.Potion);
// Примеры из задания
Console.WriteLine(sword1 + sword2); // Меч (Weapon), Power: 25
Console.WriteLine(sword1 + shield); // Artifact (Artifact), Power: 30
Console.WriteLine(potion * 3); // Зелье (Potion), Power: 15
Console.WriteLine("\n--- Мини-миссия ---");
/* Игрок имеет: Меч (10), Меч (15), Зелье (5).
Нужно создать лучший предмет против Босса (Power = 40).
*/
// 1. Усилим зелье (предположим, у нас есть множитель или мы комбинируем его)
// Или просто объединим всё, что есть у игрока:
GameItem superSword = sword1 + sword2; // Меч (25)
// Усилим результат зельем (в логике RPG это может быть крафт или бафф)
GameItem finalArtifact = superSword + (potion * 3); // 25 + 15 = 40
Console.WriteLine($"Созданный предмет: {finalArtifact}");
int bossPower = 40;
Console.WriteLine($"Сила босса: {bossPower}");
if (finalArtifact.Power >= bossPower)
{
Console.WriteLine("Результат: Игрок победил босса!");
}
else
{
Console.WriteLine("Результат: Игрок проиграл...");
}
}
}
}