/* Program: "MINI-LEMINGI" Modul: Wejscie/Wyjscie Autor: Damian Wojtowicz Weryfikator: Michal Zmijewski Tester: Anna Doros Krotki opis: Plik zawiera deklaracje klasy: WejscieWyjscie oraz definicje typu wyliczeniowego: Wynik. Poza tym definicje pomocniczych typow: WczytanieNazwy, Formula. */ #ifndef __WEJSCIEWYJSCIE_H #define __WEJSCIEWYJSCIE_H #include <fstream.h> #include <istream.h> #include <ctype.h> #include <string.h> #include "parametry.h" #include "stale_ElementySwiata.h" #include "stale_WejscieWyjscie.h" #include "typy.h" #define DL_NAZWA 256 /* dlugosc nazwy pliku */ #define DL_FORMULY 32 /* dlugosc formuly */ /* stale logiczne */ #define TAK 1 #define NIE 0 /*============================================================================*/ /* TYPY WYLICZENIOWE */ /*============================================================================*/ enum WczytanieNazwy /* typ pomocniczy (wewnetrzny) */ { _poprawne = 0, // nazwa poprawnie wczytana _brak_nazwy = 1, // juz nie ma zadnych nie wczytanych // nazw w pliku _dluga_nazwa = 2, // zbyt dluga nazwa wczytana z pliku }; //WczytanieNazwy /*----------------------------------------------------------------------------*/ enum Formula /* typ pomocniczy (wewnetrzny) */ { // rozne typy formul _brak = 0, _komentarz = 1, _rozmiar = 2, _czas = 3, _leming = 4, _przeprowadz = 5, _bloker = 6, _kopacz_poziomy = 7, _kopacz_pionowy = 8, _kopacz_gorny = 9, _kopacz_dolny = 10, _schodkarz_poziomy = 11, _schodkarz_gorny = 12, _schodkarz_dolny = 13, _bomba = 14, _pijus = 15, _wejscie = 16, _wyjscie = 17, _wiersz = 18, _tlo = 19, _maska = 20, _rysunek = 21, _przesuniecie = 22 }; //Formula /*----------------------------------------------------------------------------*/ enum Wynik /* na zewnatrz */ { _poprawny = 0, // wynik poprawny _brak_etapow = 1, // nie ma juz zadnych nowych etapow _blad_otwarcia = 2, // blad przy otwieraniu pliku z parametrami // lub niepoprawna nazwa pliku _blad_w_pliku = 4, // blad w pliku z parametrami _brak_pamieci = 5 // brak wystarczajacej ilosci pamieci }; //Wynik /*============================================================================*/ /* KLASA: WejscieWyjscie */ /*============================================================================*/ class WejscieWyjscie /* na zewnatrz */ /* deklaracja klasy WejscieWyjscie */ { private: /* prywatne atrybuty */ ifstream plik_z_planszami; // plik zawierajacy nazy kolejnych plikow // z parametrami etapow int otwarty; // czy plik zostal otwarty /* prywatne funkcje skladowe klasy - opis przy definicji */ char podajKod(typ_teren teren); WczytanieNazwy wczytajNazwePlikuZParametrami(char *nazwa); void pominCiagZnakow(const char znak, ifstream &plik); Formula wczytajFormule(ifstream &plik); void pominKomentarz(ifstream &plik); Para wczytajWspolrzedne(ifstream &plik); int wczytajWartosc(ifstream &plik); int wczytajNumerWiersza(ifstream &plik); void wczytajDefinicjeWiersza(int nr,typ_teren **tab, const Para rozm, ifstream &plik); void wczytajNazwePliku(ifstream &plik, char *nazwa); void inicjalizujParametry(Param_etap ¶metry); /* prywatny wyjatek */ class BladFormuly{}; // bledna formula public: /* konstruktory */ WejscieWyjscie(); WejscieWyjscie(const char *nazwa_pliku); /* destruktor */ ~WejscieWyjscie(); /* wyjatek */ class BladOtwarcia{}; //blad podczas otwierania pliku /* publiczne funkcje skladowe klasy */ void otworzPlik(const char *nazwa_pliku); void zamknijPlik(); Wynik wczytajParametryKolejnegoEtapuZPliku(Param_etap ¶metry, const char* nazwa); Wynik podajParametryKolejnegoEtapu(Param_etap ¶metry); int zapiszParametryEtapu(Param_etap param, const char* nazwa); };//WejscieWyjscie #endif /* __WEJSCIEWYJSCIE_H */