diff --git a/game.cpp b/game.cpp index 0458017..4f43794 100644 --- a/game.cpp +++ b/game.cpp @@ -4,7 +4,7 @@ Game::Game() :max_x(1000), max_y(800), direction(0), window(sf::VideoMode(max_x, max_y), "ASCII RACER"), - racecar(400.0f, 30.0f, 1.7f) { // maxSpeed, acceleration, and steerSpeed values + racecar(400.0f, 30.0f, 1.7f, sf::Color::Red), bot(400.0f, 30.0f, 1.7f, sf::Color::Green) { // maxSpeed, acceleration, and steerSpeed values if (!font.loadFromFile("cascaydia.otf")) { std::cerr << "Failed to load font" << std::endl; exit(1); @@ -39,6 +39,9 @@ Game::Game() racecar.setPosition(1000, 80); // Set initial position for the racecar racecar.setRotation(180); + bot.setPosition(1000, 80); // Set initial position for the bot + bot.setRotation(180); + // Initialize the times and quadrants data structure timesAndQuadrants.push_back(std::make_pair(1, "00:00:000")); } @@ -46,18 +49,24 @@ Game::Game() void Game::run() { sf::Clock clock; + loadPlayerMovesFromFile("player_moves.txt"); + // Create a view that will follow the racecar view = sf::View(sf::FloatRect(0, 0, max_x, max_y)); view.setCenter(racecar.getX(), racecar.getY()); // Center the view on the racecar window.setView(view); backgroundMusic.setLoop(true); + + int currentMove = 0; while (window.isOpen()) { float dt = clock.restart().asSeconds(); if(lapPoints.size() < 3) { + botMove(currentMove, dt); + currentMove++; // Update game time sf::Time gameTime = gameTimeClock.getElapsedTime(); @@ -94,24 +103,42 @@ void Game::run() { } if(lapPoints.size() < 3) { - if (sf::Keyboard::isKeyPressed(sf::Keyboard::LShift)) { - if(nitro > 0) { - nitro--; - float newX = racecar.getX() + ((racecar.getSpeed() + 1.1) * dt * cos(racecar.getRotation())); - float newY = racecar.getY() + ((racecar.getSpeed() + 1.1) * dt * sin(racecar.getRotation())); - //std::cout << "New: " << newX << "," << newY << " Old: " << racecar.getX() << "," << racecar.getY() << std::endl; - if (!isTrackCollision(newX, newY)) { - racecar.boost(dt); - //std::cout << nitro << std::endl; - mapText.setOutlineThickness(0); - } else { - //racecar.stop(); - racecar.boost(dt); - modifier += 0.01; - mapText.setOutlineThickness(6); + if (sf::Keyboard::isKeyPressed(sf::Keyboard::LShift)) { + if(nitro > 0) { + nitro--; + float newX = racecar.getX() + ((racecar.getSpeed() + 1.1) * dt * cos(racecar.getRotation())); + float newY = racecar.getY() + ((racecar.getSpeed() + 1.1) * dt * sin(racecar.getRotation())); + //std::cout << "New: " << newX << "," << newY << " Old: " << racecar.getX() << "," << racecar.getY() << std::endl; + if (!isTrackCollision(newX, newY)) { + racecar.boost(dt); + //std::cout << nitro << std::endl; + mapText.setOutlineThickness(0); + } else { + //racecar.stop(); + racecar.boost(dt); + modifier += 0.01; + mapText.setOutlineThickness(6); + } } - } - else { + else { + if (racecar.getSpeed() < 0) { + racecar.brake(dt); + } else { + float newX = racecar.getX() + ((racecar.getSpeed() + 1.1) * dt * cos(racecar.getRotation())); + float newY = racecar.getY() + ((racecar.getSpeed() + 1.1) * dt * sin(racecar.getRotation())); + //std::cout << "New: " << newX << "," << newY << " Old: " << racecar.getX() << "," << racecar.getY() << std::endl; + + if (!isTrackCollision(newX, newY)) { + racecar.accelerate(dt); + mapText.setOutlineThickness(0); + } else { + //racecar.stop(); + modifier += 0.01; + mapText.setOutlineThickness(6); + } + } + } + } else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up)) { if (racecar.getSpeed() < 0) { racecar.brake(dt); } else { @@ -128,84 +155,68 @@ void Game::run() { mapText.setOutlineThickness(6); } } - } - } else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up)) { - if (racecar.getSpeed() < 0) { - racecar.brake(dt); - } else { - float newX = racecar.getX() + ((racecar.getSpeed() + 1.1) * dt * cos(racecar.getRotation())); - float newY = racecar.getY() + ((racecar.getSpeed() + 1.1) * dt * sin(racecar.getRotation())); - //std::cout << "New: " << newX << "," << newY << " Old: " << racecar.getX() << "," << racecar.getY() << std::endl; - - if (!isTrackCollision(newX, newY)) { - racecar.accelerate(dt); - mapText.setOutlineThickness(0); + } else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down)) { + if (racecar.getSpeed() > 0) { + racecar.brake(dt); } else { - //racecar.stop(); - modifier += 0.01; - mapText.setOutlineThickness(6); + float newX = racecar.getX() + ((racecar.getSpeed() + 1.1) * dt * cos(racecar.getRotation())); + float newY = racecar.getY() + ((racecar.getSpeed() + 1.1) * dt * sin(racecar.getRotation())); + //std::cout << "New: " << newX << "," << newY << " Old: " << racecar.getX() << "," << racecar.getY() << std::endl; + + if (!isTrackCollision(newX, newY)) { + racecar.reverse(dt); + mapText.setOutlineThickness(0); + } else { + //racecar.stop(); + modifier += 0.01; + mapText.setOutlineThickness(6); + } } - } - } else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down)) { - if (racecar.getSpeed() > 0) { - racecar.brake(dt); } else { - float newX = racecar.getX() + ((racecar.getSpeed() + 1.1) * dt * cos(racecar.getRotation())); - float newY = racecar.getY() + ((racecar.getSpeed() + 1.1) * dt * sin(racecar.getRotation())); - //std::cout << "New: " << newX << "," << newY << " Old: " << racecar.getX() << "," << racecar.getY() << std::endl; - - if (!isTrackCollision(newX, newY)) { - racecar.reverse(dt); - mapText.setOutlineThickness(0); - } else { - //racecar.stop(); - modifier += 0.01; - mapText.setOutlineThickness(6); - } + racecar.decelerate(dt); } - } else { - racecar.decelerate(dt); - } - - if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) { - racecar.steer(dt, -1.0f); // Steer left - } else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) { - racecar.steer(dt, 1.0f); // Steer right - } - - racecar.update(dt); - - nitroText.setString("Nitro: " + std::to_string(nitro)); - nitroText.setCharacterSize(24); - nitroText.setFillColor(sf::Color::White); - nitroText.setPosition(racecar.getX() - 475, racecar.getY() + 300); - - speedText.setString(std::to_string(static_cast(racecar.getSpeed())) + " km/h"); - speedText.setCharacterSize(24); - speedText.setFillColor(sf::Color::Green); - speedText.setPosition(racecar.getX() - 475, racecar.getY() + 350); - if(racecar.getSpeed() < 0){ - speedText.setFillColor(sf::Color::Blue); - } - if(racecar.getSpeed() >= 250){ - speedText.setCharacterSize(27); - speedText.setFillColor(sf::Color::Yellow); - } - if(racecar.getSpeed() >= 360){ - speedText.setCharacterSize(30); - speedText.setFillColor(sf::Color::Red); - } - timerText.setPosition(racecar.getX() - 80, racecar.getY() - 350); - - // Update the view to follow the racecar - view.setCenter(racecar.getX(), racecar.getY()); - window.setView(view); + + if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) { + racecar.steer(dt, -1.0f); // Steer left + } else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) { + racecar.steer(dt, 1.0f); // Steer right + } + + racecar.update(dt); + bot.update(dt); + + nitroText.setString("Nitro: " + std::to_string(nitro)); + nitroText.setCharacterSize(24); + nitroText.setFillColor(sf::Color::White); + nitroText.setPosition(racecar.getX() - 475, racecar.getY() + 300); + + speedText.setString(std::to_string(static_cast(racecar.getSpeed())) + " km/h"); + speedText.setCharacterSize(24); + speedText.setFillColor(sf::Color::Green); + speedText.setPosition(racecar.getX() - 475, racecar.getY() + 350); + if(racecar.getSpeed() < 0){ + speedText.setFillColor(sf::Color::Blue); + } + if(racecar.getSpeed() >= 250){ + speedText.setCharacterSize(27); + speedText.setFillColor(sf::Color::Yellow); + } + if(racecar.getSpeed() >= 360){ + speedText.setCharacterSize(30); + speedText.setFillColor(sf::Color::Red); + } + timerText.setPosition(racecar.getX() - 80, racecar.getY() - 350); + + // Update the view to follow the racecar + view.setCenter(racecar.getX(), racecar.getY()); + window.setView(view); } window.clear(); mapText.setString(asciiMap); window.draw(mapText); window.draw(racecar.getDrawable()); + window.draw(bot.getDrawable()); window.draw(speedText); window.draw(nitroText); @@ -400,3 +411,44 @@ void Game::writeHighScores() { } } +void Game::loadPlayerMovesFromFile(const std::string& filename) { + std::ifstream file(filename); + if (file.is_open()) { + int move; + while (file >> move) { + lastPlayerMoves.push_back(move); + } + file.close(); + } +} + +void Game::botMove(int i, float dt) { + int move = lastPlayerMoves[i]; + switch (move) { + case 0: + bot.brake(dt); + break; + case 1: + bot.accelerate(dt); + break; + case 2: + bot.decelerate(dt); + break; + case 3: + bot.decelerate(dt); + bot.steer(dt, -1.0f); + break; + case 4: + bot.decelerate(dt); + bot.steer(dt, 1.0f); + break; + case 5: + bot.accelerate(dt); + bot.steer(dt, -1.0f); + break; + case 6: + bot.accelerate(dt); + bot.steer(dt, 1.0f); + break; + } +} diff --git a/game.h b/game.h index e3ff23e..4faf1ac 100644 --- a/game.h +++ b/game.h @@ -20,6 +20,8 @@ public: void displayEndGame(); void loadHighScores(); void writeHighScores(); + void loadPlayerMovesFromFile(const std::string& filename); + void botMove(int i, float dt); private: int max_x; @@ -34,6 +36,8 @@ private: sf::Clock gameTimeClock; sf::View view; Racecar racecar; + Racecar bot; + std::vector lastPlayerMoves; std::vector> timesAndQuadrants; // Store times and quadrants bool lapFinished; unsigned int lastRound = 0; diff --git a/high_scores.txt b/high_scores.txt index df558a3..33c6c47 100644 --- a/high_scores.txt +++ b/high_scores.txt @@ -1,2 +1,3 @@ 79725 79512 +78055 diff --git a/player_moves.txt b/player_moves.txt new file mode 100644 index 0000000..a70b7b9 --- /dev/null +++ b/player_moves.txt @@ -0,0 +1,1999 @@ +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +2 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +5 +5 +5 +1 +1 +1 +1 +5 +5 +5 +5 +1 +1 +1 +1 +1 +1 +5 +5 +5 +1 +1 +1 +1 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +5 +5 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +5 +5 +5 +5 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +6 +6 +6 +1 +1 +1 +1 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +6 +6 +6 +1 +1 +1 +1 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +5 +5 +5 +1 +1 +5 +5 +5 +5 +5 +1 +1 +1 +1 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +1 +5 +5 +5 +1 +1 +1 +1 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +6 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +6 +1 +1 +1 +1 +1 +1 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +5 +5 +5 +1 +1 +1 +1 +1 +1 +5 +5 +5 +1 +1 +1 +1 +1 +1 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +6 +1 +1 +1 +1 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +1 +1 +1 +1 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +5 +5 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +5 +5 +5 +1 +1 +1 +1 +1 +6 +6 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +1 +1 +1 +1 +1 +1 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +2 +2 +2 +2 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +1 +1 +1 +6 +6 +6 +6 +6 +1 +1 +1 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +6 +1 +1 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +5 +5 +5 +5 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +5 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +5 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +3 +1 +1 +1 +1 +1 +1 +1 +1 +6 +6 +6 +6 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 +1 diff --git a/racecar.cpp b/racecar.cpp index 4de66d8..d724720 100644 --- a/racecar.cpp +++ b/racecar.cpp @@ -1,6 +1,6 @@ #include "racecar.h" -Racecar::Racecar(float maxSpeed, float acceleration, float steerSpeed) +Racecar::Racecar(float maxSpeed, float acceleration, float steerSpeed, sf::Color color) : maxSpeed(maxSpeed), acceleration(acceleration), steerSpeed(steerSpeed), dx(0), dy(0), steeringAngle(3.13) { if (!font.loadFromFile("cascaydia.otf")) { std::cerr << "Failed to load font" << std::endl; @@ -10,7 +10,7 @@ Racecar::Racecar(float maxSpeed, float acceleration, float steerSpeed) carText.setString("|:=:>"); // Replace "o" with a racecar emoji or any desired character carText.setFont(font); carText.setCharacterSize(12); - carText.setFillColor(sf::Color::White); + carText.setFillColor(color); speed = 0; } diff --git a/racecar.h b/racecar.h index bc310e8..c9b0c6b 100644 --- a/racecar.h +++ b/racecar.h @@ -7,7 +7,7 @@ class Racecar { public: - Racecar(float maxSpeed, float acceleration, float steerSpeed); + Racecar(float maxSpeed, float acceleration, float steerSpeed, sf::Color color); void update(float dt); void accelerate(float dt); void boost(float dt); diff --git a/terminal_racer b/terminal_racer index e871b25..81be4bc 100755 Binary files a/terminal_racer and b/terminal_racer differ