Advertisement
Teammasik

hellish hw

Jun 21st, 2023
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.82 KB | Fixit | 0 0
  1. using System.Diagnostics.Metrics;
  2. using System.Numerics;
  3.  
  4. namespace Genius_tests
  5. {
  6.     public class Part
  7.     {
  8.         public string PartName { get; set; }
  9.         public Vector3 Position { get; set; }
  10.         private PartState PartState = PartState.Idle;
  11.         public PartState CurrentState { get { return PartState; } }
  12.         public int Id; // оказывается рекурсия это плохо
  13.  
  14.         public int _Id {
  15.             get
  16.             {
  17.                 return Id;
  18.             }
  19.             private set
  20.             {
  21.                 Id = value;
  22.             }
  23.         }
  24.         public void AttachToPoint(Vector3 newstate)
  25.         {
  26.             Position = newstate;
  27.             PartState = PartState.Installed;
  28.         }
  29.  
  30.         public Part Clone()
  31.         {
  32.             return new Part(PartName,Position, Id);
  33.         }
  34.         public Part(string name, Vector3 pos, int id)
  35.         {
  36.             PartName = name;
  37.             Position = pos;
  38.             Id = id;
  39.         }
  40.  
  41.     }
  42.  
  43.     public class PartFactory
  44.     {
  45.         public static List<string> partsList = new() { "truba", "glue", "tape","zaglushka" };
  46.         public static List<Vector3> vecPosition = new() { new Vector3(1,1,1), new Vector3(2, 1, 3), new Vector3(0, 0, 0), new Vector3(7, 2, 7) };
  47.         public static int currentPartsListIndex = 0 ;
  48.  
  49.         public static Part Spawn()
  50.         {
  51.             Part subject = new Part(PartFactory.partsList[PartFactory.currentPartsListIndex], PartFactory.vecPosition[PartFactory.currentPartsListIndex], PartFactory.currentPartsListIndex);
  52.             Part detail = subject.Clone();
  53.             currentPartsListIndex++;
  54.             return detail;
  55.         }
  56.     }
  57.  
  58.     public class JointPoint
  59.     {
  60.         public static List<Vector3> fixedPosition = new() {new Vector3(9,9,9), new Vector3(10, 10, 10), new Vector3(20, 20, 20), new Vector3(30, 30, 30), };
  61.         public static List<int> suitableID = new() {0, 2, 1, 3 }; //здесь порядок в котором должны парты садиться на новые координаты.
  62.         public static List<bool> enabled = new() {true, true, true, true};
  63.  
  64.         public static void Check(Part detail)
  65.         {
  66.  
  67.             int counter = 0; // вот это разобрать бы
  68.             foreach (var detailFind in suitableID)
  69.             {
  70.                 if (enabled[detailFind] == true)
  71.                 {
  72.                     if (detailFind == detail.Id)
  73.                     {
  74.                         detail.AttachToPoint(fixedPosition[counter]);
  75.                         //enabled[counter] = false; было так, не работало
  76.                         enabled[detail.Id] = false;
  77.                     }
  78.                 }
  79.                 counter++;
  80.             }
  81.  
  82.         }
  83.     }
  84.    
  85.     public enum PartState
  86.     {
  87.         Idle,
  88.         Installed
  89.     }
  90.  
  91.     public class test
  92.     {
  93.         public static void Main()
  94.         {
  95.             Console.WriteLine("Enter any key...");
  96.             string? startP = Console.ReadLine();
  97.  
  98.             // здесь более точный вывод
  99.             /*for (int i = 0; i < 4; i++)
  100.             {
  101.                 Console.WriteLine("Trying to create first detail:\n");
  102.  
  103.                 Part Detail = PartFactory.Spawn();
  104.                 Console.WriteLine($"created detail with index: {PartFactory.currentPartsListIndex - 1}");
  105.                 Console.WriteLine("it's pos: " + Detail.Position);
  106.  
  107.                 Console.WriteLine("attempt to connect w/ joint point");
  108.                 JointPoint.Check(Detail);
  109.                 Console.WriteLine("new coordinates:" + Detail.Position);
  110.  
  111.  
  112.  
  113.                 Console.WriteLine("Enter any key to continue: ");
  114.                 startP = Console.ReadLine();
  115.             }*/
  116.  
  117.             List<Part> detailList = new();
  118.  
  119.             for (int i = 0; i < 10; i++)
  120.             {
  121.                 if (PartFactory.currentPartsListIndex>3)
  122.                 {
  123.                     Console.WriteLine("out of details! список кончился \n");
  124.                     break;
  125.                 }
  126.                 detailList.Add(PartFactory.Spawn());
  127.             }
  128.  
  129.             //List<Part> detailList = new() { PartFactory.Spawn(), PartFactory.Spawn(), PartFactory.Spawn(), PartFactory.Spawn() };
  130.             for (int i = 0; i < 4; i++)
  131.             {
  132.                 if (detailList[i].CurrentState == PartState.Idle)
  133.                 {
  134.                     Console.WriteLine("ID of detail:" + detailList[i].Id);
  135.                     Console.WriteLine("old coordinates:" + detailList[i].Position);
  136.  
  137.                     JointPoint.Check(detailList[i]);
  138.  
  139.                     Console.WriteLine("new coordinates:" + detailList[i].Position + "\n");
  140.  
  141.                 }
  142.             }
  143.    
  144.         }
  145.        
  146.     }
  147.  
  148. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement