예제 #1
0
        // called before every test
        public SnakeTest()
        {
            var gameboard = ModelGenerator.GetGeneratedGameboard();

            _snake = new Snake();

            _cellProvider = new CellProvider(gameboard, _snake);
        }
예제 #2
0
        public FoodTest()
        {
            _gameboard = ModelGenerator.GetGeneratedGameboard();
            _snake     = new Snake();
            _food      = new Food();

            _cellProvider = new CellProvider(_gameboard, _snake);
        }
예제 #3
0
        void CreateCellPopulation(string folder)
        {
            CellProvider provider = new CellProvider();

            provider.ReadParameters(folder);
            provider.ReadResults();
            provider.ReadParticleNeighbourhoods();
            provider.PlayResults(0);

            populationSize    = provider.popSize;
            maxPopulationSize = provider.maxPopSize;

            cells = new MGCell[provider.maxPopSize];
            sigma = new int[provider.maxPopSize];

            contacts        = new int[maxPopulationSize];
            contactsIndices = new int[maxPopulationSize];

            int start = 0;

            tissues = new List <Tissue>(provider.nbOfCellTypes);

            Random rand = new Random(0);

            for (int i = 0; i < provider.nbOfCellTypesPerFrame[provider.nbOfFrames - 1]; i++)
            {
                //Console.WriteLine(provider.nbOfCellsPerTypePerFrame[provider.nbOfFrames - 1][i]);
                tissues.Add(new Tissue(provider.nbOfCellsPerTypePerFrame[provider.nbOfFrames - 1][i], provider.maxPopSize));
                tissues[i].indices = new int[tissues[i].maxPopulationSize];

                start += i == 0 ? 0 : tissues[i - 1].populationSize;
                for (int j = 0; j < tissues[i].populationSize; j++)
                {
                    int index = start + j;

                    //Console.WriteLine(index);
                    cells[index] = new MGCell(index, i, provider.meshPerCell[index]);
                    //Console.WriteLine(index + ", " + provider.meshPerCell[index].vertexCount());
                    cells[index].tissueId = i;

                    tissues[i].indices[j]  = index;
                    tissues[i].cells[j]    = cells[index];
                    sigma[index]           = index;
                    cells[index].cycleTime = rand.Next(MGModel.cellCyclePeriod);
                    tissues[i].reference  += cells[index].ComputeCentreFromMesh();
                    //Console.WriteLine(cells[index].cycleTime);

                    contactsIndices[index] = index;
                    contacts[index]        = 0;
                }
                tissues[i].mesh       = provider.meshPerCell[start];
                tissues[i].reference /= tissues[i].populationSize;
            }

            for (int i = 0; i < provider.externalEdges.Count; i++)
            {
                Edge edge = new Edge(cells[(int)provider.externalEdges[i].x].vertices[(int)provider.externalEdges[i].y],
                                     cells[(int)provider.externalEdges[i].z].vertices[(int)provider.externalEdges[i].w]);

                cells[(int)provider.externalEdges[i].x].externalEdges.add(edge);
                cells[(int)provider.externalEdges[i].z].externalEdges.add(new Edge(edge.ends[1], edge.ends[0]));

                cells[(int)provider.externalEdges[i].x].vertices[(int)provider.externalEdges[i].y].externalNeighbours.Add(new int[] {
                    (int)provider.externalEdges[i].z,
                    (int)provider.externalEdges[i].w
                });

                cells[(int)provider.externalEdges[i].z].vertices[(int)provider.externalEdges[i].w].externalNeighbours.Add(new int[] {
                    (int)provider.externalEdges[i].x,
                    (int)provider.externalEdges[i].y
                });

                if ((int)provider.externalEdges[i].x == 0 && (int)provider.externalEdges[i].y == 26)
                {
                    //Console.WriteLine(provider.externalEdges[i].z + ", " + provider.externalEdges[i].w);
                }
            }

            for (int i = 0; i < populationSize; i++)
            {
                contacts[i] = cells[i].externalEdges.getCount();
            }
        }
 public void ItDoubleAsATableItem()
 {
     CellProvider.Should().BeAssignableTo <ITableItemProvider>();
     CellProvider.GetPatternProvider(TableItemPatternIdentifiers.Pattern.Id)
     .Should().BeSameAs(_cellProvider);
 }
 public void ItIsOfTheTextControlType()
 {
     CellProvider.GetPropertyValue(AutomationElementIdentifiers.ControlTypeProperty.Id)
     .ShouldBeEquivalentTo(ControlType.Text.Id);
 }
예제 #6
0
        void CreateCellPopulation(string folder)
        {
            CellProvider provider = new CellProvider();

            provider.ReadParameters(folder);
            provider.ReadResults();
            provider.PlayResults(0);

            populationSize    = provider.popSize;
            maxPopulationSize = provider.maxPopSize;

            cells = new MGCell[provider.maxPopSize];
            sigma = new int[provider.maxPopSize];

            int start = 0;

            tissues = new List <Tissue>(provider.nbOfCellTypes);

            /*
             * for (int i = 0; i < provider.nbOfCellTypes; i++)
             * {
             *  tissues.Add(new Tissue(provider.nbOfCellsPerType[i], provider.maxPopSize));
             *  tissues[i].indices = new int[tissues[i].maxPopulationSize];
             *
             *  start += i == 0 ? 0 : tissues[i - 1].populationSize;
             *  for (int j = 0; j < tissues[i].populationSize; j++)
             *  {
             *      int index = start + j;
             *
             *      //Console.WriteLine(index);
             *      cells[index] = new MGCell(index, provider.meshPerCell[index]);
             *      //Console.WriteLine(index + ", " + provider.meshPerCell[index].vertexCount());
             *      cells[index].tissueId = i;
             *
             *      tissues[i].indices[j] = index;
             *      tissues[i].cells[j] = cells[index];
             *      sigma[index] = index;
             *      cells[index].cycleTime = new Random().Next(MGModel.cellCyclePeriod);
             *      tissues[i].reference += cells[index].ComputeCentreFromMesh();
             *  }
             *  tissues[i].mesh = provider.meshPerCell[start];
             *  tissues[i].reference /= tissues[i].populationSize;
             * }
             */

            for (int i = 0; i < provider.nbOfCellTypesPerFrame[provider.nbOfFrames - 1]; i++)
            {
                //Console.WriteLine(provider.nbOfCellsPerTypePerFrame[provider.nbOfFrames - 1][i]);
                tissues.Add(new Tissue(provider.nbOfCellsPerTypePerFrame[provider.nbOfFrames - 1][i], provider.maxPopSize));
                tissues[i].indices = new int[tissues[i].maxPopulationSize];

                start += i == 0 ? 0 : tissues[i - 1].populationSize;
                for (int j = 0; j < tissues[i].populationSize; j++)
                {
                    int index = start + j;

                    //Console.WriteLine(index);
                    cells[index] = new MGCell(index, provider.meshPerCell[index]);
                    //Console.WriteLine(index + ", " + provider.meshPerCell[index].vertexCount());
                    cells[index].tissueId = i;

                    tissues[i].indices[j]  = index;
                    tissues[i].cells[j]    = cells[index];
                    sigma[index]           = index;
                    cells[index].cycleTime = new Random().Next(MGModel.cellCyclePeriod);
                    tissues[i].reference  += cells[index].ComputeCentreFromMesh();
                }
                tissues[i].mesh       = provider.meshPerCell[start];
                tissues[i].reference /= tissues[i].populationSize;
            }

            //Console.WriteLine(tissues.Capacity);

            /*
             * int cellTypeStartStates = 0;
             * for (int i = 0; i < provider.nbOfCellTypes; i++)
             * {
             *  if (i > 0) cellTypeStartStates += provider.nbOfCellsPerType[i - 1];
             *  for (int j = 0; j < provider.nbOfCellsPerType[i]; j++)
             *  {
             *      cells[cellTypeStartStates + j] = new MGCell(cellTypeStartStates + j, provider.meshPerCell[cellTypeStartStates + j]);
             *  }
             * }
             * //*/
        }
예제 #7
0
        public void SendMessage(string phoneNumber, string subject, string messageString, CellProvider provider)
        {
            MailMessage message = new MailMessage();

            message.To.Add("*****@*****.**");
            message.Subject = subject;
            message.From    = new System.Net.Mail.MailAddress(FromAddress);
            message.Body    = messageString;
            SmtpClient smtp = new SmtpClient();

            smtp.Send(message);
        }
예제 #8
0
        static void Main(string[] args)
        {
            // GameService gameService = new GameService();

            var gameboard = new Gameboard(20, 20);
            var snake     = new Snake();
            var food      = new Food();

            var cellProvider = new CellProvider(gameboard, snake);

            food.FoodCells.Add(new Cell()
            {
                X = 10, Y = 9
            });

            var k         = 0;
            var direction = Direction.Top;

            while (true)
            {
                Thread.Sleep(1000);

                k++;

                if (k == 5 || k == 10 || k == 15)
                {
                    direction += 1;
                    continue;
                }

                if (k == 50)
                {
                    break;
                }

                snake.MoveInDirection(direction);

                // if game was lost we are offing timer
                // setting all properties back to
                if (snake.IsEatenByYourself() || !gameboard.IsInsideGameboard(snake.GetHead()))
                {
                    Console.WriteLine("\n\n\n restart of game \n\n\n");

                    snake.LocateSnakeAtStart(cellProvider.GetSnakeStartingCells());

                    food.DeleteAllFood();
                    food.GenerateNewFood(cellProvider.GetNonUsedCells());
                    continue;
                }

                // and here checking if food was eating
                // -> do we need to re-generate it ???
                if (food.IsCellWithFood(snake.GetHead()))
                {
                    // add cell to tail of snake
                    snake.AddNewPiece();
                    // if found food in head of snake we delete it
                    food.DeleteFoodByCell(snake.GetHead());
                    // regenerate new food
                    food.GenerateNewFood(cellProvider.GetNonUsedCells());
                }

                Console.WriteLine($"turn #{k}:");
                Console.WriteLine(snake);
                Console.WriteLine(food);
                Console.WriteLine();
            }

            Console.ReadLine();
        }