SFML и C++ Уроки \ Разработка игр › Форумы › SFML System, Window и другие вопросы › Как сделать динамическую генерацию уровня? › Ответ в теме: Как сделать динамическую генерацию уровня?
Смотри, xSize и ySize поменяй местами, расширять такой массив можно только в одну сторону, а в примере выше только по y координате, а вам как я понял надо по x;
Вот пример кода, тут полоска генерируется динамически.
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
#include <SFML/Graphics.hpp> #include <ctime> using namespace sf; using namespace std; void draw() { srand(time(NULL)); int x = 70, y = 30, shapeSize = 8; RenderWindow window(sf::VideoMode(700+shapeSize*x, shapeSize*y), "Writed by Gleb Stegalin aka barbar"); int **field; int c = 1; field = new int*[y]; for(int i=0;i<y;i++) field[i] = new int[x]; for(int i=0;i<y;i++) { for (int z=0;z<x;z++) { field[i][z] = rand()%3; } } RectangleShape shape; shape.setSize(Vector2f(shapeSize, shapeSize)); while (window.isOpen()) { Event event; while (window.pollEvent(event)) { if (event.type == Event::Closed) window.close(); } sf::Vector2i pixelPos = sf::Mouse::getPosition(window); sf::Vector2f pos = window.mapPixelToCoords(pixelPos); window.clear(sf::Color(240,240,200)); for(int i=0;i<y;i++) { for (int z=0;z<x;z++) { if (field[i][z] == 1) shape.setFillColor(Color(0,0,0)); else shape.setFillColor(Color(250,250,250)); shape.setPosition(z*shapeSize, i*shapeSize); window.draw(shape); } } x++; window.display(); } } int main() { draw(); return 0; } |