• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zapis/odczyt pliku C#, gra z rankingiem

Object Storage Arubacloud
0 głosów
276 wizyt
pytanie zadane 25 sierpnia 2020 w C# przez Comparion Obywatel (1,810 p.)
edycja 25 sierpnia 2020 przez Comparion
Witam, tworzę grę w której chciałbym zapisywać wyniki do pliku i  tym miejscu napotykam na 2 problemy, jednym z nich jest to chciałbym aby program sprawdzał czy plik jest pusty, jest nie istnieje to go tworzył, zapisywał w pierwszej linijce Name - Point - Level, tylko za pierwszym razem. Tutaj pojawia się taki problem ze chyba nie można utworzyć writera i readera na raz ponieważ wyskakuje mi wyjątek że plik jest już jest używany. Chciałbym również alby te kolumny Name, Point, Level miały równe niezmienne odległości, w przypadku jeśli ktoś miałby krótszą albo dłuższa nazwę np., kojarzy mi się coś takiego ze chyba w C albo C++ było coś takiego ze przy wyświetlaniu można było ustawiać takie przesunięcie, czy jest to też możliwe w C#? W następnym etapie chciałbym również dodać do tego projektu, aby wyniki były wyświetlane od największej liczby punktów.

2 odpowiedzi

0 głosów
odpowiedź 25 sierpnia 2020 przez Velta Maniak (52,010 p.)
wybrane 17 stycznia 2021 przez Comparion
 
Najlepsza

chciałbym aby program sprawdzał czy plik jest pusty

Po prostu sprawdź jego długość:

bool IsEmpty(this FileInfo fi)
{
    return fi.Length == 0;
}

 jest nie istnieje to go tworzył

if (!File.Exists(path))
{
    try
    {
        File.Create(path).Dispose();
    }
    catch (IOException ex)
    {
        // wypisanie komunikatu
    }
}

zapisywał w pierwszej linijce Name - Point - Level, tylko za pierwszym razem

Dlaczego tylko za pierwszym razem? Przy zmianie zapisu statystyk najłatwiej i najszybciej będzie je po prostu nadpisać. Zainteresuj się jakimś formatem wymiany danych, np. JSON. .NET Core ma już wbudowaną obsługę do tego formatu.

Chciałbym również alby te kolumny Name, Point, Level miały równe niezmienne odległości, w przypadku jeśli ktoś miałby krótszą albo dłuższa nazwę np.,

Tutaj chyba dopiero zaczynam rozumieć, że chodzi Ci o wyświetlanie tabeli tekstowo na podstawie niezmienionych danych z pliku (aplikacja konsolowa?).

Wspominając powyżej format wymiany danych, zarządzając statystykami nie powinieneś się tym martwić, tylko stworzyć model przeznaczony do (de)serializacji danych formatu JSON. Możesz dzięki temu przeciążyć metodę ToString() dla Twojej klasy:

public override string ToString()
{
    return $"{Name} - {Point} - {Level}";
}

Ale co odpowiedź na Stackoverflow w tym temacie, to inne rozwiązanie i trochę kombinowania. Możesz zainstalować pakiet np. ConsoleTables. Kod quickstart fajnie wygląda.

W następnym etapie chciałbym również dodać do tego projektu, aby wyniki były wyświetlane od największej liczby punktów.

LINQ powinien tutaj wkroczyć do akcji. :)

enum SortingOrder
{
    Ascending,
    Descending
}

public void SortStats(this List<TwojaKlasa> stats, SortingOrder st = SortingType.Descending)
{
    if (st == SortingOrder.Ascending)
    {
        return stats.OrderBy(obj => obj.Point).ToList();
    }
    else
    {
        return stats.OrderByDescending(obj => obj.Point).ToList();
    }
}

 

komentarz 25 sierpnia 2020 przez Comparion Obywatel (1,810 p.)
Super! Dzięki za wyczerpującą odpowiedź :D
0 głosów
odpowiedź 25 sierpnia 2020 przez Comparion Obywatel (1,810 p.)
W sumie to zapisywanie w pliku, pól Name(..) jest całkowicie nie potrzebne, ale jestem ciekawy czy takie coś da się zrobić. Rozwiąże to w taki sposób ze przy wyświetlaniu w rankingu dam takie pola nad zawartością , bez zapisania do pliku  :P

Podobne pytania

0 głosów
2 odpowiedzi 331 wizyt
pytanie zadane 25 lipca 2019 w C i C++ przez Inn Gaduła (4,300 p.)
0 głosów
2 odpowiedzi 1,314 wizyt
pytanie zadane 1 stycznia 2019 w C i C++ przez nooblike Nowicjusz (120 p.)
0 głosów
1 odpowiedź 507 wizyt
pytanie zadane 7 grudnia 2018 w C i C++ przez matiibal Użytkownik (620 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...