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

Рисование линий по координатам - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сортировка по алфавиту http://www.cyberforum.ru/cpp-beginners/thread275728.html
Ознакамливаюсь со структурами. Все прекрасно, осталось только отсортировать символьные массивы по алфавиту. Вот мой текст, в комментариях есть все задания.Программа вроде прокомментирована в основных местах И ещё немного не по теме, но все таки..) Допустим если я ввожу в имя 1 слово, все хорошо, а если 2(имя-фамилия), то начинаются неконтролируемые действия?? если есть какие-либо...
C++ Как узнать координаты курсора мыши и отобразить их? c++ Как узнать координаты курсора мыши и отобразить их? c++ http://www.cyberforum.ru/cpp-beginners/thread275719.html
C++ Как это сделать?
Нужно заменить цифры в числе на ноль, если цифра равна "a". А затем вывести получившееся число. число N - натуральное, а - является цифрой (от 0 до 9). например N = 122223 a = 2 должно получится 100003 Помогите плиз))
C++ Односвязный список
Люди помогите пожалуйста с лабораторной сделал прогу по заданию а преподаватель говорит что не правильно сделана функция поиска и вообще что это не функция поиска Вот задание: Построить односвязный список из входной последовательности натуральных чисел. Удалить из списка узел, содержащий заданное натуральное число x. Оформить как функцию поиск в списке узла, содержащего заданное натуральное...
C++ имитация нажатие двух клавиш на c++. (alt-f4) http://www.cyberforum.ru/cpp-beginners/thread275691.html
будет нажата клавиша p keybd_event('P', 0,0,0); keybd_event('P', 0,KEYEVENTF_KEYUP,0); Но как сделать чтобы нажималось две клавиши одновременно?
C++ Указатели при работе с одномерными и двумерными массивами Помогите Даны натуральное число n, целые числа а1,...,аn . Выяснить, имеется ли среди чисел а1,...,аn совпадающие. подробнее

Показать сообщение отдельно
IrineK
Заблокирован
13.04.2011, 22:02     Рисование линий по координатам
neske был прав. Передвигать квадрат намного сложнее, чем нарисовать сетку.)

Вот сетка и бегающий по ней квадрат (за пределы не выбегает). К-во ячеек можно менять.

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#if       _WIN32_WINNT < 0x0500
  #undef  _WIN32_WINNT
  #define _WIN32_WINNT   0x0502 // I've got SP2
#endif
//если у вас работает без этих четырех строк - просто уберите их
 
#include <windows.h>
#include <conio.h>
 
#define UP_ARROW 72
#define LEFT_ARROW 75
#define DOWN_ARROW 80
#define RIGHT_ARROW 77
#define N 10  // NхN ячеек
 
 
/*********************************class SQ*****************************************/
class SQ
{   private:
        int _x;
        int _y;
    public:
    SQ():_x(0),_y(0) {}
    SQ(int x,int y)
        {_x = x;_y = y;}
    ~SQ() {}
    
    void setX(int);
    void setY(int);
    int getX();
    int getY();
    void drawSq(HDC, COLORREF);
    void moveIt(HDC);
};
 
void SQ::setX(int x){_x = x;}
 
void SQ::setY(int y) {_y = y;}
 
int SQ::getX() {return _x;}
 
int SQ::getY() {return _y;}
 
void SQ::drawSq(HDC hDC, COLORREF clr)
{   HBRUSH NewBrush = CreateSolidBrush(clr);
    SelectObject(hDC, NewBrush);
    Rectangle(hDC, this->getX(), this->getY(), this->getX()+20, this->getY()+20);
    DeleteObject(NewBrush);
}
 
void SQ::moveIt(HDC hDC)
{   int KeyStroke;
    KeyStroke = getch();
    if (KeyStroke == 224)
    {   KeyStroke = getch(); 
        switch (KeyStroke)
        {
        case UP_ARROW:
            this->drawSq(hDC,RGB(0, 0, 0));
            if(this->getY()!=10) this->setY(this->getY()-20);
            this->drawSq(hDC,RGB(250, 25, 5));
            break;
        case DOWN_ARROW:
            this->drawSq(hDC,RGB(0, 0, 0));
            if(this->getY()!=-10+N*20) this->setY(this->getY()+20);
            this->drawSq(hDC,RGB(250, 25, 5));
            break;
        case LEFT_ARROW:
            this->drawSq(hDC,RGB(0, 0, 0));
            if(this->getX()!=10) this->setX(this->getX()-20);
            this->drawSq(hDC,RGB(250, 25, 5));
            break;
        case RIGHT_ARROW:
            this->drawSq(hDC,RGB(0, 0, 0));
            if(this->getX()!=-10+N*20) this->setX(this->getX()+20);
            this->drawSq(hDC,RGB(250, 25, 5));
        break;
        }
    }
}
 
/*********************************************************************************/
int main()
      {
    HWND hWnd=GetConsoleWindow();
        HDC hDC=GetDC(hWnd);
        
    HPEN cP = CreatePen(PS_SOLID, 2, RGB(0,255,0));
    SelectObject(hDC,cP); 
    POINT p; 
    int x=10,y=10,i;
        
        for(i=0;i<N+1;i++)
        {   MoveToEx(hDC,x+i*20,y,&p);
            LineTo(hDC,x+i*20,y+N*20);
        }
        for(i=0;i<N+1;i++)
        {   MoveToEx(hDC,x,y+i*20,&p);
            LineTo(hDC,x+N*20,y+i*20);
        }
        
    SQ sq(10,10);
    sq.drawSq(hDC,RGB(250, 25, 5));
        
    while(1)
        sq.moveIt(hDC);
 
return 0;
}
Изображения
 
 
Текущее время: 13:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru