Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace RefactorIMJunior
- {
- struct Skill
- {
- public string name;
- public int skillValue;
- public string skillVisual;
- public Skill(string _name, int _skillValue, string _skillVisual)
- {
- name = _name;
- skillValue = _skillValue;
- skillVisual = _skillVisual;
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- int age = 0,
- points = 25;
- List<Skill> skills = new List<Skill>();
- skills.Add(new Skill("Сила", 0, string.Empty));
- skills.Add(new Skill("Ловкость", 0, string.Empty));
- skills.Add(new Skill("Интелект", 0, string.Empty));
- int maxCharacteristicPoints = 10;
- PrintWelcome();
- while (points > 0)
- {
- Console.Clear();
- RenderAllSkills(skills, maxCharacteristicPoints);
- Console.WriteLine("Поинтов - {0}", points);
- PrintDistributedSkills(skills, age);
- Console.WriteLine("Какую характеристику вы хотите изменить?");
- string subject = Console.ReadLine();
- Console.WriteLine(@"Что вы хотите сделать? +\-");
- string operation = Console.ReadLine();
- Console.WriteLine(@"Колличество поинтов которые следует {0}", operation == "+" ? "прибавить" : "отнять");
- int operandPoints = 0;
- TryParseIntFromConsole(out operandPoints);
- CharacteristicsCounting(skills, subject.ToLower(), operandPoints, ref points, operation, maxCharacteristicPoints);
- }
- Console.WriteLine("Вы распределили все очки. Введите возраст персонажа:");
- TryParseIntFromConsole(out age);
- Console.Clear();
- RenderAllSkills(skills, maxCharacteristicPoints);
- PrintDistributedSkills(skills, age);
- Console.ReadKey();
- }
- private static void PrintWelcome()
- {
- Console.WriteLine("Добро пожаловать в меню выбора создания персонажа!");
- Console.WriteLine("У вас есть 25 очков, которые вы можете распределить по умениям");
- Console.WriteLine("Нажмите любую клавишу чтобы продолжить...");
- Console.ReadKey();
- }
- private static void RenderAllSkills(List<Skill> skills, int maxCharacteristicPoints)
- {
- for (int i = 0; i < skills.Count; i++)
- {
- string str = VisualiseSkills(skills[i].skillVisual, skills[i].skillValue, maxCharacteristicPoints);
- skills[i] = new Skill(skills[i].name, skills[i].skillValue, str);
- }
- }
- static string VisualiseSkills(string _characteristic, int _strengthLeft, int _maxCount)
- {
- _characteristic = string.Empty;
- _characteristic = _characteristic.PadLeft(_strengthLeft, '#').PadRight(_maxCount, '_'); ;
- return _characteristic;
- }
- private static void PrintDistributedSkills(List<Skill> list, int age)
- {
- Console.WriteLine("Возраст - " + age);
- foreach (var item in list)
- {
- Console.WriteLine(item.name + " - [" + item.skillVisual + "]");
- }
- }
- static void TryParseIntFromConsole(out int parseResult)
- {
- string tempStr = string.Empty;
- do
- {
- tempStr = Console.ReadLine();
- } while (!int.TryParse(tempStr, out parseResult));
- }
- static void CharacteristicsCounting(List<Skill> list, string subject, int tempOperandPoints, ref int tempPoints, string _operation, int _maxCount)
- {
- int index = list.IndexOf(list.Find((x) => x.name.ToLower() == subject));
- int newSkillValue = ChangeCharacteristicValue(list[index].skillValue, tempOperandPoints, _maxCount, _operation == "+" ? 1 : -1);
- list[index] = new Skill(list[index].name, newSkillValue, list[index].skillVisual);
- tempPoints = ChangeCharacteristicValue(tempPoints, tempOperandPoints, 25, _operation == "+" ? -1 : 1);
- }
- static int ChangeCharacteristicValue(int _characteristic, int _operandPoints, int _maxCount, int direction = 1)
- {
- int newValue = Clamp(_characteristic + _operandPoints * direction, 0, _maxCount);
- return newValue;
- }
- public static int Clamp(int value, int min, int max)
- {
- return (value < min) ? min : (value > max) ? max : value;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment