Created
April 16, 2018 22:46
-
-
Save Devhobby/7f35c9fd04033a5cc7bcad0d35b4e637 to your computer and use it in GitHub Desktop.
Tabela wyników
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// ScoreBoard.h ************************************************************ | |
#pragma once | |
/* | |
* Tworzenie tabeli wygranych i zapis do pliku | |
*/ | |
class ScoreBoard | |
{ | |
int score[10]{}; //Tabela najwyzszych 10 wynikow | |
bool filestatus; //status odczytu pliku | |
public: | |
ScoreBoard(); | |
~ScoreBoard(); | |
//pokazywanie i obsluga wyswietlania i dodawania wyniku do listy. | |
void showScoreBoard(int); | |
}; | |
//ScoreBoard.cpp ******************************************************************** | |
#include "ScoreBoard.h" | |
#include <fstream> | |
#include <string> | |
#include <iostream> | |
ScoreBoard::ScoreBoard() : filestatus(true) | |
{ | |
std::ifstream scoreFile("score.dat"); //otwieranie pliku z wynikami do odczytu | |
if (!scoreFile.is_open()) //sprawdzanie czy plik jest poprawnie otwarty | |
{ | |
filestatus = false; | |
for (auto& i : score) //zapis wyliczający kolejne komórki trablicy (uniemożliwia wyjście poza zakres) | |
i = 0; //ponieważ brak danych z pliku tworzymy tablicę i zapisujemy zerami | |
} | |
else | |
{ | |
for (auto& i : score) | |
scoreFile >> i; //odczytyjemy wyniki z pliku i zapisujemy do tablicy wyników | |
scoreFile.close(); //zamykanie dostępu do pliku | |
//Sortowanie tabeli wynikow (bubble sorting - w wypadku tablicy 10 elementowej optymalne rozwiązanie) | |
for (int i = 0; i < 10; i++) | |
{ | |
for (int j = 9; j >= 1; j--) | |
{ | |
if (score[j] > score[j - 1]) | |
{ | |
int swap = score[j - 1]; | |
score[j - 1] = score[j]; | |
score[j] = swap; | |
} | |
} | |
} | |
} | |
} | |
ScoreBoard::~ScoreBoard() | |
{ | |
std::ofstream scoreFile("score.dat"); //otwieranie(lub tworzenie) pliku z wynikami do zapisu | |
if (!scoreFile.is_open()) //sprawdzenie poprawności otwarcia pliku | |
{ | |
std::cout << " BLAD ZAPISU PLIKU WYNIKOW !!" << std::endl; | |
} | |
else | |
{ | |
for (int i : score) //zapis tabeli wyników do pliku | |
scoreFile << i << std::endl; | |
} | |
scoreFile.close(); //zamykanie dostępu do pliku | |
} | |
void ScoreBoard::showScoreBoard(const int current) //interfejs i dodawanie wyników do tablicy | |
{ | |
if (filestatus) | |
{ | |
int position = 1; | |
for (int i = 0; i < 10; i++) | |
{ | |
std::cout << "Miejsce " << i + 1 << " - " << score[i] << " punkty" << std::endl; | |
if (score[i] > current) position++; | |
} | |
std::cout << "\nTwoj wynik " << current << " zapewnia ci " << position << " miejsce" << std::endl; | |
if (position <= 10) score[9] = current; //zapisujemy obecny ynik na ostatnim miejscu, czyli na miejscu wyniku, który "wypada z listy". Sortowanie nastąpi przy następnym odczycie. | |
} | |
else | |
{ | |
std::cout << "wyglada na to, ze grasz pierwszy raz, lub plik z wynikami jest uszkodzony" << std::endl; | |
std::cout << "Twoj wynik " << current << " zapewnia ci automatycznie pierwsze miejsce" << std::endl; | |
score[0] = current; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment