Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/29: Рейтинг темы: голосов - 29, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 01.03.2015
Сообщений: 54
Записей в блоге: 1

Нарисовать двигающуюся машину

03.12.2015, 20:48. Показов 5899. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите сделать так чтобы при запуске программы машина двигалась..
вот код машины:
с++
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
#include <Windows.h> 
#include <stdlib.h> 
#include <iostream> 
#include <math.h> 
 
using namespace std; 
int main() 
{ 
 
float x; 
cout<<"Hummer H3"; 
HDC hDC = GetDC( GetConsoleWindow( ) ); ////Получаем контекст окна приложения
HPEN Pen; 
HBRUSH Brush; 
 
Pen= CreatePen( PS_SOLID, 2, RGB(255,255,255)); //Используется для установки цвета, стиля, ширины и режима пера
SelectObject( hDC, Pen ); 
SetBkColor(hDC, RGB(255,255,255));
MoveToEx( hDC, 250, 30, NULL ); //Определяет текущую позицию пера
LineTo( hDC, 450, 30 ); //Рисует прямую до заданной точки
 
 
Pen= CreatePen( PS_SOLID, 2, RGB(255,255,255)); 
SelectObject( hDC, Pen ); 
MoveToEx( hDC, 250, 30, NULL ); 
LineTo( hDC, 200, 100 ); 
MoveToEx( hDC, 450, 30, NULL ); 
LineTo( hDC, 500, 100 ); 
LineTo( hDC, 200, 100 ); 
MoveToEx( hDC, 450, 30, NULL ); 
LineTo( hDC, 500, 3 ); 
 
Brush= CreateSolidBrush( RGB(20,20,20)); 
SelectObject( hDC, Brush ); 
RoundRect(hDC, 80, 100, 500, 200,10,30); 
 
Brush= CreateSolidBrush( RGB(30,30,30)); 
SelectObject( hDC, Brush ); 
Ellipse(hDC,150,150,240,240);
Ellipse(hDC,360,150,450,240); 
Brush= CreateSolidBrush( RGB(255,255,255)); 
SelectObject( hDC, Brush ); 
Ellipse(hDC,170,170,220,220); 
Ellipse(hDC,380,170,430,220); 
 
MoveToEx( hDC, 330, 30, NULL ); 
LineTo( hDC, 330, 200); 
MoveToEx( hDC, 80, 120, NULL ); 
LineTo( hDC, 500, 120); 
 
Brush= CreateSolidBrush( RGB(255,100,10)); 
SelectObject( hDC, Brush ); 
RoundRect(hDC, 80, 120, 100, 155,10,10); 
RoundRect(hDC, 480, 120, 500, 155,10,10); 
 
Brush= CreateSolidBrush( RGB(20,20,20)); 
SelectObject( hDC, Brush ); 
/*RoundRect(hDC, 100, 155, 150, 200,10,10);*/ 
RoundRect(hDC, 290, 120, 320, 130,5,5); 
system("pause"); 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.12.2015, 20:48
Ответы с готовыми решениями:

Нарисовать двигающуюся точку
На вики PascalABC.NET есть статья про OpenGL в которой есть только пример кода, который выводит статичный зеленый квадрат на экран. ...

Нарисовать машинку, двигающуюся по дороге
Нарисовать машинку, двигающуюся по дороге. Движение и останов машинки реализовать по нажатию на клавиши клавиатуры. Помогите пожалуйста...

Нарисовать машину
Всем привет. Как нарисовать такую машину на PascalABС, GraphABC? Помогите пожалуста

1
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
03.12.2015, 21:32
Чтобы машина двигалась, придется перейти к полноценному Windows приложению
и обрабатывать событие WM_TIMER.
C++ файл car.cpp
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
#include <windows.h>
 
#define BALL  102
 
int x,dx; // координата и скорость 
 
int WINAPI fn(HWND hwnd,int cmd,WPARAM wp,LPARAM lp)
{
    RECT rc;GetClientRect(hwnd,&rc); // узнать размеры окна
    switch(cmd)
    {
 
    case WM_INITDIALOG:
        x=0; // задание начальных координат
        dx=10;
        SetTimer(hwnd,1,25,NULL); // запуск таймера каждые 25 миллисекунд
        return 1;
    case WM_TIMER: // появилось ссобщение от таймера
        {
            x+=dx; // пересчет координат
            // проверка столкновения с границей
            if(x>rc.right-450)dx=-abs(dx);
            if(x<-100)dx=abs(dx);
            InvalidateRect(hwnd,NULL,TRUE); // команда на перерисовку окна
        }
        return 1;
    case WM_CLOSE:
        EndDialog(hwnd,3); // закрытие окна
        return 1;
    case WM_SIZE:
        InvalidateRect(hwnd,NULL,TRUE);// перерисовка при изменении размера окна
        return 1;
    case WM_COMMAND:
        return 0;
    case WM_PAINT:
        {
 
            PAINTSTRUCT ps;
            HDC hDC = BeginPaint(hwnd, &ps);
            HPEN Pen; 
            HBRUSH Brush; 
 
            Pen= CreatePen( PS_SOLID, 2, RGB(255,255,255)); 
            HPEN PenOld=(HPEN)SelectObject( hDC, Pen ); 
            SetBkColor(hDC, RGB(255,255,255));
            MoveToEx( hDC, 250+x, 30, NULL ); 
            LineTo( hDC, 450+x, 30 ); 
 
 
            MoveToEx( hDC, 250+x, 30, NULL ); 
            LineTo( hDC, 200+x, 100 ); 
            MoveToEx( hDC, 450+x, 30, NULL ); 
            LineTo( hDC, 500+x, 100 ); 
            LineTo( hDC, 200+x, 100 ); 
            MoveToEx( hDC, 450+x, 30, NULL ); 
            LineTo( hDC, 500+x, 3 ); 
 
            Brush= CreateSolidBrush( RGB(20,20,20)); 
            HBRUSH BrushOld=(HBRUSH)SelectObject( hDC, Brush ); 
            RoundRect(hDC, 80+x, 100, 500+x, 200,10,30); 
 
            HBRUSH Brush2= CreateSolidBrush( RGB(30,30,30)); 
            SelectObject( hDC, Brush2 ); 
            Ellipse(hDC,150+x,150,240+x,240);
            Ellipse(hDC,360+x,150,450+x,240); 
            HBRUSH Brush3= CreateSolidBrush( RGB(255,255,255)); 
            SelectObject( hDC, Brush3 ); 
            Ellipse(hDC,170+x,170,220+x,220); 
            Ellipse(hDC,380+x,170,430+x,220); 
 
            MoveToEx( hDC, 330+x, 30, NULL ); 
            LineTo( hDC, 330+x, 200); 
            MoveToEx( hDC, 80+x, 120, NULL ); 
            LineTo( hDC, 500+x, 120); 
 
            HBRUSH Brush4= CreateSolidBrush( RGB(255,100,10)); 
            SelectObject( hDC, Brush4 ); 
            RoundRect(hDC, 80+x, 120, 100+x, 155,10,10); 
            RoundRect(hDC, 480+x, 120, 500+x, 155,10,10); 
 
            SelectObject( hDC, Brush ); 
            /*RoundRect(hDC, 100, 155, 150, 200,10,10);*/ 
            RoundRect(hDC, 290+x, 120, 320+x, 130,5,5); 
            SelectObject(hDC,BrushOld);
            SelectObject(hDC,PenOld);
            DeleteObject(Pen);
            DeleteObject(Brush);
            DeleteObject(Brush2);
            DeleteObject(Brush3);
            DeleteObject(Brush4);
            EndPaint(hwnd, &ps);
    }
    return 1;
}
return 0;
}
int WINAPI WinMain(HINSTANCE hi,HINSTANCE,LPSTR,int) 
{
    return DialogBox(hi,MAKEINTRESOURCE(BALL),NULL,(DLGPROC)fn);
}
Ресурс файл car.rc
Bash
1
2
3
4
5
6
7
8
#include "windows.h"
#define BALL  102
 
BALL DIALOGEX 0, 0, 500, 250
STYLE  WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
CAPTION "Moving"
BEGIN
END
Оба файла подключить к проекту имеющему тип "Windows Application"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.12.2015, 21:32
Помогаю со студенческими работами здесь

Нарисовать машину
Нарисовать машину. Помогите... Кто сможет?

Нарисовать машину
Необходимо с помощью canvas нарисовать автомобиль и сделать так, чтобы он ехал по прямой и у него вращались колеса

Нарисовать машину
В работе домик,забор,луна,звезды,но когда помещаю туда машину пишет ошибку,помогите сделать чтобы все работало и машина была на фоне домика

Нарисовать красочную машину
Пожалуйста напишите программы чтобы нарисовать красочную машину в паскале. line, circle и т.д.

Нарисовать движущуюся машину
Вообщем я нарисовал машину, помогите сделать так, что бы она проезжала по плоскости как сейчас стоит. Ещё если не сложно, можете сделать...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru