Usunięcie zbędnych rzeczy
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "../headers/Plansza.h"
|
#include "../headers/Plansza.h"
|
||||||
#include "../headers/ObjectItem.hpp"
|
#include "../headers/ObjectItem.hpp"
|
||||||
|
#include "../headers/RandomNumberGenerator.h"
|
||||||
|
|
||||||
Plansza::Plansza(unsigned int windowHeight, unsigned int windowWidth, sf::RenderWindow *mainWindow,
|
Plansza::Plansza(unsigned int windowHeight, unsigned int windowWidth, sf::RenderWindow *mainWindow,
|
||||||
const sf::Texture& playerTexture,
|
const sf::Texture& playerTexture,
|
||||||
@@ -16,6 +17,7 @@ Plansza::Plansza(unsigned int windowHeight, unsigned int windowWidth, sf::Render
|
|||||||
|
|
||||||
score = 0;
|
score = 0;
|
||||||
|
|
||||||
|
// Wczytywanie czcionki dla licznika punktów
|
||||||
if (!font.loadFromFile("../assets/fonts/arial.ttf")) {
|
if (!font.loadFromFile("../assets/fonts/arial.ttf")) {
|
||||||
std::cerr << "Error loading font\n";
|
std::cerr << "Error loading font\n";
|
||||||
exit(-500);
|
exit(-500);
|
||||||
@@ -31,33 +33,39 @@ Plansza::Plansza(unsigned int windowHeight, unsigned int windowWidth, sf::Render
|
|||||||
audioManager.loadSoundEffect("shoot_alt", "../assets/sounds/shoot_alt.ogg");
|
audioManager.loadSoundEffect("shoot_alt", "../assets/sounds/shoot_alt.ogg");
|
||||||
audioManager.loadSoundEffect("fail", "../assets/sounds/fail.mp3");
|
audioManager.loadSoundEffect("fail", "../assets/sounds/fail.mp3");
|
||||||
|
|
||||||
meteorTexture1.loadFromFile("../assets/img/meteors/meteor-1.png");
|
if (!meteorTexture1.loadFromFile("../assets/img/meteors/meteor-1.png")) {
|
||||||
meteorTexture2.loadFromFile("../assets/img/meteors/meteor-2.png");
|
std::cerr << "Failed to load enemy texture!" << std::endl;
|
||||||
|
exit(-500);
|
||||||
|
}
|
||||||
|
if (!meteorTexture2.loadFromFile("../assets/img/meteors/meteor-2.png")) {
|
||||||
|
std::cerr << "Failed to load enemy texture!" << std::endl;
|
||||||
|
exit(-500);
|
||||||
|
}
|
||||||
|
|
||||||
// Ładowanie tekstur wrogów
|
// Ładowanie tekstur wrogów
|
||||||
if (!enemyTexture.loadFromFile("../assets/img/enemy/enemy.png")) {
|
if (!enemyTexture.loadFromFile("../assets/img/enemy/enemy.png")) {
|
||||||
std::cerr << "Failed to load enemy texture!" << std::endl;
|
std::cerr << "Failed to load enemy texture!" << std::endl;
|
||||||
exit(-1);
|
exit(-500);
|
||||||
}
|
}
|
||||||
if (!advancedEnemyTexture.loadFromFile("../assets/img/enemy/advanced_enemy.png")) {
|
if (!advancedEnemyTexture.loadFromFile("../assets/img/enemy/advanced_enemy.png")) {
|
||||||
std::cerr << "Failed to load advanced enemy texture!" << std::endl;
|
std::cerr << "Failed to load advanced enemy texture!" << std::endl;
|
||||||
exit(-1);
|
exit(-500);
|
||||||
}
|
}
|
||||||
if (!BomberEnemyTexture.loadFromFile("../assets/img/enemy/bomber.png")) {
|
if (!BomberEnemyTexture.loadFromFile("../assets/img/enemy/bomber.png")) {
|
||||||
std::cerr << "Failed to load advanced enemy texture!" << std::endl;
|
std::cerr << "Failed to load advanced enemy texture!" << std::endl;
|
||||||
exit(-1);
|
exit(-500);
|
||||||
}
|
}
|
||||||
if (!KamikadzeTexture.loadFromFile("../assets/img/enemy/kamikadze.png")) {
|
if (!KamikadzeTexture.loadFromFile("../assets/img/enemy/kamikadze.png")) {
|
||||||
std::cerr << "Failed to load advanced enemy texture!" << std::endl;
|
std::cerr << "Failed to load advanced enemy texture!" << std::endl;
|
||||||
exit(-1);
|
exit(-500);
|
||||||
}
|
}
|
||||||
if (!BombaTexture.loadFromFile("../assets/img/bullets/bomba.png")) {
|
if (!BombaTexture.loadFromFile("../assets/img/bullets/bomba.png")) {
|
||||||
std::cerr << "Failed to load BombaTexture!" << std::endl;
|
std::cerr << "Failed to load BombaTexture!" << std::endl;
|
||||||
exit(-1);
|
exit(-500);
|
||||||
}
|
}
|
||||||
if (!WiazkowiecTexture.loadFromFile("../assets/img/enemy/wiazkowiec.png")) {
|
if (!WiazkowiecTexture.loadFromFile("../assets/img/enemy/wiazkowiec.png")) {
|
||||||
std::cerr << "Failed to load Wiazkowiec texture!" << std::endl;
|
std::cerr << "Failed to load Wiazkowiec texture!" << std::endl;
|
||||||
exit(-1);
|
exit(-500);
|
||||||
}
|
}
|
||||||
spawnClock.restart();
|
spawnClock.restart();
|
||||||
}
|
}
|
||||||
@@ -101,8 +109,9 @@ void Plansza::update() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// generowanie nowego meteoru
|
// generowanie nowego meteoru
|
||||||
ship.update();
|
ship.update(); // migotanie statku
|
||||||
update_score();
|
update_score(); // naliczanie punktów
|
||||||
|
// Sprawnowanie wszystkich rodzajów wrogów
|
||||||
spawn_meteor();
|
spawn_meteor();
|
||||||
spawn_enemy();
|
spawn_enemy();
|
||||||
spawn_advanced_enemy();
|
spawn_advanced_enemy();
|
||||||
@@ -132,44 +141,13 @@ void Plansza::update() {
|
|||||||
|
|
||||||
window->draw(ship.getSprite());
|
window->draw(ship.getSprite());
|
||||||
|
|
||||||
// trochę dziwny sposób ale jednak działa
|
for (auto& meteor : getMeteors()) {
|
||||||
for (auto& meteor : getMeteors()) {
|
if(ship.getSprite().getGlobalBounds().intersects(meteor.getSprite().getGlobalBounds())) {
|
||||||
if(ship.getSprite().getGlobalBounds().intersects(meteor.getSprite().getGlobalBounds())) {
|
ship.takeDamage();
|
||||||
std::cout << "You lost the game!\n";
|
|
||||||
sf::RenderWindow errorWindow(sf::VideoMode(350, 200), "The end");
|
|
||||||
sf::Font font;
|
|
||||||
if (!font.loadFromFile("../assets/fonts/arial.ttf")) {
|
|
||||||
std::cerr << "Error loading font\n";
|
|
||||||
exit(-500);
|
|
||||||
}
|
|
||||||
sf::Text text("Your ship is destroyed!", font, 24);
|
|
||||||
text.setFillColor(sf::Color::Red);
|
|
||||||
text.setPosition(50, 80);
|
|
||||||
|
|
||||||
// zatrzymanie muzyki i odtworzenie dźwięku przegranej
|
|
||||||
audioManager.playSoundEffect("fail", 70.f);
|
|
||||||
audioManager.stopBackgroundMusic();
|
|
||||||
sf::Event event{};
|
|
||||||
while (errorWindow.isOpen()) {
|
|
||||||
while (errorWindow.pollEvent(event)) {
|
|
||||||
if (event.type == sf::Event::Closed || sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)) {
|
|
||||||
errorWindow.close();
|
|
||||||
window->close();
|
|
||||||
exit(-2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
errorWindow.clear();
|
|
||||||
errorWindow.draw(text);
|
|
||||||
errorWindow.display();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (!ship.isAlive()) {
|
if (!ship.isAlive()) {
|
||||||
std::cout << "Game Over! Player is dead." << std::endl;
|
|
||||||
std::cout << "You lost the game!\n";
|
|
||||||
sf::RenderWindow errorWindow(sf::VideoMode(350, 200), "The end");
|
sf::RenderWindow errorWindow(sf::VideoMode(350, 200), "The end");
|
||||||
sf::Font font;
|
sf::Font font;
|
||||||
if (!font.loadFromFile("../assets/fonts/arial.ttf")) {
|
if (!font.loadFromFile("../assets/fonts/arial.ttf")) {
|
||||||
@@ -196,7 +174,7 @@ void Plansza::update() {
|
|||||||
errorWindow.draw(text);
|
errorWindow.draw(text);
|
||||||
errorWindow.display();
|
errorWindow.display();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto meteorIt = getMeteors().begin(); meteorIt != getMeteors().end(); ) {
|
for (auto meteorIt = getMeteors().begin(); meteorIt != getMeteors().end(); ) {
|
||||||
bool meteorHit = false;
|
bool meteorHit = false;
|
||||||
@@ -215,22 +193,6 @@ void Plansza::update() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto meteorIt = getMeteors().begin(); meteorIt != getMeteors().end(); ) {
|
|
||||||
bool meteorHit = false;
|
|
||||||
for (auto rocketIt = ship.getRockets().begin(); rocketIt != ship.getRockets().end(); ) {
|
|
||||||
if (meteorIt->getSprite().getGlobalBounds().intersects(rocketIt->getSprite().getGlobalBounds())) {
|
|
||||||
ship.getRockets().erase(rocketIt);
|
|
||||||
meteorIt = getMeteors().erase(meteorIt);
|
|
||||||
meteorHit = true;
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
++rocketIt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!meteorHit) {
|
|
||||||
++meteorIt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Ruch i render przeciwnika
|
// Ruch i render przeciwnika
|
||||||
for (auto it = enemies.begin(); it != enemies.end();) {
|
for (auto it = enemies.begin(); it != enemies.end();) {
|
||||||
it->update(); // Aktualizacja kierunku i ruchu
|
it->update(); // Aktualizacja kierunku i ruchu
|
||||||
@@ -359,10 +321,7 @@ void Plansza::update() {
|
|||||||
for (auto it = enemy.getBullets().begin(); it != enemy.getBullets().end();) {
|
for (auto it = enemy.getBullets().begin(); it != enemy.getBullets().end();) {
|
||||||
if (ship.getSprite().getGlobalBounds().intersects(it->getSprite().getGlobalBounds())) {
|
if (ship.getSprite().getGlobalBounds().intersects(it->getSprite().getGlobalBounds())) {
|
||||||
// Kolizja wykryta
|
// Kolizja wykryta
|
||||||
std::cout << "Player hit by enemy bullet!\n";
|
|
||||||
|
|
||||||
ship.takeDamage();
|
ship.takeDamage();
|
||||||
|
|
||||||
// Usuwanie pocisku
|
// Usuwanie pocisku
|
||||||
it = enemy.getBullets().erase(it);
|
it = enemy.getBullets().erase(it);
|
||||||
} else {
|
} else {
|
||||||
@@ -641,6 +600,16 @@ void Plansza::update() {
|
|||||||
|
|
||||||
// Meteor-related niżej
|
// Meteor-related niżej
|
||||||
|
|
||||||
|
|
||||||
|
void Plansza::update_meteors() {
|
||||||
|
// usuwanie meteorów które wyleciały poza ekran
|
||||||
|
for (auto& meteor : meteors) {
|
||||||
|
if(meteor.getStatus()) {
|
||||||
|
meteors.erase(meteors.begin());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Plansza::spawn_meteor() {
|
void Plansza::spawn_meteor() {
|
||||||
if (spawnClock.getElapsedTime().asSeconds() > rand() % 10 + 1) { // randomowy spawn meteorytów od 10 do 1 sekundy
|
if (spawnClock.getElapsedTime().asSeconds() > rand() % 10 + 1) { // randomowy spawn meteorytów od 10 do 1 sekundy
|
||||||
if (meteors.size() < 5) { // jeśli jest mniej niż 5 meteorów na planszy
|
if (meteors.size() < 5) { // jeśli jest mniej niż 5 meteorów na planszy
|
||||||
@@ -654,15 +623,6 @@ void Plansza::spawn_meteor() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Plansza::update_meteors() {
|
|
||||||
// usuwanie meteorów które wyleciały poza ekran
|
|
||||||
for (auto& meteor : meteors) {
|
|
||||||
if(meteor.getStatus()) {
|
|
||||||
meteors.erase(meteors.begin());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Plansza::spawn_enemy() {
|
void Plansza::spawn_enemy() {
|
||||||
if (enemySpawnClock.getElapsedTime().asSeconds() >= 110) { // Spawn co 10 sekund
|
if (enemySpawnClock.getElapsedTime().asSeconds() >= 110) { // Spawn co 10 sekund
|
||||||
int spawnX = RandomNumberGenerator::getRandomNumber(50, size.width - 50);
|
int spawnX = RandomNumberGenerator::getRandomNumber(50, size.width - 50);
|
||||||
|
|||||||
Reference in New Issue
Block a user