using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace обучалка { class airport { private int maxspeed = 0; int speed = 0; int fuel = 0; int fuelpersec = 0; int maxfuel = 10; int height = 0; int maxheight = 900; bool engine = False; int ind; //это индекс объекта. это временная переменная, которую можно удалить, если реализуешь иначе. но она пока для того, что бы вызов метода "респаун" не ругался.*** public airport() { fuel = 10; Console.WriteLine("Диспетчерская. Система управления самолетами."); } public void getfuel() // заправка { fuel = maxfuel; } public void morespeed(int a) // увелич. скорости { fuel = fuel - a * maxfuel * 5 / 100; //на каждое изм. скорости требуется 5 проц от макс кол-ва топлива if (speed + a < maxspeed) { speed = speed + a; } else { Console.WriteLine("Нельзя увеличить скорость на данное значение, превышает макс. скорость."); } } public void lessspeed(int a) // уменьш. скорости { fuel = fuel - a * maxfuel * 5 / 100; if (speed - a > 0) { speed = speed - a; } else { speed = 0; } if (speed < maxspeed / 100) // при слишком низкой скорости самолет разбивается { height = 0; Console.WriteLine("Слишком низкая скорость. Самолет упал и разбился."); } } public void moreheight(int a) // увелич. высоты { fuel = fuel - a * maxfuel / 100; //на каждое изм. высоты требуется 10 проц от макс кол-ва топлива if (height + a < maxspeed) { height = height + a; } else { Console.WriteLine("Нельзя увеличить высоту на данное значение, превышает макс. высоту."); } } public void lessheight(int a) // уменьш. высоты { fuel = fuel - a * maxfuel / 100; if (height - a > 0) { height = height + a; } else // при уменьш. высоты до уровня земли проверяется скорость самолета, если она слишком большая самолет разбивается { if (speed > maxspeed * 50 / 100) { height = 0; Console.WriteLine("Самолет разбился."); } else { height = 0; Console.WriteLine("Самолет приземлился."); } } } public void startengine() { engine = True; Console.WriteLine("Запуск двигателя."); met.center(); } public void stopengine() { engine = False; Console.WriteLine("Отключение двигателя."); } } static class met //класс-набор методов { public static airport plane = new airport();//наш любимый самолётик static void print_menu()//просто пусть печать юудет в отделном вызываемом методе. в методе центр эта писанина лишняя наверное. да и так удобнее, хотя возможно это просто я так привык делать. {//но если нам понадобится вызвать менюшку хотя бы в 2х и больше мест, то этот метод оправдан. так что считай, что это на вырост Console.WriteLine("Введите команду \n 1 - запуск двиг., \n 2 - остановка двиг., \n 3 - заправка, \n 4 - увелич. скорость, \n 5 - уменьшить скорость, \n 6 - увелич. высоту, \n 7 - уменьш. высоту."); } static void StartProgramm() //метод, создающий объекты самолёт и заносящий их в Авиапарк. принимаемый параметр = количеству самолётов в авиапарке {}//хотя этот метод теперь лишний, но вс равно не удаляй. пусть он будет на будущее. ты там ещё создашь нормальный конструктор Самолёту и тогда заюзаешь public static void center()//"метод-интерфейс" для пользователя. показывает менюшку и перенаправляет по выбору. { Console.ReadKey(); Console.Clear(); met.print_menu();//вызов метода-мечати твоей менюшки. там расписанно подробно int command = Convert.ToInt32(Console.ReadLine()); Console.Clear(); //чистим консоль... в эстетических целях) switch (command) { case 1: plane.startengine(); break; case 2: plane.stopengine(); break; //if (plane.hight > 0) // тут ты обращался просто к полю метода.. но я даже не понимаю как оно бы сработало у тебя в мэине) либо делай все поля пабликами и тогда не мучайся, либо дела Set и Get для каждого поля класса. { //твои действия или что там... } //ну и продолжай дальше расписывать } } //met.plane.startengine(); а это пример обращения к полю и тд. вот такую штуку вставь в конце каждого метода-действия. } class Program //базовый класс { static void Main(string args) //точка входа в программу { met.center(); //просто передача управления в наш метод-интерфейс } } }