Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- class walidator
- {
- public:
- virtual bool waliduj() = 0;
- };
- class telefonkom : public walidator
- {
- private:
- std::string numer;
- public:
- bool waliduj()
- {
- const char* wzorcowy = "\\+?\\d{1,3}(-| )?\\d{3}(-| )?\\d{3}(-| )?\\d{3}";
- std::regex wzorzec(wzorcowy);
- return regex_match(numer, wzorzec);
- }
- telefonkom(std::string numer)
- {
- this->numer = numer;
- }
- };
- class kwota : public walidator
- {
- private:
- double ile;
- public:
- bool waliduj()
- {
- if (ile > 0)
- return 1;
- else return 0;
- }
- kwota(int ile)
- {
- this->ile = ile;
- }
- double &operator-(double &liczba)
- {
- ile = ile - liczba;
- return ile;
- }
- double &operator+(double &liczba)
- {
- ile = ile + liczba;
- return ile;
- }
- friend std::ostream & operator<<(std::ostream &wyjscie, const kwota &ile)
- {
- return wyjscie << ile;
- }
- };
- class email : public walidator
- {
- private:
- std::string nazwa;
- public:
- bool waliduj()
- {
- const char* wzorcowy = "(\\w+)(\\.|_)?(\\w+)@(\\w+)(\\.(\\w+))+";
- std::regex wzorzec(wzorcowy);
- return regex_match(nazwa, wzorzec);
- }
- email(std::string numer)
- {
- this->nazwa = numer;
- }
- email();
- friend std::ostream & operator<<(std::ostream &wyjscie, const std::string nazwa)
- {
- return wyjscie << nazwa;
- }
- std::string get_email()
- {
- return nazwa;
- }
- };
- class telefonstac : public walidator
- {
- private:
- std::string numer;
- public:
- bool waliduj()
- {
- const char* wzorcowy = "\\d{2,3}(-| )?\\d{3}(-| )?\\d{3}(-| )?\\d{3}";
- std::regex wzorzec(wzorcowy);
- return regex_match(numer, wzorzec);
- }
- telefonstac(std::string numer)
- {
- this->numer = numer;
- }
- };
- class liczba_rzymska : public walidator
- {
- private:
- std::string liczba;
- public:
- bool waliduj()
- {
- const char* wzorcowa = "M{0,2}(C[MD]|D?C{0,3}|MCD|MD?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})";
- std::regex wzorzec(wzorcowa);
- return regex_match(liczba, wzorzec);
- }
- liczba_rzymska (std::string numer)
- {
- this->liczba = numer;
- }
- };
- class nr_faxu : public walidator
- {
- private:
- std::string numer;
- public:
- bool waliduj()
- {
- const char* fax = "\\+?\\(?\\d{1,3}\\)?(-| )\\(?\\d+\\)?(-| )(\\d{2,}(-| )\\d{2,}|\\d+)"; //najpierw kod kraju, potem kod strefy, na koniec numer (w dwóch formatach dozwolonych)
- std::regex wzorzec(fax);
- return regex_match(numer, wzorzec);
- }
- nr_faxu(std::string numer)
- {
- this->numer = numer;
- }
- };
- #pragma once
- class forma_platnosci
- {
- public:
- double kwota;
- double prowizja;
- std::string waluta;
- virtual void wykonaj_platnosc(double platnosc) = 0;
- virtual void nalicz_oplate() = 0;
- };
- class platnosc_przy_odborze : public forma_platnosci
- {
- public:
- virtual void wykonaj_platnosc(double platnosc)
- {
- std::cout << "Platnosc zostanie wykonana przy odbiorze";
- }
- virtual void nalicz_oplate()
- {
- kwota = kwota-prowizja;
- }
- };
- class przelew : public forma_platnosci
- {
- public:
- virtual void wykonaj_platnosc(double platnosc)
- {
- if (kwota - platnosc > 0)
- {
- kwota =- platnosc;
- std::cout << "Wykonano przelew o wysokosci " << platnosc << " " << waluta;
- std::cout << "Pozostalo" << kwota << waluta;
- }
- }
- virtual void nalicz_oplate()
- {
- kwota =- prowizja;
- }
- };
- class systemy_platnosci_elektronicznej : public forma_platnosci
- {
- email email;
- public:
- virtual void wykonaj_platnosc(double platnosc)
- {
- if (email.waliduj() == 1)
- std::cout << "Wykonano platnosc z adresu" << email.get_email() << std::endl << "Pozostalo" << waluta;
- }
- virtual void nalicz_oplate()
- {
- kwota =- prowizja;
- }
- systemy_platnosci_elektronicznej(std::string email)
- {
- this->email = email;
- }
- };
- #pragma once
- #include <SFML/Graphics.hpp>
- class efekt_specjalny
- {
- public:
- virtual void wyswietl(sf::RenderWindow& window) = 0;
- };
- class deszcz : public efekt_specjalny
- {
- sf::Texture deszcz_tekstura;
- sf::Sprite deszcz_sprite;
- public:
- virtual void wyswietl(sf::RenderWindow& window)
- {
- window.draw(deszcz_sprite);
- }
- deszcz()
- {
- deszcz_tekstura.loadFromFile("deszcz.png");
- deszcz_sprite.setTexture(deszcz_tekstura);
- }
- };
- class wybuch : public efekt_specjalny
- {
- sf::Texture eksplozja;
- sf::Sprite eksplozja_sprite;
- public:
- virtual void wyswietl(sf::RenderWindow& window)
- {
- window.draw(eksplozja_sprite);
- }
- wybuch()
- {
- eksplozja.loadFromFile("eksplozja.png");
- eksplozja_sprite.setTexture(eksplozja);
- }
- };
- class blysk : public efekt_specjalny
- {
- sf::Texture blysk_tekstura;
- sf::Sprite blysk_sprite;
- public:
- virtual void wyswietl(sf::RenderWindow& window)
- {
- window.draw(blysk_sprite);
- }
- blysk()
- {
- blysk_tekstura.loadFromFile("blysk.png");
- blysk_sprite.setTexture(blysk_tekstura);
- }
- };
- class ogien : public efekt_specjalny
- {
- sf::Texture ogien_tekstura;
- sf::Sprite ogien_sprite;
- public:
- virtual void wyswietl(sf::RenderWindow& window)
- {
- window.draw(ogien_sprite);
- }
- ogien()
- {
- ogien_tekstura.loadFromFile("ogien.png");
- ogien_sprite.setTexture(ogien_tekstura);
- }
- };
- class dym : public efekt_specjalny
- {
- sf::Texture dym_tekstura;
- sf::Sprite dym_sprite;
- public:
- virtual void wyswietl(sf::RenderWindow& window)
- {
- window.draw(dym_sprite);
- }
- dym()
- {
- dym_tekstura.loadFromFile("dym.png");
- dym_sprite.setTexture(dym_tekstura);
- }
- };
- #include <SFML/Graphics.hpp>
- #include <iostream>
- #include <string>
- #include <regex>
- #include "Walidator.h"
- #include "Formy_platnosci.h"
- #include "Efekty_specjalne.h"
- using namespace std;
- int main()
- {
- char input[100];
- double wartosc;
- cin.getline(input, sizeof(input));
- walidator *walidacja = nullptr;
- telefonkom komorka(input);
- telefonstac telefon(input);
- kwota kwota(wartosc);
- liczba_rzymska rzymska(input);
- email email(input);
- nr_faxu fax(input);
- int ktory_walidowac = 0;
- cin >> ktory_walidowac;
- switch (ktory_walidowac)
- {
- case 1:
- walidacja = &komorka;
- walidacja->waliduj();
- break;
- case 2:
- walidacja = &telefon;
- walidacja->waliduj();
- break;
- case 3:
- walidacja = &kwota;
- walidacja->waliduj();
- break;
- case 4:
- walidacja = &rzymska;
- walidacja->waliduj();
- break;
- case 5:
- walidacja = &email;
- walidacja->waliduj();
- break;
- case 6:
- walidacja = &fax;
- walidacja->waliduj();
- break;
- }
- sf::RenderWindow window(sf::VideoMode(800, 600), "SFML works!");
- efekt_specjalny *efekt;
- wybuch wybuch;
- ogien ogien;
- dym dym;
- blysk blysk;
- deszcz deszcz;
- int ktory_efekt = 1;
- cin >> ktory_efekt;
- while (window.isOpen())
- {
- switch (ktory_efekt)
- {
- case 1:
- efekt = &wybuch;
- efekt->wyswietl(window);
- break;
- case 2:
- efekt = &ogien;
- efekt->wyswietl(window);
- break;
- case 3:
- efekt = &deszcz;
- efekt->wyswietl(window);
- break;
- case 4:
- efekt = &blysk;
- efekt->wyswietl(window);
- break;
- case 5:
- efekt = &dym;
- efekt->wyswietl(window);
- break;
- }
- sf::Event event;
- while (window.pollEvent(event))
- {
- if (event.type == sf::Event::Closed)
- window.close();
- }
- window.clear();
- window.display();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement