#ifndef PLAYER_H_INCLUDED #define PLAYER_H_INCLUDED #include //#include using namespace sf; using namespace std; class Player{ private: float x,y; public: float w,h,dx,dy,speed; // Координаты игрока int dir; // направление движения игрока String File; Image image; Texture texture; Sprite sprite; Player(String F, float X, float Y, float W, float H) { dx=0;dy=0;speed=0;dir=0; File = F;//имя файла+расширение w = W; h = H;//высота и ширина image.loadFromFile("images/" + File);//запихиваем в image наше изображение вместо File мы передадим то, что пропишем при создании объекта. В нашем случае "hero.png" и получится запись идентичная image.loadFromFile("images/hero/png"); image.createMaskFromColor(Color(220, 254, 186));//убираем ненужный темно-синий цвет, эта тень мне показалась не красивой. texture.loadFromImage(image);//закидываем наше изображение в текстуру sprite.setTexture(texture);//заливаем спрайт текстурой x = X; y = Y;//координата появления спрайта sprite.setTextureRect(IntRect(w,h,w,h)); //Задаем спрайту один прямоугольник для вывода одного льва, а не кучи львов сразу. IntRect - приведение типов } void update(float time) //функция "оживления" объекта класса. update - обновление. принимает в себя время SFML , вследствие чего работает бесконечно, давая персонажу движение. { switch (dir)//реализуем поведение в зависимости от направления. (каждая цифра соответствует направлению) { case 0: dx = speed; dy = 0; break;//по иксу задаем положительную скорость, по игреку зануляем. получаем, что персонаж идет только вправо case 1: dx = -speed; dy = 0; break;//по иксу задаем отрицательную скорость, по игреку зануляем. получается, что персонаж идет только влево case 2: dx = 0; dy = speed; break;//по иксу задаем нулевое значение, по игреку положительное. получается, что персонаж идет только вниз case 3: dx = 0; dy = -speed; break;//по иксу задаем нулевое значение, по игреку отрицательное. получается, что персонаж идет только вверх } x += dx*time;//то движение из прошлого урока. наше ускорение на время получаем смещение координат и как следствие движение y += dy*time;//аналогично по игреку speed = 0;//зануляем скорость, чтобы персонаж остановился. sprite.setPosition(x,y); //выводим спрайт в позицию x y , посередине. бесконечно выводим в этой функции, иначе бы наш спрайт стоял на месте. } float getPlayerCoordinateX () {return x;} float getPlayerCoordinateY () {return y;} void setPlayerCoordinateX (float X) { x = X;} void setPlayerCoordinateY (float Y) { y = Y;} }; #endif // PLAYER_H_INCLUDED