SFML и C++ Уроки \ Разработка игр › Форумы › SFML Graphics › Ни как не получается нарисовать радугу кубиками.
В этой теме 3 ответа, 3 участника, последнее обновление HertZex 7 года/лет, 11 мес. назад.
-
АвторСообщения
-
Ребята, выручайте. Нужно с помощью кубиков(квадратов) отрисовать мини-радугу.
Просто выстроить кубики в форме радуги, без цвета и тому подобного.Я циклом создаю кубики, но они ставятся только один на один. А как сместить вправо не знаю*(
дать кубику позицию смещения вправо – setPosition (координаты)
а как прописать такое именно для следующего кубика?
создаю кубики такC++123456for (int x = 0; x<1; x++) // от 0 до 256for (int y = 0; y<5; y++)for (int z = 0; z<1; z++){mass[x][y][z] = 1;}Постараюсь помочь теоретически.
Итак. Попробуем нарисовать двумерную радугу. За основу возьмем окружность (для простоты).
Общее уравнение окружности выглядит так: (x-x0)^2*(y-y0)^2=r*r, где (x0,y0) – центр окружности, r – радиус. Но нам нужна не только окружность, но и внутренняя часть круга Чтобы нарисовать круг, пройдем в циклах по квадрату размером 2r на 2r и немного изменим формулу:
(x-x0)^2*(y-y0)^2<r*rC++123456for (int i = -r; i< r; i++){for (int j = -r; j< r; j++){if ((j*j) + (i*i) <(r*r)) cout << "A"; else cout << ".";}cout << endl;}Теперь нам нужен верхний полукруг. Очень просто. Проходим цикл по i до нуля, а не до r.
Заготовка под радугу готова. Теперь разобьем на цвета и вырежем лишнюю часть внизу. Это можно сделать с помощью дополнительных радиусов.
Вот пример кодаC++12345678910for (int i = -r; i< 0; i++){for (int j = -r; j< r; j++){if ((j*j) + (i*i) < (r2*r2)) cout << "."; else{if (((j*j) + (i*i) < (r1*r1)))cout << "b"; else {if (((j*j) + (i*i) < (r*r))) cout << "!"; else cout << ".";}}}cout << endl;}В принципе радуга готова. Вам осталось подстроить под свою реализацию.
Конечно не совсем то, что Вы просили, но все же.Вложения:
You must be logged in to view attached files. -
АвторСообщения
Для ответа в этой теме необходимо авторизоваться.