Jak zrobic ranking isolated storage windows phone 7

0

Jak w isolated storage zrobić tablicę wyników? Obecnie zapisuję jeden wynik- najlepszy. Chodzi mi o tablicę 5 najlepszych wyników.

 
 if (wynik > najlepszy)
                {
                    IsolatedStorageFile savegameStorage = IsolatedStorageFile.GetUserStoreForApplication();
                    IsolatedStorageFileStream fs = null;
                    using (fs = savegameStorage.CreateFile("zapis"))
                    {
                        if (fs != null)
                        {
                            // just overwrite the existing info for this example.
                            byte[] bytes = System.BitConverter.GetBytes(wynik);
                            fs.Write(bytes, 0, bytes.Length);
                           
                        }
                    }
1

Najprościej - użyj serializacji, aby zapisać tablicę.

Zapis:

int[] wyniki = new int[5] { 20, 11, 5, 3, 0 };

IsolatedStorageFile savegameStorage = IsolatedStorageFile.GetUserStoreForApplication();
using (var isfs = savegameStorage.CreateFile("zapis"))
{
    var serializer = new XmlSerializer(typeof(int[]));
    serializer.Serialize(isfs, wyniki);
}

Odczyt:

int[] wyniki2;

IsolatedStorageFile savegameStorage = IsolatedStorageFile.GetUserStoreForApplication();
using (var isfs = savegameStorage.OpenFile("zapis", System.IO.FileMode.Open))
{
    var serializer = new XmlSerializer(typeof(int[]));
    wyniki2 = (int[])serializer.Deserialize(isfs);
}

Nie wiem czy ten kod zadziała w WP7, ale nie mam pod ręką takiego archaizmu, żeby testować.

Z kolei kiedy przychodzi nowy najlepszy wyniki, musisz go włożyć do tablicy w odpowiednim miejscu. Albo sprawdzić, czy jest lepszy od najgorszego wyniku, zastąpić nim najgorszy, i przesortować:

int[] wyniki = new int[5] { 20, 11, 5, 3, 0 };

int najlepszy = 15;
if (najlepszy > wyniki[4])
{
    wyniki[4] = najlepszy;
    Array.Sort(wyniki, new Comparison<int>(
                (i1, i2) => i2.CompareTo(i1)
        ));
}

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