SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › не до конца прорисовывается карта
В этой теме 5 ответов, 2 участника, последнее обновление BunDem 6 года/лет, 4 мес. назад.
-
АвторСообщения
-
Я использую массив типа string для отрисовки небольшой карты в цикле. Проблема в том, что почему-то отрисовывается всё, кроме левой и верхней границ (нижняя и правая такие-же, но отрисовываются). И при компиляции внизу в выводе он выдаёт какие-то странные ошибки. Как это исправить? Код и скрины ниже.
C++1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677#include <SFML/Graphics.hpp>const int W1 = 40;const int H1 = 23;sf::String map[H1] = {"WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW","W W","W SSS W","W SSS S W","W SS SSSS W","W SS W","W W","W W","W S W","W SSSSS W","W SSSSSSSS W","W W","W W","W W","W W","W W","W W","W W","W W","W SSSS W","W SSSSSS W","W SSSS W","WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW",};///////////////////////////////sam main.cpp#include <SFML/Graphics.hpp>#include <SFML/Audio.hpp>#include <iostream>#include <sstream>#include <cstdlib>#include <ctime>#include "maps.h"sf::RenderWindow window(sf::VideoMode(1280, 736), "xxx");using namespace sf;int main() {Texture map_texture;map_texture.loadFromFile("images\\amap.png");Sprite map1;map1.setTexture(map_texture);while (window.isOpen()){sf::Event event;while (window.pollEvent(event)){if (event.type == sf::Event::Closed)window.close();}window.clear();for (int i = 1; i < H1; i++)for (int j = 1; j < W1; j++){if (map[i][j] == 'W') map1.setTextureRect(IntRect(64, 0, 32, 32));if (map[i][j] == ' ') map1.setTextureRect(IntRect(0, 0, 32, 32));if (map[i][j] == 'S') map1.setTextureRect(IntRect(32, 0, 32, 32));map1.setPosition(j * 32, i * 32);window.draw(map1);}window.display();}return 0;}Вложения:
You must be logged in to view attached files.почему-то на сайте сам массив как-то криво отобразился, но в коде он нормальный, ровный
ещё и вложенные скрины куда-то улетели…
Разве отсчет массива идет не от нуля? Вы просто первую строку и первые элементы карты и не отрисовываете, поменяйте значения в циклах с 1 на 0.
C++12345678for (int i = 0; i < H1; i++)for (int j = 0; j < W1; j++){if (map[i][j] == 'W') map1.setTextureRect(IntRect(64, 0, 32, 32));if (map[i][j] == ' ') map1.setTextureRect(IntRect(0, 0, 32, 32));if (map[i][j] == 'S') map1.setTextureRect(IntRect(32, 0, 32, 32));map1.setPosition(j * 32, i * 32);window.draw(map1);}И вправду, а я что-то догнать не мог, спасибо!
Пожалуйста.
-
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.