Skip to content

Instantly share code, notes, and snippets.

@QRemark
Created July 17, 2024 14:19
Show Gist options
  • Save QRemark/f197268c152707930f82b7304a4ffb45 to your computer and use it in GitHub Desktop.
Save QRemark/f197268c152707930f82b7304a4ffb45 to your computer and use it in GitHub Desktop.
Топ игроков сервера
using System;
using System.Collections.Generic;
using System.Linq;
namespace Linq
{
internal class Program
{
static void Main(string[] args)
{
UserFactory userFactory = new UserFactory();
Server server = new Server(userFactory);
server.Work();
}
}
class Server
{
private List<User> _users;
private int _top = 3;
public Server(UserFactory userFactory)
{
_users = userFactory.Create();
}
public void Work()
{
const string CommandShowAllHuman = "1";
const string CommandSortByLevel = "2";
const string CommandSortByPower = "3";
const string CommandExit = "4";
bool isRunning = true;
string userInput;
while (isRunning)
{
Console.WriteLine("Добро пожаловать на сервер! \nВам доступно: ");
Console.WriteLine($"{CommandShowAllHuman} - посмотреть весь список игроков людей");
Console.WriteLine($"{CommandSortByLevel} - посмотреть топ по уровню");
Console.WriteLine($"{CommandSortByPower} - посмотреть топ по силе");
Console.WriteLine($"{CommandExit} - выйти из приложения");
Console.Write("Выберите действие: ");
userInput = Console.ReadLine();
switch (userInput)
{
case CommandShowAllHuman:
ShowAllUsers();
break;
case CommandSortByLevel:
SortByLevel();
break;
case CommandSortByPower:
SortByPower();
break;
case CommandExit:
isRunning = false;
break;
default:
UserUtils.HandleInvalidInput();
break;
}
Console.Clear();
}
Console.WriteLine("Всего доброго! \nДля закрытия приложения нажмите любую кнопку...");
Console.ReadKey();
}
private void Show(List<User> users)
{
int number = 1;
UserUtils.ShowLine();
foreach (var user in users)
{
Console.Write(number++ + ") ");
user.ShowStats();
}
UserUtils.ShowLine();
}
private void SortByLevel()
{
Console.WriteLine("Вы решили посмотреть топ по уровню: ");
var result = _users.OrderByDescending(user => user.Level).Take(3).ToList();
Console.WriteLine("Топ по уровню выглядит так:");
Show(result);
Console.WriteLine("Нажмите любую клавишу для продолжения...");
Console.ReadKey();
}
private void SortByPower()
{
Console.WriteLine("Вы решили посмотреть топ по силе: ");
var result = _users.OrderByDescending(user => user.Power).Take(3).ToList();
Console.WriteLine("Топ по силе выглядит так:");
Show(result);
Console.WriteLine("Нажмите любую клавишу для продолжения...");
Console.ReadKey();
}
private void ShowAllUsers()
{
Console.WriteLine("Вы выбрали посмотреть список всех пользователей, вот он: ");
Show(_users);
Console.WriteLine("Для продолжения нажмите любую клавишу...");
Console.ReadKey();
}
}
class UserFactory
{
public List<User> Create()
{
List<User> users = new List<User>
{
new User("БлинчикСМёдом", 6, 100),
new User("УсатыйБобр", 13, 115),
new User("КексикПодМухой", 90, 74),
new User("ВафельныйДжек", 60, 11),
new User("ПеченькаСУлыбкой", 131, 369),
new User("БанановыйДжаз", 227, 85),
new User("ЙогуртныйКролик", 1, 69),
new User("СмешнойПончик", 24, 15),
new User("КапкейкНаВелосипеде", 8, 201),
new User("ЧизбургерныйГном", 61, 400),
new User("ОблакоВТапочках", 70, 133),
new User("ЧудоРогалик", 4, 5),
new User("БегемотикВПижаме", 339, 90)
};
return new List<User>(users);
}
}
class User
{
public User(string name, int level, int power)
{
Name = name;
Level = level;
Power = power;
}
public string Name { get; private set; }
public int Level { get; private set; }
public int Power { get; private set; }
public void ShowStats()
{
Console.WriteLine($"Никнейм игрока: {Name}, Уровень: {Level}, Сила: {Power}");
}
}
static class UserUtils
{
public static void HandleInvalidInput()
{
Console.Clear();
Console.WriteLine("Команда не была распознана, нажмите любую клавишу для продолжения...");
Console.ReadKey();
}
public static void ShowLine() => Console.WriteLine("\n** " + new string('-', 40) + " **");
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment