|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.03.2015, 21:02 | #1 |
Новичок
Джуниор
Регистрация: 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; } Не получается теперь окно закрыть, если кто знает, прошу откликнуться. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
"Библиотека" - задача на использование типа 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 |