проблема с выведение изображения на экран SFML
написал массив String он будет структурой карты и знаки которые будут в массиве будут по идеи квадратами, но сам массив не выводится на экран-дисплей, игру пишу по этому видео https://youtu.be/6OHMFwQK44k
сам код
#include <GL/glut.h>
#include <iostream>
#include <SFML/Graphics.hpp>
using namespace sf;
using namespace std;
const int H = 12;
const int W = 40;
String tilemap[H] = {
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
"B B B",
"B B B",
"B B B",
"B B B",
"B BBBB B",
"B B B",
"BBB B B",
"B BB BB B",
"B BB B",
"B B BB BB B",
"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
};
class PLAYER{
public:
float dx, dy;
FloatRect rect; // rect(x, y, width, heigth)
Sprite sprite;// загрузка картинки
float currentFrame;// текущий кадр анимации
PLAYER(Texture& image)
{
sprite.setTexture(image);// загружаем картинку
rect = FloatRect(50, 0, 94, 134);// координаты
dx = dy = 0;
currentFrame = 0;
}
void update(float time)
{
rect.left += dx * time;
rect.top += dy * time;
currentFrame += 0.005 * time;
if (currentFrame > 3) { currentFrame -= 3; }
if (dx < 0) sprite.setTextureRect(IntRect(94 * int(currentFrame), 0, 64, 134));// 94 отвечает на каком расстоянии надо перейти на следующий спрайт, 0 отвечает за тоже самое но по Y координате, 64 размер ХБ 134 размер Y
if (dx > 0) sprite.setTextureRect(IntRect(94 * int(currentFrame)+94, 0, -64, 134));// 94 отвечает на каком расстоянии надо перейти на следующий спрайт, 0 отвечает за тоже самое но по Y координате, 64 размер ХБ 134 размер Y
sprite.setPosition(rect.left, rect.top);
dx = 0;
dy = 0;
}
};
int main()
{
RenderWindow window(VideoMode(600, 600), "SFML works!");
//CircleShape shape(100.f);
//shape.setFillColor(Color::Green);
Texture t;
t.loadFromFile("player.png");
PLAYER p(t);
Clock clock;
RectangleShape rectengle;
while (window.isOpen())
{
float time = clock.getElapsedTime().asMicroseconds();
clock.restart();
time = time / 800;
Event event;
while (window.pollEvent(event))
{
if (event.type == Event::Closed)
window.close();
}
if (Keyboard::isKeyPressed(Keyboard::A))
{
p.dx = -0.1;
}
if (Keyboard::isKeyPressed(Keyboard::D))
{
p.dx = 0.1;
}
if (Keyboard::isKeyPressed(Keyboard::W))
{
p.dy = -0.1;
}
if (Keyboard::isKeyPressed(Keyboard::S))
{
p.dy = 0.1;
}
p.update(time);
window.clear(Color::White);
for (int i = 0; i < H; i++)
for (int j = 0; j < W; j++)
{
if (tilemap[i][j] == 'B')
rectengle.setFillColor(Color::Black);
if (tilemap[i][j] == ' ')
continue;
rectengle.setPosition(j * 32, i * 32);
window.draw(rectengle);
}
window.draw(p.sprite);
window.display();
}
return 0;
}