Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SFML/Graphics.hpp>
- #include <vector>
- #include <iostream>
- #include <Windows.h>
- #include <string>
- #include <algorithm>
- #include <list>
- bool czy_koniec_gry = false;
- int tajmer1 = 0;
- int mocbomby_gracza1 = 1;
- int mocbomby_gracza2 = 1;
- bool czy_bomba_1 = false;
- bool czy_wybuch_1 = false;
- int liczbabomb_gracz1 = 1;
- int liczbabomb_gracza2 = 1;
- std::vector<sf::Sprite> czescimuru;
- std::list<sf::Sprite> skrzynki;
- std::vector<sf::Sprite> bomby;
- sf::Sprite bomba;
- sf::Sprite gracz2;
- sf::Sprite gracz1;
- sf::Sprite PrzeszkodaMur;
- sf::Sprite Tlo;
- sf::Sprite PrzeszkodaSkrzynka;
- sf::Texture przeszkoda1tekstura;
- sf::Texture tlotekstura;
- sf::Texture gracztekstura;
- sf::Texture teksturaskrzynki;
- sf::Texture teksturabomby;
- bool kolizja(sf::Sprite &przeszkoda, sf::Sprite &gracz)
- {
- sf::FloatRect obiekt1(przeszkoda.getGlobalBounds());
- sf::FloatRect obiekt2(gracz.getGlobalBounds());
- if (obiekt1.intersects(obiekt2))
- {
- return true;
- }
- else return false;
- }
- bool losowanie()
- {
- std::vector<int>vectorliczb = { 2,4,8,3 };
- int a = rand() % 4;
- if (vectorliczb[a] % 2 == 0)return true;
- else return false;
- }
- void timer()
- {
- if (czy_bomba_1 == true)
- {
- czy_wybuch_1 = false;
- tajmer1++;
- if (tajmer1 == 180)
- {
- tajmer1 = 0;
- czy_bomba_1 = false;
- czy_wybuch_1 = true;
- }
- }
- }
- void ustaw_tex()
- {
- przeszkoda1tekstura.loadFromFile("kamien.png");
- tlotekstura.loadFromFile("mapka.png");
- gracztekstura.loadFromFile("pacman.png");
- teksturaskrzynki.loadFromFile("teksturazolta.jpg");
- teksturabomby.loadFromFile("bombav1.png");//bombav1.png lub bombav2.bmp
- Tlo.setTexture(tlotekstura);
- gracz1.setTexture(gracztekstura);
- PrzeszkodaSkrzynka.setTexture(teksturaskrzynki);
- bomba.setTexture(teksturabomby);
- gracz1.setScale(0.05f, 0.05f);
- gracz2.setTexture(gracztekstura);
- gracz2.setScale(0.05f, 0.05f);
- //PrzeszkodaMur.setScale(1.0f, 1.0f);
- //PrzeszkodaSkrzynka.setScale(0.25f, 0.25f);
- bomba.setScale(0.15f, 0.15f);
- int a = 50, b = 50;
- //PrzeszkodaSkrzynka.setOrigin(a / 2, b / 2);
- // PrzeszkodaMur.setOrigin(a / 2, b / 2);
- PrzeszkodaSkrzynka.setTextureRect(sf::IntRect(10, 10, a, b));
- PrzeszkodaMur.setTextureRect(sf::IntRect(10, 10, a, b));
- gracz1.setPosition(60, 50);
- gracz2.setPosition(675,565);
- Tlo.setTextureRect(sf::IntRect(0, 0, 765, 653));
- }
- void wybuch_bomby()
- {
- if (czy_wybuch_1)
- {
- bomby[0].setScale(0.3f,0.3f);
- for (int i =0; i <bomby.size(); i++)
- {
- if (kolizja(gracz1, bomby[i])||kolizja(gracz2, bomby[i]))
- {
- std::cout << "Koniec Gry!";
- czy_koniec_gry = true;
- }
- for (auto j = skrzynki.begin(); j != skrzynki.end(); )
- {
- if (kolizja((*j), bomby[i]))
- {
- j=skrzynki.erase(j);
- }
- else
- {
- j++;
- }
- }
- }
- bomby.clear();
- czy_wybuch_1 = false;
- liczbabomb_gracz1++;
- }
- }
- void dodaj_sciany()
- {
- for (int i = 0; i < 3; i++)
- {
- PrzeszkodaSkrzynka.setPosition(410 +i*102.5, 45 );
- skrzynki.push_back(PrzeszkodaSkrzynka);
- }
- for (int i = 0; i < 3; i++)
- {
- PrzeszkodaSkrzynka.setPosition(102.5 + i*102.5, 557.5);
- skrzynki.push_back(PrzeszkodaSkrzynka);
- }
- for (int i = 0; i < 5; i++)
- {
- PrzeszkodaSkrzynka.setPosition(52.5 , (97.5 + i*102.5));
- skrzynki.push_back(PrzeszkodaSkrzynka);
- }
- for (int i = 0; i < 6; i++)
- {
- for (int j = 0; j < 5; j++)
- {
- PrzeszkodaSkrzynka.setPosition((152.5 + i*102.5), (97.5 + j*102.5));
- skrzynki.push_back(PrzeszkodaSkrzynka);
- PrzeszkodaMur.setPosition((102.5+i*102.5),(97.5+j*102.5));
- czescimuru.push_back(PrzeszkodaMur);
- }
- }
- }
- void Ruch()
- {
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::D))
- {
- if (gracz1.getPosition().x < 675)
- {
- gracz1.move(5, 0);
- }
- for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
- {
- if (kolizja(*itr, gracz1) == true)gracz1.move(-5, 0);
- }
- for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
- {
- if (kolizja(*itr, gracz1) == true)gracz1.move(-5, 0);
- }
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::A))
- {
- if (gracz1.getPosition().x >60)
- {
- gracz1.move(-5, 0);
- }
- for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
- {
- if (kolizja(*itr, gracz1) == true)gracz1.move(5, 0);
- }
- for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
- {
- if (kolizja(*itr, gracz1) == true)gracz1.move(5, 0);
- }
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::W))
- {
- if (gracz1.getPosition().y >55)
- {
- gracz1.move(0, -5);
- }
- for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
- {
- if (kolizja(*itr, gracz1) == true)gracz1.move(0, 5);
- }
- for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
- {
- if (kolizja(*itr, gracz1) == true)gracz1.move(0, 5);
- }
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::S))
- {
- if (gracz1.getPosition().y <570)
- {
- gracz1.move(0, 5);
- }
- for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
- {
- if (kolizja(*itr, gracz1) == true)gracz1.move(0, -5);
- }
- for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
- {
- if (kolizja(*itr, gracz1) == true)gracz1.move(0, -5);
- }
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
- {
- if (gracz2.getPosition().x < 675)
- {
- gracz2.move(5, 0);
- }
- for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
- {
- if (kolizja(*itr, gracz2) == true)gracz2.move(-5, 0);
- }
- for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
- {
- if (kolizja(*itr, gracz2) == true)gracz2.move(-5, 0);
- }
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
- {
- if (gracz2.getPosition().x >60)
- {
- gracz2.move(-5, 0);
- }
- for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
- {
- if (kolizja(*itr, gracz2) == true)gracz2.move(5, 0);
- }
- for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
- {
- if (kolizja(*itr, gracz2) == true)gracz2.move(5, 0);
- }
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
- {
- if (gracz2.getPosition().y >55)
- {
- gracz2.move(0, -5);
- }
- for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
- {
- if (kolizja(*itr, gracz2) == true)gracz2.move(0, 5);
- }
- for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
- {
- if (kolizja(*itr, gracz2) == true)gracz2.move(0, 5);
- }
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
- {
- if (gracz2.getPosition().y <570)
- {
- gracz2.move(0, 5);
- }
- for (auto itr = czescimuru.begin(); itr != czescimuru.end(); itr++)
- {
- if (kolizja(*itr, gracz2) == true)gracz2.move(0, -5);
- }
- for (auto itr = skrzynki.begin(); itr != skrzynki.end(); itr++)
- {
- if (kolizja(*itr, gracz2) == true)gracz2.move(0, -5);
- }
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space))
- {
- if (liczbabomb_gracz1 > 0)
- {
- bomba.setPosition(gracz1.getPosition());
- bomby.push_back(bomba);
- liczbabomb_gracz1 -= 1;
- czy_bomba_1 = true;
- }
- }
- if (sf::Keyboard::isKeyPressed(sf::Keyboard::Slash))
- {
- if (liczbabomb_gracza2 > 0)
- {
- bomba.setPosition(gracz2.getPosition());
- bomby.push_back(bomba);
- liczbabomb_gracza2 -= 1;
- }
- }
- }
- int main()
- {
- sf::RenderWindow window(sf::VideoMode(765, 653), "SFML works!");
- window.setFramerateLimit(60);
- ustaw_tex();
- //tekstury
- dodaj_sciany();
- while (window.isOpen())
- {
- sf::Event event;
- while (window.pollEvent(event))
- {
- if (event.type == sf::Event::Closed)
- window.close();
- }
- if (!czy_koniec_gry)
- {
- timer();
- wybuch_bomby();
- Ruch();
- window.clear();
- window.draw(Tlo);
- for (std::size_t i = 0; i < czescimuru.size(); i++)
- {
- window.draw(czescimuru[i]);
- }
- for (auto j = skrzynki.begin(); j != skrzynki.end(); j++)
- {
- window.draw((*j));
- }
- for (std::size_t k = 0; k < bomby.size(); k++)
- {
- window.draw(bomby[k]);
- }
- window.draw(gracz1);
- window.draw(gracz2);
- }
- else
- {
- std::getchar();
- window.close();
- }
- window.display();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement