Ranking

0

Witam, czy jest ktoś w posiadaniu kodu lub wiedzy jak taki kod stworzyć który zapisywał by w pliku nick oraz wynik gracza, a po wybraniu w menu, wyniki pokazywały by się w formie rankingu tj. najlepszy wynik na górze, najgorszy na dole itd.?
Ogólnie z samymi wynikami jakiś to wielki problem nie jest, ale dopasowanie do tego nazw powoduje ból głowy u całej grupy :)
Gierka konsolowa na projekt :)

0

Paaanie, możliwości ci od groma...możesz użyć formatu .json:

[
  {
      "nick" : "ksywa gracza1",
      "result" : wynik1
  },
  {
      "nick" : "ksywa gracza2",
      "result" : wynik2
  }
]

albo xmla:

<playerData>
   <nick>ksywa gracza 1</nick>
   <result>wynik1</result>
</playerData>
<playerData>
   <nick>ksywa gracza 2</nick>
   <result>wynik2</result>
</playerData>

albo zwykły plik tekstowy gdzie w każdej następnej linii będą wpisy:

nick gracza 1
wynik gracza 1
nick gracza 2
wynik gracza 2

Wczytujecie sobie te dane do wektora struktur {nick, result}, po czym robicie sortowanie po polu result, i voila, macie dane gotowe do wyświetlenia

0

Dziekuje za odpowiedz, mimo to chciałbym dopytać w jednej kwestii. Jak widać w pliku tekstowym dałeś wynik poniżej nazwy gracza. Co w wypadku gdy plik tekstowy wygląda tak?

nick wynik
nick2 wynik2
nick3 wynik3

Czyli wynik i nick są w jednej linijce?

0
Dewytr napisał(a):

Dziekuje za odpowiedz, mimo to chciałbym dopytać w jednej kwestii. Jak widać w pliku tekstowym dałeś wynik poniżej nazwy gracza. Co w wypadku gdy plik tekstowy wygląda tak?

nick wynik
nick2 wynik2
nick3 wynik3

Czyli wynik i nick są w jednej linijce?

Tak też może być, ale w takim wypadku albo trzeba by dać obostrzenie, że w ksywie gracza nie może być spacji, bo inaczej położysz się na wpisie:

Pirat Barnaba 1000

albo dać split po spacji, i ostatni element z listy traktować jako wynik, natomiast z wcześniejszych części odbudować ksywę poprzez dostawianie wyciętych spacji, albo użyć separatora, np:

nick : wynik

wtedy oczywiście : nie może wystąpić ani w ksywie, ani w wyniku.

0
MasterBLB napisał(a):

albo dać split po spacji, i ostatni element z listy traktować jako wynik, natomiast z wcześniejszych części odbudować ksywę poprzez dostawianie wyciętych spacji,

Albo wczytać całą linię i wyszukać ostatnie wystąpienie spacji. Wtedy wszystko przed jest ksywą a wszystko po jest osiągniętym wynikiem.

auto pos = buffer.rfind(' ');
string nick = buffer.substr(0, pos++);
int result = stoi(buffer.substr(pos, buffer.length() - pos));

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