Вторник, 03 Декабря 2024, 21:15

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
SFML
SaiteiДата: Четверг, 09 Мая 2013, 22:49 | Сообщение # 41
старожил
Сейчас нет на сайте
а как тогда узнать координаты игрока?

Добавлено (09.05.2013, 12:45)
---------------------------------------------
//FIX: спрайта))

Добавлено (09.05.2013, 22:49)
---------------------------------------------
Научите пожалуйста правильно загружать и анимировать спрайты. Желательно с кодом-примером.
Задача: есть 150 картинок звезды (так называемые "кадры") с разрешением 500х500 и форматом .png, они пронумированы так: "_000.png ... _150.png". Нужно загрузить в игру и отобразить. Я уже делал, работало, но очень пожалел, т.к. пришлось создавать 2 массива по 150 элементов. Кошмар, в общем. Как грамотно всё это дело сделать?

НохчиДата: Четверг, 09 Мая 2013, 23:06 | Сообщение # 42
заслуженный участник
Сейчас нет на сайте
Thor, коли сам не можешь.

Многие вопросы по Windows отпадут, если посмотреть тут
TreeLoysДата: Четверг, 21 Августа 2014, 20:43 | Сообщение # 43
частый гость
Сейчас нет на сайте
Я сделал сайт по этому движку kfni.ho.ua люди говорят толковые уроки!

http://kfni.ho.ua/ - мой сайт по урокам SFML
SaiteiДата: Пятница, 22 Августа 2014, 12:21 | Сообщение # 44
старожил
Сейчас нет на сайте
GalakTozawr, некропостер.
TreeLoysДата: Пятница, 22 Августа 2014, 19:18 | Сообщение # 45
частый гость
Сейчас нет на сайте
Цитата Saitei ()
некропостер.
Да что вы, я на всяк случай.


http://kfni.ho.ua/ - мой сайт по урокам SFML
MrFiringДата: Суббота, 23 Августа 2014, 08:00 | Сообщение # 46
был не раз
Сейчас нет на сайте
Цитата Saitei ()
а как тогда узнать координаты игрока?

Код

sf::Sprite sprite;
sprite.getPosition();Тут возвращается вроде бы vector2f
Еще можно вот так sprite.getPosition().x;
sprite.getPosition.y;
А тут возвращается тип float


Цитата Saitei ()
Научите пожалуйста правильно загружать и анимировать спрайты. Желательно с кодом-примером.
Задача: есть 150 картинок звезды (так называемые "кадры") с разрешением 500х500 и форматом .png, они пронумированы так: "_000.png ... _150.png". Нужно загрузить в игру и отобразить. Я уже делал, работало, но очень пожалел, т.к. пришлось создавать 2 массива по 150 элементов. Кошмар, в общем. Как грамотно всё это дело сделать?


Вместо массивов можно использовать vector там не нужно будет париться по поводу кол-ва элементов и прочей лабуды.Для удобства делаются классы объектов.Например:

Код

#include <SFML/Graphics.hpp>

class Wall
{
private:
   sf::Texture Wall_texture;
   sf::Sprite wall;
public:
  Wall(sf::String TextureFile,float posX,float posY,int imgX,int imgY,int imgW,int imgH);
//Первым аргументом получаем Путь к файлу в котором лежит наша  
//текстура,координаты X Y с помощью которых мы будем указывать где будем отображать всё это дело,размеры текстуры X Y Ширина Высота.
  {
    if(!Wall_texture.loadFromFile(TextureFile))//Загружаем текстуру,если не загрузили выдаём ошибку
    {

    }
    wall.setTexture(Wall_texture);//Задаём текстуру спрайту
    wall.setTextureRect(sf::IntRect(imgX,imgY,imgW,imgH))//Задаём необходимый участок отображений текстуры в спрайте
    wall.setPosition(X,Y);//Задаём позицию спрайту

  }

  void Draw(sf::RenderWindow &window)//Метод для отображения спрайта
  {
    window.draw(wall);//Тут мы рисуем наш спрайт
  }
~Wall(void)
  {
   //Оставим пустым
  }
};


Код

#include <vector>
#include <sstream>

  ostringstream string_stream; //Объявляем поток вывода строк..Собственно нужен будет нам для загрузки 150 картинок
  std::vector<Wall*> Wall_List;//Объявляем вектор

//где-то в коде...
for(int i = 0;i < 150;i++)
{
   string_stream << '_' << i << ".png";//Тут мы суём всё что нужно в поток,поскольку картинки имеют имена в формате _000-150.png мы будем передавать в поток первым  
//Символ _ дальше  i и только после этого .png дабы всё не спуталось и не было ошибок..Но код еще нужно будет додумать.Именно вот эту часть.
   Wall_List.push_back(new Wall(string_stream.str(),150,80,10,20,100,100))//Тут знакомый нам конструктор класса Wall который был написан заранее..
//Передаём нужные компоненты..Стоит обратить внимание на первый аргумент мы преобразуем поток вывода в строку тем самым получаем имя файла который будем  
//загружать
}

//где-то в коде вовремя рендера
for(int i = 0;i < Wall_List.size();i++)
{
   Wall_List[i]->Draw(window);
}
//Тут всё просто делаем цикл в котором i  бегает по каждому элементу вектора и вызываем метод отрисовки в который передаём наше окно в которое будем рисовать.


Ну вот собственно и всё...Разжевал как смог если что то не понятно пишите попробую объяснить
SaiteiДата: Суббота, 23 Августа 2014, 13:28 | Сообщение # 47
старожил
Сейчас нет на сайте
MrFiring, GalakTozawr, вы на даты сообщений вообще смотреть умеете? Я давно уже всё знаю.
MrFiringДата: Суббота, 23 Августа 2014, 15:31 | Сообщение # 48
был не раз
Сейчас нет на сайте
Цитата Saitei ()
MrFiring, GalakTozawr, вы на даты сообщений вообще смотреть умеете? Я давно уже всё знаю.

Умеем...Кому-нибудь да пригодится..


Сообщение отредактировал MrFiring - Суббота, 23 Августа 2014, 15:32
TreeLoysДата: Воскресенье, 07 Сентября 2014, 13:10 | Сообщение # 49
частый гость
Сейчас нет на сайте
Надо же восстанавливать культуру движка SFML, к тому же оооооооооооооооочень не недооцененного!

http://kfni.ho.ua/ - мой сайт по урокам SFML
MrFiringДата: Воскресенье, 07 Сентября 2014, 13:29 | Сообщение # 50
был не раз
Сейчас нет на сайте
TreeLoysДата: Понедельник, 08 Сентября 2014, 11:42 | Сообщение # 51
частый гость
Сейчас нет на сайте
Одно другому не мешает)) А судя по книги с оффсайта то задумывался в первою очередь как игровой движок!

http://kfni.ho.ua/ - мой сайт по урокам SFML
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг