Do spisu modułów

2.3. Moduł WejścieWyjście

 

Osoby pracujące nad modułem

  Autor: Damian Wójtowicz  
  Weryfikator: Michał Wiktor Żmijewski  
  Tester: Anna Doroś  

Poczatek


Opis stałych i typów nieobiektowych

  • definicje stringow odpowiadajacych formulom:

FORMULA_WIERSZ "wiersz"
FORMULA_ROZMIAR "rozmiar"
FORMULA_CZAS "czas"
FORMULA_LEMING "leming"
FORMULA_PRZEPROWADZ "przeprowadz"
FORMULA_BLOKER "bloker"
FORMULA_KOPACZ_POZIOMY "kopacz_poziomy"
FORMULA_KOPACZ_PIONOWY "kopacz_pionowy"
FORMULA_KOPACZ_GORNY "kopacz_gorny"
FORMULA_KOPACZ_DOLNY "kopacz_dolny"
FORMULA_SCHODKARZ_POZIOMY "schodkarz_poziomy"
FORMULA_SCHODKARZ_GORNY "schodkarz_gorny"
FORMULA_SCHODKARZ_DOLNY "schodkarz_dolny"
FORMULA_BOMBA "bomba"
FORMULA_WEJSCIE "wejscie"
FORMULA_WYJSCIE "wyjscie"
FORMULA_TLO "tlo"
FORMULA_MASKA "maska"
FORMULA_RYSUNEK "rysunek"
FORMULA_PRZESUNIECIE "przesuniecie"

  • definicje zankow w pliku odpowiadajce roznym typom terenu:

POWIETRZE_PLIK 'O'#define ZIEMIA_PLIK 'Z'
SKALA_PLIK 'S'
WODA_PLIK 'W'
KWAS_PLIK 'T'
CEGLA_L_PLIK 'L'
CEGLA_P_PLIK 'P'

  • DL_NAZWA 256 - długość nazwy pliku

  • DL_FORMULY 32 - długość formuły

  • typy pomocnicze (wewnętrzny):

enum WczytanieNazwy {
_poprawne, // nazwa poprawnie wczytana
_brak_nazwy, // już nie ma żadnych nie wczytanych nazw w pliku
_dluga_nazwa, // zbyt dluga nazwa wczytana z pliku
};
enum Formula {// rozne typy formul
_brak,_komentarz,_rozmiar,_czas,_leming,_przeprowadz,_bloker,_kopacz_poziomy ,_kopacz_pionowy ,_kopacz_gorny,_kopacz_dolny,_schodkarz_poziomy,_schodkarz_gorny,_schodkarz_dolny,
_bomba,_wejscie,_wyjscie,_wiersz,_tlo,_maska,_rysunek,_przesuniecie
};

  • typ do zwracania wyniku prz funkcji wczytującej parametru etapu:

    enum Wynik {
    _poprawny, // wynik poprawny
    _brak_etapow, // nie ma juz zadnych nowych etapow
    _blad_otwarcia, // blad przy otwieraniu pliku z parametrami lub niepoprawna nazwa pliku
    _blad_w_pliku, // blad w pliku z parametrami
    _brak_pamieci // brak wystarczajacej ilosci pamieci
    };

Poczatek


Klasa WejscieWyjscie

 
#include <WejscieWyjscie.h>
 
Funkcje publiczne
 
Wyjątki publiczne
  • class BladOtwarcia - błąd podczas otwierania pliku
Atrubuty prywatne
ifstream plik_z_planszami - plik zawierający nazwy kolejnych plikow
int otwarty - czy plik został otwarty

Funkcje prywatne

Wyjątki publiczne

  • class BladFormuly - błędna formuła

WejscieWyjscie()

Konstruktor bezargumentowy.

WejscieWyjscie(const char *nazwa_pliku)

Konstruktor otwiera plik "nazwa_pliku" z atrybutem tylko do odczytu.

~WejscieWyjscie()

Destruktor zamyka otwarty plik.

void otworzPlik(const char *nazwa_pliku)

Funkcja otwiera plik "nazwa_pliku" tylko do odczytu.

void zamknijPlik()

Funkcja zamyka otwarty plik.

Wynik wczytajParametryKolejnegoEtapuZPliku(Param_etap &parametry, const char* nazwa)

Funkcja wczytuje parametry kolejnego etapu z pliku o nazwie: 'nazwa' do struktury: 'parametry'. Funkcja zaklada częściową poprawność pliku z parametrami.

Wynik podajParametryKolejnegoEtapu(Param_etap &parametry)

Funkcja wczytuje nazwę pliku z pliku: 'plik_z_planszami', a następnie wczytuje parametry kolejnego etapu z pliku o wczytanej nazwie.

int zapiszParametryEtapu(Param_etap param, const char* nazwa)

Funkcja tworzy nowy plik o nazwie: 'nazwa', a następnie zapisuje do niego parametry planszy pobierając informacje ze struktury: 'param'.

char podajKod(typ_teren teren) [prywatna]

Dla każdego typu terenu podaje znak (kod) pod jaki występuje w pliku.

WczytanieNazwy wczytajNazwePlikuZParametrami(char *nazwa) [prywatna]

Funkcja wczytuje nazwę pliku z parametrami z pliku: "plik_z_planszami".

void pominCiagZnakow(const char znak, ifstream &plik) [prywatna]

Funkcja pomija ciąg znaków: 'znak' w pliku o uchwycie "plik".

Formula wczytajFormule(ifstream &plik) [prywatna]

Funkcja wczytuje jedną (kolejną) formułę z pliku z parametrami.

void pominKomentarz(ifstream &plik) [prywatna]

Funkcja pomija komentarz (do końca lini).

Para wczytajWspolrzedne(ifstream &plik) [prywatna]

Funkcja wczytuje współrzedne (MxN - to jest (M,N)) z pliku.

int wczytajWartosc(ifstream &plik) [prywatna]

Funkcja wczytuje wartość liczbową z pliku.

int wczytajNumerWiersza(ifstream &plik) [prywatna]

Funkcja wczytuje z pliku numer definiowanego wiersza. (@N)

void wczytajDefinicjeWiersza(int nr,typ_teren **tab, const Para rozm, ifstream &plik) [prywatna]

Funkcja wczytuje definicje wiersza nr: 'nr' do tablicy: 'tab' o rozmiarze: 'rozm' z pliku: 'plik'.

void wczytajNazwePliku(ifstream &plik, char *nazwa) [prywatna]

Wczytuje nazwę (ciag znakow) z pliku: 'plik' do bufora: 'nazwa'.

void inicjalizujParametry(Param_etap &parametry) [prywatna]

Funkcja inicjalizuje strukturę parametry wartościami zerowymi odpowiednich typów.

Poczatek