From 94abee7e6127ad61c2d77ab87addb1ad58f96915 Mon Sep 17 00:00:00 2001 From: TriantaTV <56975502+TriantaTV@users.noreply.github.com> Date: Tue, 26 Jul 2022 16:56:26 -0500 Subject: [PATCH] Added ability to get snake head position Added ability to get snake head position and created a snake constructor with a position. --- src/Snake.cpp | 15 ++++++++++++++- src/Snake.h | 4 +++- src/main.cpp | 4 ++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/Snake.cpp b/src/Snake.cpp index fb5821e..240f2b9 100644 --- a/src/Snake.cpp +++ b/src/Snake.cpp @@ -2,7 +2,6 @@ #include #include #include "Snake.h" -using namespace std; // Test for collision between two objects bool SnakeCollision(sf::RectangleShape object1, sf::RectangleShape object2) @@ -49,11 +48,25 @@ void Snake::MoveSnake() return; } +// Get x and y position of snake head +sf::Vector2f Snake::GetHeadPosition() +{ + sf::Vector2f position; + position = snakeBody.front().getPosition(); + return position; +} + Snake::Snake() { // Possibly unnecessary // The big 3 could be used to create a fresh game state return; } +Snake::Snake(sf::Vector2f head) +{ + sf::RectangleShape newBodyPart(head); + snakeBody.push_back(newBodyPart); + return; +} // SnakeNode::SnakeNode(); // SnakeNode::SnakeNode(sf::Vector2f addBodyPiece); diff --git a/src/Snake.h b/src/Snake.h index 8bf2632..4114bb7 100644 --- a/src/Snake.h +++ b/src/Snake.h @@ -21,10 +21,12 @@ class Snake { private: std::deque snakeBody; - Snake(); public: + Snake(); + Snake(sf::Vector2f head); // Instead of popping like in MoveSnake() // Simply add to deque + sf::Vector2f GetHeadPosition(); void ExtendSnake(); void MoveSnake(); // Move only head body piece }; diff --git a/src/main.cpp b/src/main.cpp index 12f7310..4345856 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2,7 +2,6 @@ #include #include #include "Snake.h" -using namespace std; /* @@ -26,6 +25,7 @@ int main() sf::RenderWindow window(sf::VideoMode(videoSizeHorizontal, videoSizeVertical), "SnakePlusPlus"); sf::Time delay = sf::milliseconds(100); + Snake Player(sf::Vector2f(25,25)); sf::RectangleShape snakeHead(sf::Vector2f(25,25)); sf::RectangleShape snakeFood(sf::Vector2f(25,25)); snakeHead.setFillColor(sf::Color::Green); @@ -41,7 +41,7 @@ int main() if ((event.type == sf::Event::Closed) || (sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))) window.close(); } - sf::Vector2f snakeHeadPosition = snakeHead.getPosition(); + sf::Vector2f snakeHeadPosition = Player.GetHeadPosition(); sf::Vector2f snakeFoodPosition = snakeFood.getPosition(); // TODO: Split Movement into separate function // Add boundaries