예제 #1
0
        private bool[] What_should_I_doJ()
        {
            #region input order

            /* 1. speed
             * 2.distance
             * 3.width
             * 4.can jump
             */
            #endregion
            inputs[0] = Tools.pm.getEngine(this.ID).velocity.X;
            List <float> ins = GetAsentialData.findDif(this, Global.bg.obstacleList);
            if (ins.Count != 0)
            {
                inputs[1] = ins[0] / 10; //distamce between obstacle and jump
                inputs[2] = ins[1] / 10; //obstacle width
            }
            else
            {
                bool[] answers1 = new bool[outputNum];
                answers1[0] = false;;
                return(answers1);
            }

            if (GetAsentialData.CanJump(this))
            {
                inputs[3] = 1;
            }
            else
            {
                inputs[3] = -1;
            }

            //activating neuralNet
            float[] output = nn.calculate(inputs);

            //maping the outputs
            bool[] answers = new bool[outputNum];
            for (int i = 0; i < answers.Length; i++)
            {
                if (output[i] > 0)
                {
                    answers[i] = true;
                }
                else
                {
                    answers[i] = false;
                }
            }

            //returning answers
            return(answers);
        }
예제 #2
0
        private bool[] What_should_I_doJR()
        {
            #region input order

            /* 1. speed
             * 2.distance
             * 3.width
             * 4.can jump
             * 5. distance to second group
             */
            #endregion
            //// setting input
            inputs[0] = Tools.pm.getEngine(this.ID).velocity.X;                       // speed
            List <float> ins = GetAsentialData.findDif(this, Global.bg.obstacleList); // find data for jump
            inputs[1] = ins[0] / 100;                                                 //distamce between obstacle and jump
            inputs[2] = ins[1] / 10;                                                  //obstacle width

            //if can jump 1 else -1
            if (GetAsentialData.CanJump(this))
            {
                inputs[3] = 1;
            }
            else
            {
                inputs[3] = -1;
            }

            //distance to next Obstacle
            inputs[4] = GetAsentialData.findDifNext(this, Global.bg.obstacleList) / 100;

            //activating neuralNet
            float[] output = nn.calculate(inputs);

            //maping the outputs
            bool[] answers = new bool[outputNum];
            for (int i = 0; i < answers.Length; i++)
            {
                if (output[i] > 0)
                {
                    answers[i] = true;
                }
                else
                {
                    answers[i] = false;
                }
            }

            //returning answers
            return(answers);
        }