Архива.ч
Добавить
Войти
Светлый стиль
Тёмный стиль
Дополнительно
Стиль сайта
Arhivach (по умолчанию)
Darkstrap (Neutron-like)
Стиль тредов
Arhivach (по умолчанию)
Neutron
FAQ
Контакты
Помощь сайту
Дополнения
Случайный тред
Старые архивы
Статус системы
API
Сохранен
6
https://2ch.su/gd/res/459005.html
/gd/ - Игрострой
2ch
К сожалению, значительная часть сохранённых до 2024 г. изображений и видео была потеряна (
подробности случившегося
). Мы призываем всех неравнодушных
помочь нам
с восстановлением утраченного контента!
SFML C++
Ошибочка
29/11/17 Срд 00:34:34
#1
№459005
image.png
main
#include <SFML/Graphics.hpp>
#include <iostream>
#include "Map.h"
using namespace sf;
class castle { //крепость
private:
float x, y;
public:
float w, h; //высота и ширина
int health; //количество здоровья
String file;
Image image;
Texture texture;
Sprite sprite;
castle(String FILE, float X, float Y, float W, float H) {
health = 100;
file = FILE;
w = W; h = H;
image.loadFromFile("images/"+FILE);
texture.loadFromImage(image);
sprite.setTexture(texture);
x = X; y = Y;
sprite.setTextureRect(IntRect(0, 0, w, h));
sprite.setPosition(x, y);
}
};
int main()
{
RenderWindow window(sf::VideoMode(480, 640), "TD_GAME"); //окно игры
Image map_image; //карта
map_image.loadFromFile("images/map.png");
Texture map;
map.loadFromImage(map_image);
Sprite s_map;
s_map.setTexture(map);
castle cast("hero.png", 350, 600, 96.0, 96.0);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed) window.close();
}
window.clear();
for (int i = 0; i < heightMap; i++)
for (int j = 0; j < widthMap; j++) {
if (
tileMap[j] == ' ') s_map.setTextureRect(IntRect(0, 0, 32, 32));
else if (
tileMap[j] == '0') s_map.setTextureRect(IntRect(64, 0, 32, 32));
s_map.setPosition(j
32, i
32);
window.draw(s_map);
}
window.display();
}
return 0;
}
Map.h:
#include <SFML/Graphics.hpp>
const int heightMap = 20;//размер карты высота
const int widthMap = 15; //размер карты ширина
char* tileMap[widthMap][heightMap] =
{
"000000000000000",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"000000000000000"
};
Предполагаю, что ошибка в создании карты
Памагити
Аноним
29/11/17 Срд 01:30:26
#2
№459007
Твой двумерный массив строк выглядит странно, быть может ты хотел одномерный список строк?
Аноним
29/11/17 Срд 06:04:11
#3
№459025
Может сначала плюсы поучишь хотя бы немного? А то явно видно, что у тебя проблемы с ними. А дальше только хуже будет.
Так что лучше поучи язык и возвращайся к sfml позже
Аноним
30/11/17 Чтв 19:42:12
#4
№459225
>>459005 (OP)
Ну да, говнокод, и че?
Аноним
01/12/17 Птн 20:39:39
#5
№459361
Давай ты выложишь код на какой-нибудь pastebin для начала, а то совсем ничего не хочется читать когда ты его плейн текстом пишешь тут.
Аноним
01/12/17 Птн 21:13:08
#6
№459372
> s_map.setTextureRect(IntRect(64, 0, 32, 32));
ты уверен в этих значениях?
как выглядит "images/map.png" ?
> char* tileMap[widthMap][heightMap]
Ты создаёшь
указатель на двумерный массив
> tileMap[j]
но используешь его вообще как простой одномерный массив, к тому же ты не используешь координату i при получении тайла
Please enable JavaScript to view the
comments powered by Disqus.
comments powered by
Disqus
#include <SFML/Graphics.hpp>
#include <iostream>
#include "Map.h"
using namespace sf;
class castle { //крепость
private:
float x, y;
public:
float w, h; //высота и ширина
int health; //количество здоровья
String file;
Image image;
Texture texture;
Sprite sprite;
castle(String FILE, float X, float Y, float W, float H) {
health = 100;
file = FILE;
w = W; h = H;
image.loadFromFile("images/"+FILE);
texture.loadFromImage(image);
sprite.setTexture(texture);
x = X; y = Y;
sprite.setTextureRect(IntRect(0, 0, w, h));
sprite.setPosition(x, y);
}
};
int main()
{
RenderWindow window(sf::VideoMode(480, 640), "TD_GAME"); //окно игры
Image map_image; //карта
map_image.loadFromFile("images/map.png");
Texture map;
map.loadFromImage(map_image);
Sprite s_map;
s_map.setTexture(map);
castle cast("hero.png", 350, 600, 96.0, 96.0);
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed) window.close();
}
window.clear();
for (int i = 0; i < heightMap; i++)
for (int j = 0; j < widthMap; j++) {
if (tileMap[j] == ' ') s_map.setTextureRect(IntRect(0, 0, 32, 32));
else if (tileMap[j] == '0') s_map.setTextureRect(IntRect(64, 0, 32, 32));
s_map.setPosition(j 32, i 32);
window.draw(s_map);
}
window.display();
}
return 0;
}
Map.h:
#include <SFML/Graphics.hpp>
const int heightMap = 20;//размер карты высота
const int widthMap = 15; //размер карты ширина
char* tileMap[widthMap][heightMap] =
{
"000000000000000",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"0 0",
"000000000000000"
};
Предполагаю, что ошибка в создании карты
Памагити