С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 5
1

Модель лифта (поездка с определенного этажа вниз или вверх)

28.10.2014, 12:38. Показов 1905. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно сделать модель лифта, то есть просто что бы он ехал с определенного этажа вниз или вверх. Вверх у меня все работает, а в низ не хочет ехать и все, помогите плиз.
Вложения
Тип файла: zip Lift.zip (525.6 Кб, 30 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.10.2014, 12:38
Ответы с готовыми решениями:

Движение лифта вверх и вниз, изображённого в PictureBox
Помогите построить движение лифта вверх и вниз, с графикой просто не дружу. Нужно плавное движение...

Построить этажи, 3 этажа вниз и 3 этажа вправо
Паскаль АВС. построить этажи, 3 этажа вниз и 3 этажа вправо, в общем будет 9 этажей плюс внутри...

вверх вентилятором, или вниз ?
купил новый компьютер. начал его собирать. в корпусе БП находится снизу. прикрутить его можно, как...

NumericUpDown: вверх или вниз?
Необходимо узнать, было нажато уменьшение значения или увеличение. Вариант с запоминанием...

5
Почетный модератор
Эксперт С++
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
28.10.2014, 13:43 2
Для ленивых
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
int lift_up(int lift){
if(i == 50+lift*50)
        Form1->Timer1->Enabled = false;
i += Form1->Timer1->Interval/10;
Form1->Canvas->Brush->Color = clBlue;
Form1->Canvas->Rectangle(w-500,126,500,h-50);
level_print();
Form1->Canvas->Brush->Color = clBlack;
if(i>h-126){
        Form1->Canvas->Rectangle(w-500,h,100,h+50);
        level_print();
        Form1->Canvas->Rectangle(w-500,h-402,500,h-350);
        }
        else Form1->Canvas->Rectangle(w-500,h-i,500,h-i+50);
        if(Form1->Timer1->Enabled == false){
                lev_=lev;
                i=100;
                }
        }
int lift_down(int lift, int lift_, int lift_to){
if(i == lift-lift_*50)
        Form1->Timer1->Enabled = false;
i += Form1->Timer1->Interval/10;
Form1->Canvas->Brush->Color = clBlue;
Form1->Canvas->Rectangle(w-500,126,500,h-50);
level_print();
Form1->Canvas->Brush->Color = clBlack;
if(i>h-502){
        Form1->Canvas->Rectangle(w-500,h,100,h+50);
        level_print();
        Form1->Canvas->Rectangle(w-500,h-100,500,h-100+50);
        }
        else Form1->Canvas->Rectangle(w-500,h-502+i,500,h-502+i+50);
        if(Form1->Timer1->Enabled == false){
                lev_ = lev;
                i=100;
                }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{ Label1->Caption = lev;
Label2->Caption = lev_;
if(lev == lev_)
        return;
if(lev>lev_)
        lift_up(lev);
if(lev<lev_){
lev_to = lev - lev_;
lift_down(lev,lev_to,lev_);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
lev = 1;
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
lev = 2;
Timer1->Enabled = true;
}

Цитата Сообщение от MaLik_ Посмотреть сообщение
Вверх у меня все работает
Только каждый раз начинает с первого этажа, вне зависимости от того, где он до этого находился.
0
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 5
28.10.2014, 16:32  [ТС] 3
Я знаю, я експерементировал, забыл изменить, но мне нужна сама функция lift_down что то сделать, что бы опускался в низ...

Добавлено через 2 часа 10 минут
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
int lift_up(int lift){
if(i == 50+lift*50)
        Form1->Timer1->Enabled = false;
i += Form1->Timer1->Interval/10;
Form1->Canvas->Brush->Color = clBlue;
Form1->Canvas->Rectangle(w-500,126,500,h-50);
level_print();
Form1->Canvas->Brush->Color = clBlack;
if(i>h-126){
        Form1->Canvas->Rectangle(w-500,h,100,h+50);
        level_print();
        Form1->Canvas->Rectangle(w-500,h-402,500,h-350);
        }
        else Form1->Canvas->Rectangle(w-500,h-i,500,h-i+50);
        if(Form1->Timer1->Enabled == false){
                lev_=lev;
                }
        }
int lift_down(int lift, int lift_, int lift_to){
if(i == lift-lift_*50)
        Form1->Timer1->Enabled = false;
i += Form1->Timer1->Interval/10;
Form1->Canvas->Brush->Color = clBlue;
Form1->Canvas->Rectangle(w-500,126,500,h-50);
level_print();
Form1->Canvas->Brush->Color = clBlack;
if(i>h-502){
        Form1->Canvas->Rectangle(w-500,h,100,h+50);
        level_print();
        Form1->Canvas->Rectangle(w-500,h-100,500,h-100+50);
        }
        else Form1->Canvas->Rectangle(w-500,h-502+i,500,h-502+i+50);
        if(Form1->Timer1->Enabled == false){
                lev_ = lev;
                }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{ Label1->Caption = lev;
Label2->Caption = lev_;
if(lev == lev_)
        return;
if(lev>lev_)
        lift_up(lev);
if(lev<lev_){
lev_to = lev - lev_;
lift_down(lev,lev_to,lev_);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
lev = 1;
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
lev = 2;
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
lev = 3;
 
Timer1->Enabled = true;
}
Добавлено через 1 минуту
Изменил, не с каждого
0
случайный прохожий
3067 / 2098 / 629
Регистрация: 20.07.2013
Сообщений: 5,632
29.10.2014, 17:20 4
Переписал код заново (проще, чем исправлять). Добавил на форму CSpinEdit (вместо кучи кнопок).
Поместил в лифт человечка (можешь его убрать, функция human).
Хотел сделать бонус (если с 1-го этажа сразу отправиться на 7-ой, то человек совершает суицид или его выкидывает из лифта, далее происходит полет "тела" по параболе), но заковырялся при поиске глюков и забил.
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
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
float stage = 1;
void level_print()
{
  byte i;
 
  Form1->Canvas->Brush->Color = clBlue;
  Form1->Canvas->Rectangle(150, 150, 251, 501);
 
  Form1->Canvas->Pen->Color = clBlack;
  for (i = 0; i < 8; i++)
  {
    Form1->Canvas->MoveTo(150, 150+i*50);
    Form1->Canvas->LineTo(250, 150+i*50);
  }
}
void level(float i)
{
  Form1->Canvas->Brush->Color = clBlack;
  Form1->Canvas->Rectangle(150, 500-i*50, 251, 551-i*50);
}
void human(float i)
{
  Form1->Canvas->Brush->Color = clGreen;
  Form1->Canvas->Pen->Color = clGreen;
  Form1->Canvas->Ellipse(195, 510-i*50, 206, 521-i*50);
 
  Form1->Canvas->MoveTo(200, 521-i*50);
  Form1->Canvas->LineTo(200, 536-i*50);
 
  Form1->Canvas->LineTo(195, 541-i*50);
  Form1->Canvas->MoveTo(200, 536-i*50);
  Form1->Canvas->LineTo(205, 541-i*50);
 
  Form1->Canvas->MoveTo(200, 526-i*50);
  Form1->Canvas->LineTo(195, 531-i*50);
  Form1->Canvas->MoveTo(200, 526-i*50);
  Form1->Canvas->LineTo(205, 531-i*50);
}
void __fastcall TForm1::FormPaint(TObject *Sender)
{
  level_print();
  if (Tag == 0)
  {
    level(1);
    human(1);
    // если необходимые свойства CSpinEdit не заданы заранее, то убери комментарии
    // CSpinEdit1->EditorEnabled = 0;
    // CSpinEdit1->MaxValue = 7;
    // CSpinEdit1->MinValue = 1;
    // CSpinEdit1->Value = 2;
  }
  else
    Tag = 1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Timer1->Enabled = 1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  Refresh();
  level_print();
  level(stage);
  human(stage);
  if (fabs(stage - (float)CSpinEdit1->Value) <= 0.01)
    Timer1->Enabled = 0;
  else
    (float)CSpinEdit1->Value > stage ? stage+=0.01 : stage-=0.01;
}
Миниатюры
Модель лифта (поездка с определенного этажа вниз или вверх)  
2
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 5
30.10.2014, 12:47  [ТС] 5
Извини, но не мог бы ты скинуть проект, а то у меня что не получается запустить...

Добавлено через 31 минуту
Есть правда баг, едет лифт, только когда разница между этажами 3...
0
случайный прохожий
3067 / 2098 / 629
Регистрация: 20.07.2013
Сообщений: 5,632
30.10.2014, 22:10 6
У тебя Buider 6, а у меня XE5, смысл скидывать проект? На тонкости я указал.
Насчет бага - ты ошибаешься. Уточню лишь - если при движении менять значение SpinEdit, то "лифт" будет двигаться с учетом нового значения.
Вложения
Тип файла: zip lift.zip (58.7 Кб, 33 просмотров)
0
30.10.2014, 22:10
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.10.2014, 22:10
Помогаю со студенческими работами здесь

Летит вниз или вверх?
Как определить направление вектора скорости? Что бы понять летит что-то вверх или вниз?

когда захожу на страницу у меня все время страница вверх вниз вверх вниз и так продолжается все время
У меня была видеокарта Gt 7300 256 mb!Игры ишли,даже сталкер ишел хоть и насреднем и она меня...

SlideToggle анимация вниз или вверх
Как сделать анимацию сворачивания slideToggle() не вниз, а вверх? Имеется две почти идентичные...

ListBox переместит выбранный пункт вниз или вверх
Есть lisbox с 5 пунктами. Надо, чтобы с помощью кнопок &quot;вверх&quot; или &quot;вниз&quot; перемещался выбранный...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru