Added snake food and food moves when touched

Movement is not yet made to be randomly positioned.
This commit is contained in:
TriantaTV 2022-06-10 14:40:12 -05:00
parent ca7f6db077
commit 8e4d53ea2a

View File

@ -3,6 +3,8 @@
#include <SFML\System.hpp> #include <SFML\System.hpp>
using namespace std; using namespace std;
bool SnakeCollision(sf::RectangleShape object1, sf::RectangleShape object2);
int main() int main()
{ {
int videoSizeHorizontal, videoSizeVertical; int videoSizeHorizontal, videoSizeVertical;
@ -12,7 +14,11 @@ int main()
sf::Time delay = sf::milliseconds(100); sf::Time delay = sf::milliseconds(100);
sf::RectangleShape snakeHead(sf::Vector2f(25,25)); sf::RectangleShape snakeHead(sf::Vector2f(25,25));
sf::RectangleShape snakeFood(sf::Vector2f(25,25));
snakeHead.setFillColor(sf::Color::Green); snakeHead.setFillColor(sf::Color::Green);
snakeFood.setFillColor(sf::Color::Red);
snakeFood.setPosition(25,25);
while (window.isOpen()) while (window.isOpen())
{ {
@ -23,6 +29,7 @@ int main()
window.close(); window.close();
} }
sf::Vector2f snakeHeadPosition = snakeHead.getPosition(); sf::Vector2f snakeHeadPosition = snakeHead.getPosition();
sf::Vector2f snakeFoodPosition = snakeFood.getPosition();
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left)) if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
snakeHeadPosition.x -= 25; snakeHeadPosition.x -= 25;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up)) if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
@ -32,9 +39,29 @@ int main()
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
snakeHeadPosition.x += 25; snakeHeadPosition.x += 25;
snakeHead.setPosition(snakeHeadPosition.x, snakeHeadPosition.y); snakeHead.setPosition(snakeHeadPosition.x, snakeHeadPosition.y);
if (SnakeCollision(snakeHead, snakeFood))
{
snakeFoodPosition.x += 25;
snakeFoodPosition.y += 25;
snakeFood.setPosition(snakeFoodPosition.x, snakeFoodPosition.y);
}
window.clear(); window.clear();
window.draw(snakeFood);
window.draw(snakeHead); window.draw(snakeHead);
window.display(); window.display();
sf::sleep(delay); sf::sleep(delay);
} }
} }
bool SnakeCollision(sf::RectangleShape object1, sf::RectangleShape object2)
{
sf::Vector2f object1Position = object1.getPosition();
sf::Vector2f object2Position = object2.getPosition();
if (object1Position.x != object2Position.x)
return 0;
if (object1Position.y != object2Position.y)
return 0;
return 1;
}