From 09f04ce82f331f5fb2f1088e1afceb3f92a001c5 Mon Sep 17 00:00:00 2001 From: thatscringebro Date: Tue, 10 Oct 2023 13:06:38 -0400 Subject: [PATCH] rotations and teew some stats --- game.cpp | 30 +++++++++++++++++++++++++----- game.h | 1 + racecar.cpp | 6 ++++-- terminal_racer | Bin 45296 -> 50720 bytes 4 files changed, 30 insertions(+), 7 deletions(-) diff --git a/game.cpp b/game.cpp index deab20a..21c4e0a 100644 --- a/game.cpp +++ b/game.cpp @@ -3,15 +3,15 @@ #define DELAY 30000 Game::Game() - : x(0), y(0), max_x(800), max_y(600), direction(0), window(sf::VideoMode(max_x, max_y), "SFML Window"), - racecar(200.0f, 20.0f, 1.0f) { // Adjust maxSpeed, acceleration, and steerSpeed values as needed + : x(0), y(0), max_x(1000), max_y(800), direction(0), window(sf::VideoMode(max_x, max_y), "SFML Window"), + racecar(300.0f, 30.0f, 1.7f) { // maxSpeed, acceleration, and steerSpeed values if (!font.loadFromFile("cascaydia.otf")) { std::cerr << "Failed to load font" << std::endl; exit(1); } - - sf::Text text("o", font, 24); // This is just for the track, you can modify it as needed - text.setFillColor(sf::Color::White); + + // Create a text object for displaying speed + speedText.setFont(font); racecar.setPosition(max_x / 2, max_y / 2); // Set initial position for the racecar } @@ -54,8 +54,28 @@ void Game::run() { racecar.update(dt); + speedText.setString(std::to_string(static_cast(racecar.getSpeed())) + " km/h"); + speedText.setCharacterSize(24); + speedText.setFillColor(sf::Color::Green); + speedText.setPosition(10, 770); + if(racecar.getSpeed() < 0){ + speedText.setFillColor(sf::Color::Blue); + } + if(racecar.getSpeed() >= 150){ + speedText.setPosition(10, 767); + speedText.setCharacterSize(27); + speedText.setFillColor(sf::Color::Yellow); + } + if(racecar.getSpeed() >= 260){ + speedText.setPosition(10, 764); + speedText.setCharacterSize(30); + speedText.setFillColor(sf::Color::Red); + } + + window.clear(); window.draw(racecar.getDrawable()); // Draw the racecar + window.draw(speedText); window.display(); sf::sleep(sf::microseconds(DELAY)); diff --git a/game.h b/game.h index 97b09c9..186fab8 100644 --- a/game.h +++ b/game.h @@ -18,6 +18,7 @@ private: int direction; sf::RenderWindow window; sf::Font font; + sf::Text speedText; Racecar racecar; }; diff --git a/racecar.cpp b/racecar.cpp index b77b3ce..31259d5 100644 --- a/racecar.cpp +++ b/racecar.cpp @@ -7,10 +7,11 @@ Racecar::Racecar(float maxSpeed, float acceleration, float steerSpeed) exit(1); } - carText.setString("0"); // Replace "o" with a racecar emoji or any desired character + carText.setString("|:=:>"); // Replace "o" with a racecar emoji or any desired character carText.setFont(font); - carText.setCharacterSize(24); + carText.setCharacterSize(12); carText.setFillColor(sf::Color::White); + speed = 0; } @@ -34,6 +35,7 @@ void Racecar::decelerate(float dt) { void Racecar::steer(float dt, float direction) { steeringAngle += steerSpeed * direction * dt; + carText.setRotation(steeringAngle * 180 / M_PI); } void Racecar::brake(float dt) { diff --git a/terminal_racer b/terminal_racer index d156acee85db6cf43aa195a811d4bf06e8c109ff..05a84f9abd031f166be9572bf504248fe5aeb4bf 100755 GIT binary patch literal 50720 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