Exemple #1
0
        private List <ObservationSpaceRow> CreateRowControls(IMaze maze)
        {
            int position  = 0;
            int rowNumber = 0;
            List <ObservationSpaceRow> rows = new List <ObservationSpaceRow>();

            for (int i = 0; i < maze.Rows; i++)
            {
                var row = new ObservationSpaceRow();
                row.SetRowNumber(rowNumber);

                for (int j = 0; j < maze.Columns; j++)
                {
                    var space = new ObservationSpace();
                    space.SetPosition(position);

                    if (position == maze.GetInitialState())
                    {
                        space.SetStart(true);
                        space.SetActive();
                        space.Invalidate();
                    }

                    if (position == maze.GoalPosition)
                    {
                        space.SetGoal(true);
                    }

                    var customReward = maze.GetAdditionalRewards().Where(x => x.State == position).FirstOrDefault();

                    if (customReward != null)
                    {
                        space.SetReward(true, customReward.Value);
                    }

                    DrawWalls(maze, position, space);

                    row.AddSpace(space);
                    space.BorderStyle = BorderStyle.FixedSingle;
                    space.Dock        = DockStyle.Left;
                    space.BringToFront();

                    position++;
                }

                rows.Add(row);
                rowNumber++;
            }

            return(rows);
        }