Форум программистов, компьютерный форум CyberForum.ru

Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.75
Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
07.02.2012, 14:29     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома #1
Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома, ширина и высота этажа. (дом должен быть трехэтажный, и на каждом этаже по одному одинаковому окошку)
напишите, пожалуйста, полное решение задачи, с пояснениями.
за ранее спасибо.

Добавлено через 1 минуту
нужно решение в с++
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2012, 14:29     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома
Посмотрите здесь:

C++ Заполнить матрицу линейной последовательностью (0-81), от левого верхнего угла по диагонали: вправо - вверх
Заполнить матрицу ЛП, от левого верхнего угла по спирали: вправо - вниз - влево - вверх. C++
С++ Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям координат. Известны координаты левого нижнего угла каждого из них... C++
Заполнить матрицу, от левого верхнего угла по диагонали: вправо - вверх C++
Пройти по любому разрешенному пути игрового поля от верхнего левого угла до правого нижнего C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 15:03     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома #2
Калерчик, посмотри сюда Как рисовать элементарные геометрические фигуры?
Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
07.02.2012, 15:10  [ТС]     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома #3
а саму программу можете составить?
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 15:12     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома #4
Цитата Сообщение от Калерчик Посмотреть сообщение
а саму программу можете составить?
- могу только нарисуй в Paint каким должен быть дом(прорисуй прямоугольниками окна)
Я конечно это видел
Цитата Сообщение от Калерчик Посмотреть сообщение
если известны координаты левого верхнего угла дома, ширина и высота этажа. (дом должен быть трехэтажный, и на каждом этаже по одному одинаковому окошку)
Но хочу перед глазами чётко иметь что надо намалевать
Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
07.02.2012, 15:33  [ТС]     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома #5
Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома
Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
07.02.2012, 15:34  [ТС]     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома #6
только ярусы этажей и окошки должны быть одинаковые (координаты не известны,их вводить нужно)
-=ЮрА=-
07.02.2012, 15:50
  #7

Не по теме:

Калерчик, попробую помочь...

Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
07.02.2012, 15:55  [ТС]     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома #8
буду оч благодарна
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 16:35     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Калерчик Посмотреть сообщение
буду оч благодарна
- вот накидал
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
#include <windows.h>
 
#define BLK RGB(0,0,0)
#define WHT RGB(255,255,255)
 
HPEN  getPen(int iPEN_STYLE, int iPEN_SIZE, int iCOLORREF);
BOOL  PlotRect(HDC hDC, HPEN hPen, COORD BGN, COORD END);
 
int main()
{
    HWND hWnd = GetForegroundWindow();
    HPEN BPEN = getPen(PS_SOLID, 2, BLK);
    HPEN WPEN = getPen(PS_SOLID, 2, WHT);
    HBRUSH BK = CreateSolidBrush(BLK);//Нужна чтобы зарисовать контекст DC
    
    SHORT Line;
    SHORT Size= 80;//Размер стороны квадрата
    COORD BGN = {0};
    COORD END = {0};
    RECT pRECT= {0};
    GetWindowRect(hWnd,&pRECT);
    HDC hDC = GetWindowDC(hWnd);
    if(hDC)
    {
        SetBkMode(hDC,TRANSPARENT);
        while(true)//Простая перерисовка каждые 50 мсек
        {
            SelectObject(hDC,BK);
            for(Line = 0; Line < 3; Line++)//3 - число этажей, можно изменять
            {
                BGN.X = 10;
                BGN.Y = 40 + Size*Line;
                END.X = BGN.X + Size;
                END.Y = BGN.Y + Size;
                PlotRect(hDC, WPEN, BGN, END);
                BGN.X = BGN.X + Size/4;
                BGN.Y = BGN.Y + Size/4;
                END.X = BGN.X + Size/2;
                END.Y = BGN.Y + Size/2;
                PlotRect(hDC, WPEN, BGN, END);
            }
            Sleep(50);//50 мсек
        }
        ReleaseDC(hWnd,hDC);//Высвобождаем графический контекст консоли
    }
    else
        MessageBox(hWnd,"Can't get drawing context of console",NULL,MB_OK);
    return 0;
}
 
HPEN getPen(int iPEN_STYLE, int iPEN_SIZE, int iCOLORREF)
{
    return CreatePen(iPEN_STYLE, iPEN_SIZE, iCOLORREF);
}
 
BOOL PlotRect(HDC hDC, HPEN hPen, COORD BGN, COORD END)
{
    SelectObject(hDC,hPen);
    return Rectangle(hDC,BGN.X, BGN.Y, END.X, END.Y);
}
Миниатюры
Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома  
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 16:37     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома #10
Если компилятор будет ругаться сюда
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
MessageBox(hWnd,"Can't get drawing context of console",NULL,MB_OK);
Записываем так MessageBoxA(hWnd,"Can't get drawing context of console",NULL,MB_OK);
Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
07.02.2012, 16:46  [ТС]     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома #11
а можете компилятор кинуть, а то с форума закачиваются с какой-то ошибкой
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 17:07     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома #12
Цитата Сообщение от Калерчик Посмотреть сообщение
а можете компилятор кинуть, а то с форума закачиваются с какой-то ошибкой
- VisualStudio 6.0. А какой компилятор у вас???Можно посмотреть скрин ошибки???

Добавлено через 2 минуты

Не по теме:

Калерчик, создайте срр-файл и нажмите построить проект из существующего кода, не делайте SimpleAplicationProject или куда хуже Win32 Project - это простейшая консоль и ошибки там могут возникнуть лишь в MessageBox в остальном им просто неоткуда браться...

Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
07.02.2012, 17:25  [ТС]     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома #13
Visual C++ 2010 Express ошибка 135
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 17:45     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома #14
Цитата Сообщение от Калерчик Посмотреть сообщение
Visual C++ 2010 Express ошибка 135
- Express крайне урезанная версия в её составе наверное даже windows.h нет. Чтобы мой код пошёл нужна Standart или Full Edition
Калерчик
1 / 1 / 0
Регистрация: 16.12.2011
Сообщений: 76
07.02.2012, 17:53  [ТС]     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома #15
а можете по строчное объяснить работу программы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2012, 18:02     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома
Еще ссылки по теме:

C++ Заполнить квадратную матрицу от левого верхнего угла по спирали
C++ Заполнить матрицу ЛП, от левого верхнего угла по диагонали: вправо - вверх
C++ Прокрутить четверти матрицы по часовой стрелке, начиная с верхнего левого угла

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2012, 18:02     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома #16
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
HWND hWnd = GetForegroundWindow();
- получаем дескриптор окна консоли

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
HPEN BPEN = getPen(PS_SOLID, 2, BLK);
* * * * HPEN WPEN = getPen(PS_SOLID, 2, WHT);
- получаем чёрную и белую "ручки"(в общем это объект который оставляет след определённой ширины и цвета)

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
HBRUSH BK = CreateSolidBrush(BLK);
- создаём чёрную "кисть" (аналог ручки, но будет красить всю область сразу а не оставлять в ней след, это даже больше на Ведро в Paint похоже)

Вот это вообще можно убрать, я сначала думать делать программу по другому, в общем это старые мысли остались
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
RECT pRECT= {0};
* * * * GetWindowRect(hWnd,&pRECT);
- а так это получение координат области окна консоли

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
HDC hDC = GetWindowDC(hWnd);
- получаем графический контекст устройства консоли

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
SelectObject(hDC,BK);
- красим DC в цвет нашей кисти

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(Line = 0; Line < 3; Line++)//3 - число этажей, можно изменять
C++
1
2
3
4
5
6
7
8
9
10
11
12
{
  BGN.X = 10;
  BGN.Y = 40 + Size*Line;
  END.X = BGN.X + Size;
  END.Y = BGN.Y + Size;
  PlotRect(hDC, WPEN, BGN, END);
  BGN.X = BGN.X + Size/4;
  BGN.Y = BGN.Y + Size/4;
  END.X = BGN.X + Size/2;
  END.Y = BGN.Y + Size/2;
  PlotRect(hDC, WPEN, BGN, END);
}
- рисуем квадраты

Дальше всё понятно...
Yandex
Объявления
07.02.2012, 18:02     Построить на экране рисунок одно подъездного дома, если известны координаты левого верхнего угла дома
Ответ Создать тему
Опции темы

Текущее время: 14:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru