Problem z dwoma listam

0

Cześć, mam taki mam taki mały problem. Celem dopowiedzenia projekt jest tworzony w Unity, skrypty są pisane w C#. Mam dwie listy. Jedna lista to lista Vectorów 2, natomiast druga lista to obiekt z klasy. Tak to wygląda:
Tile[] Tiles=new Tile[9];
Vector2[]ChangePostitionTiles=new Vector2[9];

I w funkcji chcę te listy do siebie przyrównać indeksami:

 ChangePostitionTiles[0] = Tiles[8].transform.position;
            ChangePostitionTiles[1] = Tiles[7].transform.position;
            ChangePostitionTiles[2] = Tiles[6].transform.position;
            ChangePostitionTiles[3] = Tiles[5].transform.position;
            ChangePostitionTiles[4] = Tiles[4].transform.position;
            ChangePostitionTiles[5] = Tiles[3].transform.position;
            ChangePostitionTiles[6] = Tiles[2].transform.position;
            ChangePostitionTiles[7] = Tiles[1].transform.position;
            ChangePostitionTiles[8] = Tiles[0].transform.position;

            Tiles[8].transform.position = ChangePostitionTiles[8];
            Tiles[7].transform.position = ChangePostitionTiles[7];
            Tiles[6].transform.position = ChangePostitionTiles[6];
            Tiles[5].transform.position = ChangePostitionTiles[5];
            Tiles[4].transform.position = ChangePostitionTiles[4];
            Tiles[3].transform.position = ChangePostitionTiles[3];
            Tiles[2].transform.position = ChangePostitionTiles[2];
            Tiles[1].transform.position = ChangePostitionTiles[1];
            Tiles[0].transform.position = ChangePostitionTiles[0];

Tylko chciałbym żeby, za każdym razem odbywało się to losowo, ktoś pomoże?

0

A co będzie jeżeli będziesz miał 100 elementów, też będziesz tak przypisywał ?
Poczytaj o pętlach i do tego jak chcesz losowo to masz, klasę Random. https://msdn.microsoft.com/pl-pl/library/2dx6wyd4(v=vs.110).aspx

1

Hej,
jeżeli się nie mylę to chyba jest funkcjonalność .Shuffle objektu Vector (robi permutację elementu objektu)... może też jest taka funkcjalność dla listy, jeżeli nie, to można napisać lub wygooglać, to raczej typowy temat... Pzdr... :)

0

No właśnie chcę to zrobić tak, aby było jak najmniej kodu. To co wrzuciłem powyżej, to tylko przykład, co chcę mniej więcej osiągnąć.

        for (int i = 0; i < Tiles.Length; i++)
        {
            ChangePostitionTiles[i] = Tiles[i].transform.position;
            Tiles[i].transform.position = ChangePostitionTiles[ran.Next(i)];
        }

Problem w tym, że jak zrobię to tak jak powyżej to nie do końca to działa jak chce.

1

To zrób mniej więcej tak:

for (int i = 0; i < Tiles.Length; i++)
        {
           ChangePostitionTiles[i] = Tiles[i].transform.position
       }

Tutaj to .Shuffle, pogooglaj...

for (int i = 0; i < Tiles.Length; i++)
        {
           Tiles[i].transform.position = ChangePostitionTiles[ran.Next(i)];
       }

Jakoś chyba tak... :)

0

Napisałem sobie metodę:

 Vector2[] Shuffle(Vector2[] vector2)
    {
        for (int i = vector2.Length; i>0; i--)
        {
            int j = ran.Next(i);
            Vector2 k = vector2[j];
            vector2[j] = vector2[i - 1];
            vector2[i - 1] = k;
        }

        return vector2;
    }

oraz mam tą wcześniejszą funkcję:

void ShuffleTiles()
    {   
        for (int i = 0; i < Tiles.Length; i++)
        {
            ChangePostitionTiles[i] = Tiles[i].transform.position;
            ChangePostitionTiles = Shuffle(ChangePostitionTiles);
            Tiles[i].transform.position = ChangePostitionTiles[i];
        }
    }

I dalej coś nie śmiga, chociaż chyba o to mniej więcej chodzi. Jakieś sugestie co zmienić, żeby działało?

1

Nie jestem pewien, bo ja w sumie to C# nie znam... :) Może tak:

void ShuffleTiles()
    {   
        for (int i = 0; i < Tiles.Length; i++)
        {
            ChangePostitionTiles[i] = Tiles[i].transform.position;
           
        }
        
        ChangePostitionTiles = Shuffle(ChangePostitionTiles);
      
        for (int i = 0; i < Tiles.Length; i++)
        {
             Tiles[i].transform.position = ChangePostitionTiles[i];
           
        }

    }

o ile dobrze wygooglałeś tę funkcję.Shuffle... :)

0

A o to Ci chodziło w poprzednim poście, nie skumałem. Teraz śmiga, dobrze sobie wygooglałem :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1