Level.h
#include <SFML\Graphics.hpp>
#include <iostream>
#include <fstream>
#include <cctype>
#include <string>
class Level
{
public:
void LoadLevel();
void drawLevel(sf::RenderWindow &window);
sf::Texture tileTexture;
sf::Sprite tiles;
std::string tileLocation;
std::string str;
sf::Vector2i map[100][100];
sf::Vector2i loadCounter = sf::Vector2i(0, 0);
};
Level.cpp
#include "Level.h"
void Level::LoadLevel()
{
std::ifstream openfile("map.txt");
if (openfile.is_open())
{
openfile >> tileLocation;
tileTexture.loadFromFile(tileLocation);
tiles.setTexture(tileTexture);
while (!openfile.eof())
{
openfile >> str;
char x = str[0], y = str[2];
if (!isdigit(x) || !isdigit(y))
map[loadCounter.x][loadCounter.y] = sf::Vector2i(-1, -1);
else
map[loadCounter.x][loadCounter.y] = sf::Vector2i(x - '0', y - '0');
if (openfile.peek() == '\n')
{
loadCounter.x = 0;
loadCounter.y++;
}
else
loadCounter.x++;
}
}
loadCounter.y++;
}
void Level::drawLevel(sf::RenderWindow &window)
{
Level::LoadLevel();
for (int i = 0; i < loadCounter.x; i++)
{
for (int j = 0; j < loadCounter.y; j++)
{
if (map[i][j].x != -1 && map[i][j].y != -1)
{
tiles.setPosition(i * 32, j * 32);
tiles.setTextureRect(sf::IntRect(map[i][j].x * 32, map[i][j].y * 32, 32, 32));
window.draw(tiles);
}
}
}
}
Game.h
#include <SFML\Window.hpp>
#include <SFML\Graphics.hpp>
#include <SFML\Window\WindowStyle.hpp>
#include "Level.h"
using namespace sf;
class Game : public Level
{
public:
Game(void);
void GameStart();
void PlayerTexture();
void Movement();
RenderWindow window;
Texture texture;
Sprite sprite;
Event event;
enum {Down, Left, Right, Up};
int sourceX = 32, sourceY = Down;
Vector2i source;
friend class Level;
friend void Level::drawLevel(sf::RenderWindow &window);
Level level;
};
Game.cpp
#include "Game.h"
Game::Game(void)
{
Vector2i source(1, Down);
window.create(VideoMode(800,600), "Runner");
}
void Game::PlayerTexture()
{
if (texture.loadFromFile("postac.png"))
{
sprite.setTexture(texture);
}
sprite.setPosition(0,200);
}
void Game::Movement()
{
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
{
source.y = Right;
sprite.move(0.5, 0);
}
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
{
source.y = Left;
sprite.move(-0.5, 0);
}
}
void Game::GameStart()
{
Game::PlayerTexture();
while (window.isOpen())
{
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed || Keyboard::isKeyPressed(Keyboard::Key::Escape))
window.close();
}
Game::Movement();
level.drawLevel(window);
sprite.setTextureRect(IntRect(source.x * 32, source.y * 32, 32, 32));
window.draw(sprite);
window.display();
window.clear();
}
}
main.cpp
#include "Game.h"
int main()
{
Game game;
game.GameStart();
return EXIT_SUCCESS;
}