SFML и C++ Уроки \ Разработка игр › Форумы › SFML Начало работы (подключение и настройка) › кто знает как исправить такую проблему подскажите пожалуйста ??
В этой теме 6 ответов, 5 участников, последнее обновление KindRedSand 6 года/лет, 6 мес. назад.
-
АвторСообщения
-
==================================================================================
#include <iostream>
#include <SFML/Graphics.hpp>using namespace sf;
class Player { // класс Игрока
public:
float x, y, w, h, dx, dy,speed ; //координаты игрока х и у, высота ширина, ускорение (по х и по у), сама скорость
int dir ; //направление (direction) движения игрока
String File; //файл с расширением
Image image;//сфмл изображение
Texture texture;//сфмл текстура
Sprite sprite;//сфмл спрайтPlayer(String F, int X, int Y, float W, float H){ //Конструктор с параметрами(формальными) для класса Player. При создании объекта класса мы будем задавать имя файла, координату Х и У, ширину и высоту
dir = 0; speed = 0;
File = F;//имя файла+расширение
w = W; h = H;//высота и ширина
image.loadFromFile(“images/” + File);//запихиваем в image наше изображение вместо File мы передадим то, что пропишем при создании объекта. В нашем случае “hero.png” и получится запись идентичная image.loadFromFile(“images/hero/png”);
image.createMaskFromColor(Color(41, 33, 59));//убираем ненужный темно-синий цвет, эта тень мне показалась не красивой.
texture.loadFromImage(image);//закидываем наше изображение в текстуру
sprite.setTexture(texture);//заливаем спрайт текстурой
x = X; y = Y;//координата появления спрайта
sprite.setTextureRect(IntRect(0, 0, w, h)); //Задаем спрайту один прямоугольник для вывода одного льва, а не кучи львов сразу. IntRect – приведение типов}
void update(float time) //функция “оживления” объекта класса. update – обновление. принимает в себя время SFML , вследствие чего работает бесконечно, давая персонажу движение.
{
switch (dir)//реализуем поведение в зависимости от направления. (каждая цифра соответствует направлению)
{
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;
default: dx=0; dy=0;//по иксу задаем нулевое значение, по игреку отрицательное. получается, что персонаж идет только вверх
}x += dx*time;//то движение из прошлого урока. наше ускорение на время получаем смещение координат и как следствие движение
y += dy*time;//аналогично по игрекуspeed = 0;//зануляем скорость, чтобы персонаж остановился.
sprite.setPosition(x,y); //выводим спрайт в позицию x y , посередине. бесконечно выводим в этой функции, иначе бы наш спрайт стоял на месте.
}
};int main()
{
RenderWindow window(sf::VideoMode(640, 480), “Lesson 8. kychka-pc.ru”);float CurrentFrame = 0;//хранит текущий кадр
Clock clock;Player p(“hero.png”,250,250,96.0, 96.0);//создаем объект p класса player,задаем “hero.png” как имя файла+расширение, далее координата Х,У, ширина, высота.
while (window.isOpen())
{float time = clock.getElapsedTime().asMicroseconds();
clock.restart();
time = time / 800;sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}///////////////////////////////////////////Управление персонажем с анимацией////////////////////////////////////////////////////////////////////////
if ((Keyboard::isKeyPressed(Keyboard::Left) || (Keyboard::isKeyPressed(Keyboard::A)))) {
p.dir = 1; p.speed = 0.1;//dir =1 – направление вверх, speed =0.1 – скорость движения. Заметьте – время мы уже здесь ни на что не умножаем и нигде не используем каждый раз
CurrentFrame += 0.005*time;
if (CurrentFrame > 3) CurrentFrame -= 3;
p.sprite.setTextureRect(IntRect(96 * int(CurrentFrame), 96, 96, 96)); //через объект p класса player меняем спрайт, делая анимацию (используя оператор точку)
}if ((Keyboard::isKeyPressed(Keyboard::Right) || (Keyboard::isKeyPressed(Keyboard::D)))) {
p.dir = 0; p.speed = 0.1;//направление вправо, см выше
CurrentFrame += 0.005*time;
if (CurrentFrame > 3) CurrentFrame -= 3;
p.sprite.setTextureRect(IntRect(96 * int(CurrentFrame), 192, 96, 96)); //через объект p класса player меняем спрайт, делая анимацию (используя оператор точку)
}if ((Keyboard::isKeyPressed(Keyboard::Up) || (Keyboard::isKeyPressed(Keyboard::W)))) {
p.dir = 3; p.speed = 0.1;//направление вниз, см выше
CurrentFrame += 0.005*time;
if (CurrentFrame > 3) CurrentFrame -= 3;
p.sprite.setTextureRect(IntRect(96 * int(CurrentFrame), 288, 96, 96)); //через объект p класса player меняем спрайт, делая анимацию (используя оператор точку)}
if ((Keyboard::isKeyPressed(Keyboard::Down) || (Keyboard::isKeyPressed(Keyboard::S)))) { //если нажата клавиша стрелка влево или англ буква А
p.dir = 2; p.speed = 0.1;//направление вверх, см выше
CurrentFrame += 0.005*time; //служит для прохождения по “кадрам”. переменная доходит до трех суммируя произведение времени и скорости. изменив 0.005 можно изменить скорость анимации
if (CurrentFrame > 3) CurrentFrame -= 3; //проходимся по кадрам с первого по третий включительно. если пришли к третьему кадру – откидываемся назад.
p.sprite.setTextureRect(IntRect(96 * int(CurrentFrame), 0, 96, 96)); //проходимся по координатам Х. получается 96,96*2,96*3 и опять 96}
p.update(time);//оживляем объект p класса Player с помощью времени sfml, передавая время в качестве параметра функции update. благодаря этому персонаж может двигаться
window.clear();
window.draw(p.sprite);//рисуем спрайт объекта p класса player
window.display();
}return 0;
}=======================================================================================================
=======================================================================================================
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Users\ДАНЯ\Documents\Visual Studio 2010\Projects\ПЛАТФОРМЕР\x64\Debug\ПЛАТФОРМЕР.exe”, Символы загружены.
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\ntdll.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\kernel32.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\KernelBase.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\opengl32.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\msvcrt.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\advapi32.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\sechost.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\rpcrt4.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\gdi32.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\user32.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\lpk.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\usp10.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\glu32.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\ddraw.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\dciman32.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\setupapi.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\cfgmgr32.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\oleaut32.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\ole32.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\devobj.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\dwmapi.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\winmm.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\msvcp100d.dll”, Символы загружены.
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\msvcr100d.dll”, Символы загружены.
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\imm32.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\msctf.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\uxtheme.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\nvoglv64.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\shell32.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\shlwapi.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\version.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\wintrust.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\crypt32.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\msasn1.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\ntmarta.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\Wldap32.dll”, Невозможно найти или открыть файл PDB
Поток ‘Поток Win64′ (0x768) завершился с кодом 0 (0x0).
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\powrprof.dll”, Невозможно найти или открыть файл PDB
Поток ‘Поток Win64′ (0x2a0) завершился с кодом 0 (0x0).
“ПЛАТФОРМЕР.exe”: Выгружено: “C:\Windows\System32\powrprof.dll”
Поток ‘Поток Win64′ (0x13fc) завершился с кодом 0 (0x0).
Поток ‘Поток Win64′ (0x1138) завершился с кодом 0 (0x0).
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\dinput.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\hid.dll”, Невозможно найти или открыть файл PDB
“ПЛАТФОРМЕР.exe”: Загружено: “C:\Windows\System32\cryptbase.dll”, Невозможно найти или открыть файл PDB
Поток ‘Поток Win64′ (0xd74) завершился с кодом 0 (0x0).
Поток ‘Поток Win64′ (0x1194) завершился с кодом 0 (0x0).
Поток ‘Поток Win64′ (0x1044) завершился с кодом 0 (0x0).
Программа “[4360] ПЛАТФОРМЕР.exe: Машинный код” завершилась с кодом 0 (0x0).говоря проще всё вроде работает но анимация персонажа в право работает но самого движения не происходит
заголовок поста надо было назвать как суть проблемы, использовать кнопку “вставить код”.
завтра гляну че тамМеня смущает вот эта конструкция:
C++123456789switch (dir)//реализуем поведение в зависимости от направления. (каждая цифра соответствует направлению){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;default: dx=0; dy=0;//по иксу задаем нулевое значение, по игреку отрицательное. получается, что персонаж идет только вверх}и то, что dir=0 – это дефолтное состояние. Попробуй заменить движение вправо с нуля на четыре, к примеру. Просто не удивлюсь, если где-то в коде есть if(p.dir==0)p.speed=0;
и у меня такая проблема
“kursach3.exe”: Загружено: “C:\Users\Innochka\Documents\Visual Studio 2010\Projects\kursach3\Debug\kursach3.exe”, Символы загружены.
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\ntdll.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\kernel32.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\KernelBase.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Program Files (x86)\AVG\Antivirus\aswhookx.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\opengl32.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\msvcrt.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\advapi32.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\sechost.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\rpcrt4.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\sspicli.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\cryptbase.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\gdi32.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\user32.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\lpk.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\usp10.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\glu32.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\ddraw.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\dciman32.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\setupapi.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\cfgmgr32.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\oleaut32.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\ole32.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\devobj.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\dwmapi.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\winmm.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Users\Innochka\Documents\Visual Studio 2010\Projects\kursach3\Debug\msvcp100d.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Users\Innochka\Documents\Visual Studio 2010\Projects\kursach3\Debug\msvcr100d.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\imm32.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\msctf.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\uxtheme.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\ig7icd32.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\version.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Выгружено: “C:\Windows\SysWOW64\version.dll”
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\dinput.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\hid.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\wintrust.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\crypt32.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\msasn1.dll”, Невозможно найти или открыть файл PDB
“kursach3.exe”: Загружено: “C:\Windows\SysWOW64\clbcatq.dll”, Невозможно найти или открыть файл PDB
Поток ‘Поток Win32′ (0x85c) завершился с кодом 0 (0x0).
Программа “[5516] kursach3.exe: Машинный код” завершилась с кодом 0 (0x0).Некропстингом занимаешсья, Sanya_drug?
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.