Example #1
0
 public Simulation(Tree treeParam, FileHandler fileHandlerParam, NanoVirus nanoVirusParam)
 {
     this.tree            = treeParam;
     this.fileHandler     = fileHandlerParam;
     this.rand            = new Random();
     this.nanoVirus       = nanoVirusParam;
     this.tumourusCells   = new List <Tumourus>();
     this.redBloodCells   = new List <Cell>();
     this.whiteBloodCells = new List <Cell>();
     this.nanoVirusCells  = new List <NanoVirus>();
 }
Example #2
0
        public Session Duplicate(Session session, NanoVirus nanoVirus)
        {
            Random random = new Random();

            if (isActive)
            {
                session.NanoVirusCells.Add(new NanoVirus(random.Next(1, 5000).ToString(), "", nanoVirus.Location));
                return(session);
            }
            else
            {
                return(session);
            }
        }
Example #3
0
        public Session Move(Session session, NanoVirus nanoVirus)
        {
            Dictionary <string, string> distances = new Dictionary <string, string>();

            if (isActive)
            {
                distances = CalculateDistance(session, nanoVirus);
                var firstElement = distances.FirstOrDefault();
                if (int.Parse(firstElement.Value) <= int.Parse("2000"))
                {
                }
                else
                {
                }
                return(session);
            }
            else
            {
                return(session);
            }
        }
Example #4
0
        public Dictionary <string, string> CalculateDistance(Session session, NanoVirus nanoVirus)
        {
            double xDiff = 0, yDiff = 0, zDiff = 0;
            Dictionary <string, string> distances = new Dictionary <string, string>();

            if (session.TumourusCells.Any())
            {
                foreach (Tumourus item in session.TumourusCells) // calculates the distance between the tumourus cell and the red blood cell
                {
                    xDiff = Math.Pow(int.Parse(item.Location.XCoordinate) - int.Parse(nanoVirus.Location.XCoordinate), 2);
                    yDiff = Math.Pow(int.Parse(item.Location.YCoordinate) - int.Parse(nanoVirus.Location.YCoordinate), 2);
                    zDiff = Math.Pow(int.Parse(item.Location.ZCoordinate) - int.Parse(nanoVirus.Location.ZCoordinate), 2);
                    distances.Add(item.ID, xDiff.ToString() + " " + yDiff.ToString() + " " + zDiff.ToString());
                }
                distances = distances.OrderBy(x => x.Value).ToDictionary(x => x.Key, x => x.Value); // sort the dictonary to put the shortest distance first
                return(distances);
            }
            else
            {
                return(null);
            }
        }
Example #5
0
        public Session KillCell(Session session, NanoVirus nanoVirus)
        {
            Dictionary <string, string> distances = new Dictionary <string, string>();

            distances = CalculateDistance(session, nanoVirus);
            try
            {
                var firstElement = distances.FirstOrDefault();
                foreach (Tumourus item in session.TumourusCells)
                {
                    if (firstElement.Key == item.ID)
                    {
                        session.TumourusCells.Remove(item);
                    }
                }
                return(session);
            }
            catch (Exception e)
            {
                return(session);
            }
        }