Загрузка данных
using System;
using System.Collections.Generic;
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;
}
// Перегрузка + для объединения
public static GameItem operator +(GameItem a, GameItem b)
{
string newName = (a.Type == b.Type) ? $"Улучшенный {a.Name}" : "Артефакт";
ItemType newType = (a.Type == b.Type) ? a.Type : ItemType.Artifact;
return new GameItem(newName, a.Power + b.Power, newType);
}
public override string ToString() => $"[{Name} | Сила: {Power} | Тип: {Type}]";
}
class Program
{
// Инвентарь игрока
static List<GameItem> inventory = new List<GameItem>();
static void Main()
{
// Стартовый набор
inventory.Add(new GameItem("Простой Меч", 10, ItemType.Weapon));
inventory.Add(new GameItem("Ржавый Кинжал", 5, ItemType.Weapon));
while (true)
{
Console.Clear();
Console.WriteLine("=== ГЛАВНОЕ МЕНЮ RPG ===");
Console.WriteLine("1. Посмотреть инвентарь");
Console.WriteLine("2. Создать новый предмет");
Console.WriteLine("3. Объединить предметы (Крафт)");
Console.WriteLine("4. Отправиться на Мини-миссию (Сила 20)");
Console.WriteLine("5. Бросить вызов БОССУ (Сила 50)");
Console.WriteLine("0. Выход");
Console.Write("\nВаш выбор: ");
string choice = Console.ReadLine();
switch (choice)
{
case "1": ShowInventory(); break;
case "2": CreateItem(); break;
case "3": CraftItem(); break;
case "4": GoToMission("Мини-миссия", 20); break;
case "5": GoToMission("БОСС", 50); break;
case "0": return;
}
Console.WriteLine("\nНажмите любую клавишу, чтобы вернуться в меню...");
Console.ReadKey();
}
}
static void ShowInventory()
{
Console.WriteLine("\n--- Ваш инвентарь ---");
for (int i = 0; i < inventory.Count; i++)
{
Console.WriteLine($"{i + 1}. {inventory[i]}");
}
}
static void CreateItem()
{
Console.Write("Введите название: ");
string name = Console.ReadLine();
Console.Write("Введите силу (число): ");
int power = int.Parse(Console.ReadLine() ?? "0");
inventory.Add(new GameItem(name, power, ItemType.Weapon));
Console.WriteLine("Предмет создан!");
}
static void CraftItem()
{
ShowInventory();
if (inventory.Count < 2)
{
Console.WriteLine("Нужно минимум 2 предмета для крафта!");
return;
}
Console.Write("Номер первого предмета: ");
int idx1 = int.Parse(Console.ReadLine()) - 1;
Console.Write("Номер второго предмета: ");
int idx2 = int.Parse(Console.ReadLine()) - 1;
if (idx1 >= 0 && idx2 >= 0 && idx1 < inventory.Count && idx2 < inventory.Count && idx1 != idx2)
{
GameItem newItem = inventory[idx1] + inventory[idx2];
// Удаляем старые, добавляем новый (удаляем с конца, чтобы индексы не поехали)
if (idx1 > idx2) { inventory.RemoveAt(idx1); inventory.RemoveAt(idx2); }
else { inventory.RemoveAt(idx2); inventory.RemoveAt(idx1); }
inventory.Add(newItem);
Console.WriteLine($"Успех! Получен новый предмет: {newItem}");
}
}
static void GoToMission(string name, int requiredPower)
{
Console.WriteLine($"\n--- Поход: {name} ---");
int totalPower = 0;
foreach (var item in inventory) totalPower += item.Power;
Console.WriteLine($"Ваша суммарная сила: {totalPower}");
Console.WriteLine($"Требуемая сила: {requiredPower}");
if (totalPower >= requiredPower)
{
Console.WriteLine($"ПОБЕДА! Вы прошли уровень '{name}'.");
if (name == "БОСС") Console.WriteLine("ПОЗДРАВЛЯЕМ! Игра пройдена!");
}
else
{
Console.WriteLine($"ПОРАЖЕНИЕ... Вам не хватило {requiredPower - totalPower} силы.");
}
}
}
}