Ranking

DE
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 5 lat
  • Postów:9
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 :)

edytowany 1x, ostatnio: Dewytr
MasterBLB
  • Rejestracja:około 19 lat
  • Ostatnio:3 dni
  • Lokalizacja:Warszawa
  • Postów:1454
0

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

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

albo xmla:

Kopiuj
<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:

Kopiuj
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


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
edytowany 2x, ostatnio: MasterBLB
DE
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 5 lat
  • Postów:9
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?

Kopiuj
nick wynik
nick2 wynik2
nick3 wynik3

Czyli wynik i nick są w jednej linijce?

fasadin
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 3 lata
  • Postów:4882
0
BG
Jeśli masz pewność, że ani "nick" ani "wynik" nie zawierają białych znaków (spacji, tabulacji), to nie ma znaczenia czy są w jednym wierszu czy rozbite na dwa osobne.
fasadin
Chyba nie przeczytałeś problemu z poprzedniego posta. Zapytał OP w prost co będzie gdy plik tekstowy wygląda tak. Jeżeli w nickach są spację to wtedy niech sobie rozdzieli jakimś separatorem i nadal rozwiązanie moje pozostaje bez zmian
BG
Po pierwsze - w zasadzie to OP pytał o zapis do pliku a nie o odczyt ;) Po drugie - ja nie mówię, że Twoja propozycja jest zła. Mówię tylko że nie ma potrzeby robienia split-a dla tak prostego przypadku.
MasterBLB
  • Rejestracja:około 19 lat
  • Ostatnio:3 dni
  • Lokalizacja:Warszawa
  • Postów:1454
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?

Kopiuj
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:

Kopiuj
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:

Kopiuj
nick : wynik

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


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
edytowany 1x, ostatnio: MasterBLB
tajny_agent
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad rok
  • Postów:1340
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.

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

"I love C++. It's the best language in the world right now for me to write the code that i need and want to write"
~ Herb Sutter
MasterBLB
Słuszna uwaga, tak też zadziała

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.