Class Level1
Class Level1
hpp>
#include <vector>
#include <stack>
#include <iostream>
#include <sstream>
if (offsetX != 0) {
bool movingRight = offsetX > 0;
if (movingRight != facingRight) {
facingRight = movingRight;
sprite.setScale((facingRight ? 0.7f : -0.7f), 0.7f);
}
}
sprite.setPosition(newPosition);
}
// Level1 Class
class Level1 {
public:
Level1(const RenderWindow& window)
: currentFrame(0), frameTime(seconds(0.2f)), facingRight(true), glowing(false),
timer(20.0f) {
// Load background
if (!backgroundTexture.loadFromFile("room.png")) {
throw runtime_error("Failed to load background image");
}
backgroundSprite.setTexture(backgroundTexture);
backgroundSprite.setScale(0.87f, 0.87f);
// Player setup
playerSprite.setTexture(playerTextures[0]);
playerSprite.setScale(0.7f, 0.7f);
playerSprite.setPosition(0.0f, window.getSize().y - 70.0f);
setupObstacles();
}
void update(float offsetX, float offsetY, float deltaTime, const RenderWindow& window)
{
FloatRect bounds(0, 0, window.getSize().x, window.getSize().y);
genericMove(playerSprite, offsetX, offsetY, deltaTime, bounds, facingRight);
private:
Texture backgroundTexture;
Sprite backgroundSprite;
vector<Texture> playerTextures;
Sprite playerSprite;
Texture keyTexture;
Sprite keySprite;
vector<Texture> obstacleTextures;
vector<Sprite> obstacles;
int currentFrame;
Clock clock;
Time frameTime;
bool facingRight;
bool glowing;
float timer;
stack<string> keysCollected;
void collectKey() {
keysCollected.push("key");
}
void setupObstacles() {
vector<Vector2f> positions = { {670, 440}, {460, 350}, {130, 50} };
for (size_t i = 0; i < obstacleTextures.size(); ++i) {
Sprite obstacle(obstacleTextures[i]);
obstacle.setPosition(positions[i]);
if (i == 2) obstacle.setScale(0.12f, 0.12f); // Adjust scale for smaller obstacle
else obstacle.setScale(0.3f, 0.3f);
obstacles.push_back(obstacle);
}
}
};
// Main function
int main() {
RenderWindow window(VideoMode(800, 600), "Level 1 Animation with Boundaries");
try {
Level1 level1(window);
Clock deltaClock;
while (window.isOpen()) {
Event event;
while (window.pollEvent(event)) {
if (event.type == Event::Closed) {
window.close();
}
}
// Handle input
float moveX = 0.0f, moveY = 0.0f;
const float movementSpeed = 100.0f;
// Check if time is up
if (level1.isTimeUp()) {
window.close();
}
// Render
window.clear();
level1.draw(window);
window.display();
}
}
catch (const exception& e) {
cerr << "Error: " << e.what() << endl;
return -1;
}
return 0;
}