public LTPongWithoutBricks(SchoolWorld w)
            : base(w)
        {
            TSHints = new TrainingSetHints {
                { TSHintAttributes.IMAGE_NOISE, 0 },
                { TSHintAttributes.MAX_NUMBER_OF_ATTEMPTS, 10000 }
            };

            TSHints.Add(MAX_MISSES_ALLOWED, 1);
            TSHints.Add(BALL_HITS_NEEDED, 1);
            ballHitSum = 0f;
            ballHitSum = 0f;

            TSProgression.Add(TSHints.Clone());

            TSProgression.Add(
                new TrainingSetHints {
                { MAX_MISSES_ALLOWED, 1 },
                { BALL_HITS_NEEDED, 1 }
            });

            TSProgression.Add(
                new TrainingSetHints {
                { MAX_MISSES_ALLOWED, 10 },
                { BALL_HITS_NEEDED, 6 }
            });

            TSProgression.Add(
                new TrainingSetHints {
                { MAX_MISSES_ALLOWED, 10 },
                { BALL_HITS_NEEDED, 10 }
            });

            TSProgression.Add(
                new TrainingSetHints {
                { MAX_MISSES_ALLOWED, 10 },
                { BALL_HITS_NEEDED, 20 }
            });

            TSProgression.Add(
                new TrainingSetHints {
                { MAX_MISSES_ALLOWED, 10 },
                { BALL_HITS_NEEDED, 30 }
            });

            TSProgression.Add(
                new TrainingSetHints {
                { MAX_MISSES_ALLOWED, 10 },
                { BALL_HITS_NEEDED, 40 }
            });

            TSProgression.Add(
                new TrainingSetHints {
                { MAX_MISSES_ALLOWED, 1 },
                { BALL_HITS_NEEDED, 10 }
            });
        }
        public LTPongWithBricks(SchoolWorld w)
            : base(w)
        {
            TSHints = new TrainingSetHints {
                { TSHintAttributes.IMAGE_NOISE, 0 },
                { TSHintAttributes.MAX_NUMBER_OF_ATTEMPTS, 10000 }
            };

            TSHints.Add(MAX_MISSES_ALLOWED, 1);
            TSHints.Add(BALL_HITS_NEEDED, 1);
            ballHitSum = 0f;
            ballHitSum = 0f;

            TSProgression.Add(TSHints.Clone());

            // TODO: modify Difficulty according also to current pong level
            TSProgression.Add(
                new TrainingSetHints {
                { MAX_MISSES_ALLOWED, 1 },
                { BALL_HITS_NEEDED, 1 }
            });

            TSProgression.Add(
                new TrainingSetHints {
                { MAX_MISSES_ALLOWED, 6 },
                { BALL_HITS_NEEDED, 10 }
            });

            TSProgression.Add(
                new TrainingSetHints {
                { MAX_MISSES_ALLOWED, 6 },
                { BALL_HITS_NEEDED, 20 }
            });

            TSProgression.Add(
                new TrainingSetHints {
                { MAX_MISSES_ALLOWED, 5 },
                { BALL_HITS_NEEDED, 30 }
            });
        }
        public LTApproach(SchoolWorld w)
            : base(w)
        {
            TSHints = new TrainingSetHints
            {
                { TSHintAttributes.IS_VARIABLE_SIZE, 0 },
                { TSHintAttributes.IMAGE_NOISE, 0 },
                { TSHintAttributes.DEGREES_OF_FREEDOM, 1 },
                { TSHintAttributes.GIVE_PARTIAL_REWARDS, 1 },
                { TSHintAttributes.IMAGE_TEXTURE_BACKGROUND, 1 },
            };

            TSHints.Add(DISTANCE_BONUS_COEFFICENT, 1);

            TSProgression.Add(TSHints.Clone());
            TSProgression.Add(TSHintAttributes.DEGREES_OF_FREEDOM, 2);
            TSProgression.Add(TSHintAttributes.IMAGE_NOISE, 1);
            TSProgression.Add(TSHintAttributes.IS_VARIABLE_SIZE, 1);
            TSProgression.Add(TSHintAttributes.GIVE_PARTIAL_REWARDS, 0);
            //TSProgression.Add(TSHintAttributes.IMAGE_TEXTURE_BACKGROUND, 1);
        }