Пример #1
0
        private bool VerificaColisaoEntre(ClassCarga classCarga1, int w1, int h1, ClassCarga classCarga2, int w2, int h2)
        {
            var r1 = new Rectangle(classCarga1.posX, classCarga1.posY, w1, h1);
            var r2 = new Rectangle(classCarga2.posX, classCarga2.posY, w2, h2);

            return(Rectangle.Intersect(r1, r2) != Rectangle.Empty);
        }
Пример #2
0
        /// <summary>
        /// Operação de crossover entre dois cromossomos. 
        /// <param name="pair"> Recebe um cromossomo (par) que "cruzará" como atual.  </param>
        /// <returns> Retorna um filho com genes do cromossomo atual e do par. </returns>
        /// </summary>
        public EQChromosome Crossover(EQChromosome pair)
        {
            var filho = new ClassCarga[_positions.Length];

            for (int i = 0; i < Positions.Length; i++)
            {
                filho[i] = (i % 2 == 0 ? _positions[i] : pair._positions[i]);
            }

            return new EQChromosome(filho);
        }
Пример #3
0
        /// <summary>
        /// Operação de crossover entre dois cromossomos.
        /// <param name="pair"> Recebe um cromossomo (par) que "cruzará" como atual.  </param>
        /// <returns> Retorna um filho com genes do cromossomo atual e do par. </returns>
        /// </summary>
        public EQChromosome Crossover(EQChromosome pair)
        {
            var filho = new ClassCarga[_positions.Length];

            for (int i = 0; i < Positions.Length; i++)
            {
                filho[i] = (i % 2 == 0 ? _positions[i] : pair._positions[i]);
            }

            return(new EQChromosome(filho));
        }
Пример #4
0
 private bool VerificaColisaoComTabuleiro(ClassCarga classCarga, int w, int h)
 {
     if (classCarga.posX + w > 10 ||
         classCarga.posX < 0)
     {
         return(true);
     }
     if (classCarga.posY + h > 10 ||
         classCarga.posY < 0)
     {
         return(true);
     }
     return(false);
 }
Пример #5
0
        private int VerificaColisao(ClassCarga classCarga1, ClassCarga classCarga2)
        {
            int[] tam1 = GetTamByTipo(classCarga1.Tipo);
            int[] tam2 = GetTamByTipo(classCarga2.Tipo);
            int   w1, w2, h1, h2;

            w1 = tam1[0];
            h1 = tam1[1];

            w2 = tam2[0];
            h2 = tam2[1];

            //checando colisao
            if (VerificaColisaoComTabuleiro(classCarga1, w1, h1) ||
                VerificaColisaoComTabuleiro(classCarga2, w2, h2))
            {
                return(2);
            }
            if (VerificaColisaoEntre(classCarga1, w1, h1, classCarga2, w2, h2))
            {
                return(1);
            }
            return(0);
        }
Пример #6
0
 // Construtor - recebe o vetor com as posições
 public EQChromosome(ClassCarga[] positions)
 {
     this._positions = positions;
 }
Пример #7
0
        private bool VerificaColisaoEntre(ClassCarga classCarga1, int w1, int h1, ClassCarga classCarga2, int w2, int h2)
        {
            var r1 = new Rectangle(classCarga1.posX, classCarga1.posY, w1, h1);
            var r2 = new Rectangle(classCarga2.posX, classCarga2.posY, w2, h2);

            return Rectangle.Intersect(r1, r2) != Rectangle.Empty;
        }
Пример #8
0
 private bool VerificaColisaoComTabuleiro(ClassCarga classCarga, int w, int h)
 {
     if (classCarga.posX + w > 10
         || classCarga.posX < 0)
         return true;
     if (classCarga.posY + h > 10
         || classCarga.posY < 0)
         return true;
     return false;
 }
Пример #9
0
        private int VerificaColisao(ClassCarga classCarga1, ClassCarga classCarga2)
        {
            int[] tam1 = GetTamByTipo(classCarga1.Tipo);
            int[] tam2 = GetTamByTipo(classCarga2.Tipo);
            int w1, w2, h1, h2;
            w1 = tam1[0];
            h1 = tam1[1];

            w2 = tam2[0];
            h2 = tam2[1];

            //checando colisao
            if (VerificaColisaoComTabuleiro(classCarga1, w1, h1)
                || VerificaColisaoComTabuleiro(classCarga2, w2, h2))
            {
                return 2;
            }
            if (VerificaColisaoEntre(classCarga1, w1, h1, classCarga2, w2, h2))
                return 1;
            return 0;
        }