Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2015, 21:02   #1
Relad
Новичок
Джуниор
 
Регистрация: 25.03.2015
Сообщений: 1
По умолчанию "С" , библиотека SFML

Товарищи! Всех приветствую!
Пожалуйста, прочтите.

Написал код для приложения по заданию:

"Написать следующее приложение: Вдоль нижнего края графического окна строится от 5 до 15 (количество определяется пользователем) прямоугольников одинаковой ширины и случайной высоты, не превышающей половины высоты графического окна. У верхнего края окна в случайном месте появляется окружность заданного пользователем радиуса и движется с некоторой постоянной скоростью вниз стирая все на своем пути. Как только она достигает нижнего края окна, окружность уничтожается, и у верхнего края появляется новая (вновь в случайном месте). Так продолжается заданное пользователем число раз."

#include <SFML/Graphics.hpp>
#include <stdio.h>
#include <math.h>
#include<locale.h>

#define Box_X 400
#define Box_Y 400
#define Max_B 200
#define Min_B 30
#define Max_V 3
#define Min_V 1

#define MaxFrameRate 60// скорость обновления окна

int main()
{
setlocale(LC_ALL, "Russian");
int col1, col2, col3, R;
int col11, col22, col33;

int kolvo=0, k, j=0, i=0; // Kolvo - количество появлении круга, k - количество прямоугольников
float height = 0.0, vx = 0, vy = 1.5, x=0, y=0, x1=0, y1=0, d=0;//высота прямоугольника

// Ввод пользователя для круга
printf("Введите количество появлении круга уничтожителя: ");
scanf("%d", &kolvo);

printf("\nВведите радиус круга-уничтожителя: \n ");
while ((scanf("%d", &R) != 1) || R < 0)
{
printf("Неверные данные, попробуйте снова\n");
continue;
}

//Ввод пользователя для прямоугольников
printf("Введите количество прямоугольников от 5 до 15: ");
while (scanf("%d", &k) != 1 || ((k < 5) || (k > 15)))
{
printf("Неверные данные, попробуйте снова\n");
continue;
}

//Создание окна
sf::RenderWindow window(sf::VideoMode(Box_X, Box_Y), "Anime");

//Устанока скорости обновления окна
window.setFramerateLimit(MaxFrameRa te);
srand(time(0));

//Создание окружности
sf::CircleShape shape;

shape.setRadius(R);
// Случайный цвет для круга
col1 = 0+rand()%(255);
col2 = 0+rand()%(255);
col3 = 0+rand()%(255);


shape.setPosition(rand() % Box_X,0);
shape.setFillColor(sf::Color::Color (255, col2, col3));
i=0;

//Создание прямоугольника
sf::RectangleShape rectangle[15];
for (j=0; j<k; j++)
{
//случайная высота не превышающий половину высоты окна
height = rand() % 250;
d = 64;
rectangle[j].setSize(sf::Vector2f(64, height));

//Случайный цвет для прямоугольников
col11 = 0+rand()%(255);
col22 = 0+rand()%(255);
col33 = 0+rand()%(255);
rectangle[j].setFillColor(sf::Color::Color(col1 1, col22, col33));
y = Box_Y - height - 2;
x=x+64;
//позиция прямоугольника
rectangle[j].setOutlineThickness(0);
rectangle[j].setPosition(x,y);

}

//Очистка окна
window.clear();
//Вывод окна на экран
window.display();


// цикл выполняется пока окно открыто
while (window.isOpen())
{
//Обработка события "закрытия окна"
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}

window.clear();


for (j=0; j<k; j++)
{
window.draw(rectangle[j]);

if ( ((rectangle[j].getPosition().y - shape.getPosition().y) < R*2) && ((abs(shape.getPosition().x - rectangle[j].getPosition().x )) < R*2))
{
rectangle[j].setSize(sf::Vector2f(0, 0));

if ((shape.getPosition().y+vy>Box_Y) || (shape.getPosition().y+vy<0))
{
shape.setPosition(rand() % Box_X,0);
}
}

}shape.move(vx, vy);
window.draw(shape);
window.display();
}window.close();


return 0;
}

Не получается теперь окно закрыть, если кто знает, прошу откликнуться.
Relad вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"Библиотека" - задача на использование типа record (запись) на Паскаль Андрей71 Помощь студентам 3 19.11.2013 22:48
Постоянно слетает галочка "автоматически" в "Параметры Excel", "Формулы", "Вычисления в книге" Alexsandrr Microsoft Office Excel 4 19.10.2013 14:22
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Вывести название соответствующей карты вида "шестерка бубен", "дама червей","туз треф" и т.п. воваава Помощь студентам 3 01.12.2011 12:50
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04