Merge pull request #8 from TriantaTV/Development

Game is now in GameState and snakeFood has a SnakeFood class
This commit is contained in:
TriantaTV 2022-08-02 22:00:12 -05:00 committed by GitHub
commit 766c223578
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 86 additions and 41 deletions

View File

@ -1,6 +1,8 @@
#include <iostream>
// #include <iostream>
#include <SFML\Graphics.hpp>
#include <SFML\System.hpp>
#include "Snake.h"
#include "SnakeFood.h"
#include "GameState.h"
GameState::GameState()
@ -18,3 +20,40 @@ GameState::GameState(int newHorizontal, int newVertical)
sf::RenderWindow tempWindow(gameVideoMode, "SnakePlusPlus");
return;
}
void GameState::startNewGame()
{
gameWindow.create(gameVideoMode, "SnakePlusPlus");
sf::Time delay = sf::milliseconds(25);
int snakeDirection = 0;
Snake player(sf::Vector2f(25,25));
SnakeFood playerFood(sf::Vector2f(25,25));
// sf::RectangleShape snakeHead(sf::Vector2f(25,25));
sf::RectangleShape snakeFood(sf::Vector2f(25,25));
snakeFood.setFillColor(sf::Color::Red);
snakeFood.setPosition(25,25);
while (gameWindow.isOpen())
{
sf::Event event;
while (gameWindow.pollEvent(event))
{
if ((event.type == sf::Event::Closed) || (sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)))
gameWindow.close();
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
snakeDirection = 1;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
snakeDirection = 2;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
snakeDirection = 3;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
snakeDirection = 4;
player.MoveSnake(playerFood.snakeFoodObject);
gameWindow.clear();
player.DisplaySnake(gameWindow);
gameWindow.draw(playerFood.snakeFoodObject);
gameWindow.display();
sf::sleep(delay);
}
}

View File

@ -1,6 +1,8 @@
// GameState.h
#ifndef GAMESTATE_H
#define GAMESTATE_H
#include <SFML\Graphics.hpp>
#include <SFML\System.hpp>
class GameState
{
@ -8,12 +10,13 @@ private:
public:
sf::VideoMode gameVideoMode;
sf::RenderWindow gameWindow;
GameState();
GameState(int newHorizontal, int newVertical);
void startNewGame();
/*
gameGridHorizontal = (videoSizeHorizontal // 25) * 25;
gameGridVertical = (videoSizeVertical // 25) * 25;
*/
GameState();
GameState(int newHorizontal, int newVertical);
// sf::Vector2f GetGameBoundaries();
};

24
src/SnakeFood.cpp Normal file
View File

@ -0,0 +1,24 @@
#include <random>
#include "SnakeFood.h"
SnakeFood::SnakeFood()
{
snakeFoodObject.setSize(sf::Vector2f(25,25));
snakeFoodObject.setFillColor(sf::Color::Red);
}
SnakeFood::SnakeFood(sf::Vector2f snakeFoodSize)
{
snakeFoodObject.setSize(snakeFoodSize);
snakeFoodObject.setFillColor(sf::Color::Red);
}
void SnakeFood::GenerateNewLocation(int maxLocation)
{
sf::Vector2f newPosition;
std::default_random_engine generator;
std::uniform_int_distribution<int> distribution(0, maxLocation);
newPosition.x = distribution(generator);
newPosition.y = distribution(generator);
snakeFoodObject.setPosition(newPosition);
}

16
src/SnakeFood.h Normal file
View File

@ -0,0 +1,16 @@
// SnakeFood.h
#ifndef SNAKEFOOD_H
#define SNAKEFOOD_H
#include <SFML\Graphics.hpp>
class SnakeFood
{
private:
public:
sf::RectangleShape snakeFoodObject;
SnakeFood();
SnakeFood(sf::Vector2f snakeFoodSize);
void GenerateNewLocation(int maxLocation);
};
#endif

View File

@ -1,44 +1,7 @@
#include <iostream>
#include <stdlib.h>
#include <SFML\Graphics.hpp>
#include <SFML\System.hpp>
#include "GameState.h"
#include "Snake.h"
int main()
{
GameState newGame;
newGame.gameWindow.create(newGame.gameVideoMode, "SnakePlusPlus");
sf::RenderWindow *window = &newGame.gameWindow;
sf::Time delay = sf::milliseconds(25);
int snakeDirection = 0;
Snake Player(sf::Vector2f(25,25));
sf::RectangleShape snakeHead(sf::Vector2f(25,25));
sf::RectangleShape snakeFood(sf::Vector2f(25,25));
snakeFood.setFillColor(sf::Color::Red);
snakeFood.setPosition(25,25);
while (window->isOpen())
{
sf::Event event;
while (window->pollEvent(event))
{
if ((event.type == sf::Event::Closed) || (sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)))
window->close();
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
snakeDirection = 1;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
snakeDirection = 2;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
snakeDirection = 3;
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
snakeDirection = 4;
Player.MoveSnake(snakeFood);
window->clear();
window->draw(snakeFood);
Player.DisplaySnake(*window);
window->display();
sf::sleep(delay);
}
newGame.startNewGame();
}