Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // elements.h
- #ifndef ELEMENTS_H
- #define ELEMENTS_H
- #include <QtGui>
- #include <time.h>
- class Car : public QObject // машинка
- {
- private:
- int x; // координаты
- int y;
- short int direction; // направление
- short int Turn; // значение поворота, которое должна сделать машинка
- int tc;
- public:
- Car(int nx, int ny, int ndirection); // конструктор
- void show(QPainter *painter); // рисовалка
- void moving(); //движение
- void turn();
- public slots:
- void slotTC(int tc_color); // слот, принимающий значение сигнала светофора
- };
- class TrafficLight : public QObject // светофор
- {
- protected:
- int x1, y1, x2, y2, a; // координаты, угол наклона полукруга
- int radius; // радиус полукруга
- int position; // метоположение
- int Traffic_Color; // цвет
- public:
- TrafficLight(int npos, int ncolor);
- void light (int nt_red, int nt_yellow, int nt_green, int nc); // светить, принимает время, через которое должен сменяться сигнал
- void show(QPainter *painter); // рисовалка
- void SendTCS();
- signals:
- void signalTC(int tc_color);
- };
- #endif // ELEMENTS_H
- // из elements.cpp
- void Car::slotTC(int tc_color)
- {
- tc = tc_color;
- }
- void TrafficLight::light (int nt_red, int nt_yellow, int nt_green, int nc)
- {
- Traffic_Color = nc;
- SendTCS();
- }
- void TrafficLight::SendTCS()
- {
- emit signalTC(Traffic_Color);
- }
- // соединение
- Road::Road(QWidget *parent)
- : QWidget(parent)
- {
- painter = new QPainter(); //художник
- setFixedSize(450,450);
- //============ вспомогательные переменные ===============
- time = 1;
- Car1 = new Car(150,-128,1);
- Car2 = new Car(450,150,2);
- Car3 = new Car(250,450,3);
- Car4 = new Car(-128, 250, 4);
- TL1 = new TrafficLight(1,1);
- TL2 = new TrafficLight(2,2);
- TL3 = new TrafficLight(3,3);
- TL4 = new TrafficLight(4,1);
- startTimer(15);
- }
- //==================================================
- void Road::paintEvent(QPaintEvent* event) // event служит для определения координат и размеров
- //конкретной области виджета, которую нужно перерисовать
- {
- painter->begin(this); //начинаем рисовать в окне
- painter->drawImage(0,0,QImage("://images/crossroad.jpg"));
- TL1->show(painter);
- TL2->show(painter);
- TL3->show(painter);
- TL4->show(painter);
- Car1->moving();
- Car1->show(painter);
- Car2->moving();
- Car2->show(painter);
- Car3->moving();
- Car3->show(painter);
- Car4->moving();
- Car4->show(painter);
- connect(TL1, SIGNAL(signalTC(int)), Car1, SLOT(slotTC(int)));
- connect(TL2, SIGNAL(signalTC(int)), Car2, SLOT(slotTC(int)));
- connect(TL3, SIGNAL(signalTC(int)), Car3, SLOT(slotTC(int)));
- connect(TL4, SIGNAL(signalTC(int)), Car4, SLOT(slotTC(int)));
- painter->end();//освобождаем окно
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement