コード例 #1
0
        public static void LinhaTest(bool on, int[,,] arrayPainelOriginal, int origX, int origY)
        {
            Console.WriteLine("X e Y para o ponto A");
            int firstInt  = int.Parse(Console.ReadLine());
            int secondInt = int.Parse(Console.ReadLine());

            Console.WriteLine("X e Y para o ponto B");
            int           thirdInt = int.Parse(Console.ReadLine());
            int           lastInt  = int.Parse(Console.ReadLine());
            PairOrdenated pointOne = new PairOrdenated(firstInt, secondInt);

            PairOrdenated pointTwo = new PairOrdenated(thirdInt, lastInt);

            PairOrdenated[] arrayLinha = Linha(pointOne, pointTwo);
            int[,,] arrayPainel = arrayPainelOriginal;

            Console.WriteLine();
            Console.BackgroundColor = ConsoleColor.Black;
            Console.Write("Se você quer desligar escreva ");
            Console.BackgroundColor = ConsoleColor.Magenta;
            Console.WriteLine("off");
            Console.BackgroundColor = ConsoleColor.Black;

            if (Console.ReadLine() == "off")
            {
                on = false;
            }
            Console.Clear();
        }
コード例 #2
0
            //public void ColisionMesh(int[,,] arrayObjectApearenceArray)
            //{
            //    arrayColisionMesh = Program.MeshCreator(arrayObjectApearenceArray); !!!!CONSERTAR!!!
            //}
            public static void Transform(Object ObjectOfInntersector, Object ObjectOfIntersected)
            {
                PairOrdenated pairTransform = Program.WillInstersect(ObjectOfInntersector, ObjectOfIntersected);

                ObjectOfInntersector.pairSpeed = pairTransform.Subtract(pairTransform, ObjectOfInntersector.pairPosition);

                ObjectOfInntersector.pairPosition.Add(ObjectOfInntersector.pairSpeed);
            }
コード例 #3
0
            public void ConsoleImageProjector(ImageBuffer imageBufferInQuestion)
            {
                PairOrdenated[] arrayOfpairs = new PairOrdenated[imageBufferInQuestion.dictionaryImageBuffer.Count];
                imageBufferInQuestion.dictionaryImageBuffer.Keys.CopyTo(arrayOfpairs, 0);

                for (int n = 0; n < arrayOfpairs.GetLength(0); n++)
                {
                    ConsoleProjector(arrayOfpairs[n], imageBufferInQuestion.dictionaryImageBuffer[arrayOfpairs[n]]);
                }
            }
コード例 #4
0
 public void ImageBuffering(ImageBuffer imageBufferInQuestion, ObjectDictionary objectDictionaryInQuestion)
 {
     List <Object>[] arrayOfLists = new List <Object> [objectDictionaryInQuestion.dictionaryOfDynamicObjects.Values.Count];
     objectDictionaryInQuestion.dictionaryOfDynamicObjects.Values.CopyTo(arrayOfLists, 0);
     for (int n = 0; n < arrayOfLists.Length; n++)
     {
         for (int m = 0; m < arrayOfLists[n].Count; m++)
         {
             PairOrdenated[] arrayOfPairs = new PairOrdenated[arrayOfLists[n][m].arrayApearance.Count];
             arrayOfLists[n][m].arrayApearance.Keys.CopyTo(arrayOfPairs, 0);
             for (int k = 0; k < arrayOfPairs.Length; k++)
             {
                 imageBufferInQuestion.dictionaryImageBuffer[arrayOfPairs[k].Add(arrayOfPairs[k], arrayOfLists[n][m].pairPosition)] = arrayOfLists[n][m].arrayApearance[arrayOfPairs[k]];
             }
         }
     }
 }
コード例 #5
0
        public static int[,] MeshCreator(int[,,] arrayObject)
        {
            Dictionary <int, List <int> > dictionaryObjectInicial = new Dictionary <int, List <int> >();
            int intSizeOfObjectInicial = 0;

            for (int x = 1; x < arrayObject.GetLength(0); x++)
            {
                for (int z = 1; z < arrayObject.GetLength(2); z++)
                {
                    PairOrdenated   pairPointA = new PairOrdenated(arrayObject[x, 0, z], arrayObject[x, 1, z]);
                    PairOrdenated   pairPointB = new PairOrdenated(arrayObject[x - 1, 0, z - 1], arrayObject[x - 1, 1, z - 1]);
                    PairOrdenated[] arrayLinha = Linha(pairPointA, pairPointB);
                    for (int n = 0; n < arrayLinha.GetLength(0); n++)
                    {
                        if (!(dictionaryObjectInicial[arrayLinha[n].intX].Contains(arrayLinha[n].intY) || arrayLinha == null))
                        {
                            dictionaryObjectInicial[arrayLinha[n].intX].Add(arrayLinha[n].intY);
                            intSizeOfObjectInicial++;
                        }
                    }
                }
            }
            int[,] arrayFinal = new int[intSizeOfObjectInicial, 2];
            int intArrayFinalIndex = 0;

            foreach (int n in dictionaryObjectInicial.Keys)
            {
                foreach (int m in dictionaryObjectInicial[n])
                {
                    arrayFinal[intArrayFinalIndex, 0] = n;
                    arrayFinal[intArrayFinalIndex, 1] = m;
                    intArrayFinalIndex++;
                }
            }
            return(arrayFinal);
        }
コード例 #6
0
        public static PairOrdenated[] Linha(PairOrdenated pointBegining, PairOrdenated pointEnd)
        {
            PairOrdenated pairPointA = new PairOrdenated();
            PairOrdenated pairPointB = new PairOrdenated();



            if (pointBegining.intX >= pointEnd.intX)
            {
                pairPointA.intX = pointBegining.intX;
                pairPointB.intX = pointEnd.intX;
            }
            else
            {
                pairPointA.intX = pointEnd.intX;
                pairPointB.intX = pointBegining.intX;
            }

            if (pointBegining.intY >= pointEnd.intY)
            {
                pairPointA.intY = pointBegining.intY;
                pairPointB.intY = pointEnd.intY;
            }
            else
            {
                pairPointA.intY = pointEnd.intY;
                pairPointB.intY = pointBegining.intY;
            }


            int intX           = pairPointA.intX - pairPointB.intX; // distancia entre os dois pontos no x
            int intXZero       = pairPointB.intX;                   // ponto mais perto do 0 no x
            int intXIsNegative = 1;

            int intY           = pairPointA.intY - pairPointB.intY;
            int intYZero       = pairPointB.intY;// ponto mais perto do 0 no y
            int intYIsNegative = 1;

            if (intX < 0)
            {
                intXIsNegative = 1;
            }
            if (intY < 0)
            {
                intYIsNegative = -1;
            }

            int intMaior;
            int intMaiorZero;
            int intMaiorIsNegative;

            bool boolIsXAndYInverted;

            int intMenor;
            int intMenorZero;
            int intMenorIsNegative;

            if (intX >= intY)
            {
                intMaior            = intX;
                intMaiorZero        = intXZero;
                intMaiorIsNegative  = intXIsNegative;
                boolIsXAndYInverted = false;
                intMenor            = intY;
                intMenorZero        = intYZero;
                intMenorIsNegative  = intYIsNegative;
            }
            else
            {
                intMaior            = intY;
                intMaiorZero        = intYZero;
                intMaiorIsNegative  = intYIsNegative;
                boolIsXAndYInverted = true;
                intMenor            = intX;
                intMenorZero        = intXZero;
                intMenorIsNegative  = intXIsNegative;
            }

            int[] arrayMaior = new int[intMaior * intMaiorIsNegative + 1];
            int[] arrayMenor = new int[intMaior * intMaiorIsNegative + 1];

            for (int n = 0; n < arrayMaior.Count(); n++)
            {
                arrayMaior[n] = intMaiorZero + n;
            }


            int valorInicial = 0;
            int vezesQueValoraraConst;
            int vezesQueValorara;
            int atrasoDoIntMenor;

            if (intMenor == 0)
            {
                vezesQueValoraraConst = arrayMenor.Count();
                atrasoDoIntMenor      = 0;
            }
            else
            {
                vezesQueValoraraConst = arrayMenor.Count() / intMenor * intMenorIsNegative;
                atrasoDoIntMenor      = arrayMenor.Count() % intMenor * intMenorIsNegative;
            }

            vezesQueValorara = vezesQueValoraraConst;

            for (int n = 0; n < arrayMenor.Count(); n++)
            {
                if (n == intMenor - atrasoDoIntMenor)
                {
                    vezesQueValoraraConst++;
                    vezesQueValorara++;
                }

                if (vezesQueValorara > 0)
                {
                    vezesQueValorara--;
                }

                else
                {
                    valorInicial++;
                    vezesQueValorara = vezesQueValoraraConst;
                    vezesQueValorara--;
                }

                arrayMenor[n] = intMenorZero + valorInicial;
            }

            int[] arrayOfX = arrayMaior;
            int[] arrayOfY = arrayMenor;

            if (boolIsXAndYInverted)
            {
                arrayOfX = arrayMenor;
                arrayOfY = arrayMaior;
            }

            PairOrdenated[] arrayReturned = new PairOrdenated[intMaior + 1];

            for (int n = 0; n < arrayOfX.Count(); n++)
            {
                if (intXIsNegative == -1)
                {
                    arrayReturned[n] = new PairOrdenated(arrayOfX[arrayOfX.Count() - n - 1], 0);
                }


                else
                {
                    arrayReturned[n] = new PairOrdenated(arrayOfX[n], 0);
                }
            }


            for (int n = 0; n < arrayOfY.Count(); n++)
            {
                if (intYIsNegative == -1)
                {
                    arrayReturned[n].intY = arrayOfY[arrayOfY.Count() - n - 1];
                }
                else
                {
                    arrayReturned[n].intY = arrayOfY[n];
                }
            }

            return(arrayReturned);
        }
コード例 #7
0
 public void ConsoleProjector(PairOrdenated pairOrdenation, int intColor, char charDraw = ' ')
 {
     Console.SetCursorPosition(pairOrdenation.intX, pairOrdenation.intY);
     Console.BackgroundColor = (ConsoleColor)(intColor % 16);
     Console.WriteLine(charDraw.ToString());
 }
コード例 #8
0
 public PairOrdenated Subtract(PairOrdenated pairordenatedA, PairOrdenated pairordenatedB)     //A-B
 {
     return(new PairOrdenated(pairordenatedA.intX - pairordenatedB.intX, pairordenatedA.intY - pairordenatedB.intY));
 }
コード例 #9
0
 public void Subtract(PairOrdenated pairordenatedB)//A-B
 {
     intX -= pairordenatedB.intX;
     intY -= pairordenatedB.intY;
 }
コード例 #10
0
 public PairOrdenated Add(PairOrdenated pairordenatedA, PairOrdenated pairordenatedB)
 {
     return(new PairOrdenated(pairordenatedA.intX + pairordenatedB.intX, pairordenatedA.intY + pairordenatedB.intY));;
 }
コード例 #11
0
 public void Add(PairOrdenated pairordenatedB)
 {
     intX += pairordenatedB.intX;
     intY += pairordenatedB.intY;
 }
コード例 #12
0
 public bool Equal(PairOrdenated pairordenatedB)
 {
     return(intX == pairordenatedB.intX && intY == pairordenatedB.intY);
 }