Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: đồ họa giao thông

  1. #1
    Ngày gia nhập
    12 2017
    Bài viết
    4

    Mặc định đồ họa giao thông

    Xin chào mọi người mình có một chương trình mong mọi người giúp đỡ
    hiện tại mình ko biết làm sao để di chuyển xe sao cho đến ngã tư nếu đèn xanh thì chạy tiếp, đèn đỏ thì dừng lại và làm sao để di chuyển xe ở bên trái đường sang phải nếu nó ko chạm vào xe kia

    // oop6.cpp: определяет точку входа для консольного приложения.
    //

    #include “stdafx.h”
    #include
    #include <Windows.h>
    #include <windowsx.h>
    #include <tchar.h>
    #include <time.h>
    #include <stdio.h>
    using namespace std;

    void wait(int seconds)
    {
    clock_t endwait;
    endwait = clock() + seconds * CLOCKS_PER_SEC;
    while (clock() < endwait) {}
    }
    // Класс ФИГУРА
    class Figure
    {
    protected:
    HWND hWnd;
    HDC hDC;

    COLORREF Color;
    int CenterX;
    int CenterY;
    public:
    Figure(HWND _hWnd, int iCenterX, int iCenterY)
    {
    hWnd = _hWnd;
    hDC = GetDC(_hWnd);//Получаем контекст устройства по полученному дескриптору

    Color = RGB(255, 0, 0);
    CenterX = iCenterX;
    CenterY = iCenterY;
    }
    virtual ~Figure(void)
    {
    ReleaseDC(hWnd, hDC);
    }

    void SetNewColor(COLORREF NewColor)
    {
    Hide();
    Color = NewColor;
    Show();
    }

    virtual void Show() = 0;
    virtual void Hide()
    {
    COLORREF prev_col = Color;
    Color = RGB(0, 0, 0);
    Show();
    Color = prev_col;
    }

    void Move(int DeltaX, int DeltaY)
    {
    Hide();
    CenterX += DeltaX;
    CenterY += DeltaY;
    Show();
    }
    };

    // Класс ОКРУЖНОСТЬ
    class Circle : public Figure
    {
    private:
    int Radius;
    public:
    Circle(HWND _hWnd, int iCenterX, int iCenterY, int iRadius) : Figure(_hWnd, iCenterX, iCenterY)
    {
    Radius = iRadius;
    }
    void Show();

    };

    // Класс ПРЯМОУГОЛЬНИК
    class Rectangle_my : public Figure
    {
    private:
    int h; // Высота
    int w; // Ширина
    public:
    Rectangle_my(HWND _hWnd, int iCenterX, int iCenterY, int ih, int iw) :
    Figure(_hWnd, iCenterX, iCenterY)
    {
    h = ih;
    w = iw;
    }
    void Show();
    };
    // Методы ОКРУЖНОСТИ
    void Circle::Show()
    {
    HPEN hPen = CreatePen(PS_SOLID, 1, Color);//установка пера
    HBRUSH hBrush = CreateSolidBrush(Color);
    SelectObject(hDC, hPen);
    SelectObject(hDC, hBrush);

    Ellipse(hDC, CenterX - Radius, CenterY - Radius, CenterX + Radius, CenterY + Radius);

    DeleteObject(hBrush);
    DeleteObject(hPen);
    }
    // Методы ПРЯМОУГОЛЬНИКА
    void Rectangle_my::Show()
    {
    HPEN hPen = CreatePen(PS_SOLID, 1, Color);//установка пера
    HBRUSH hBrush = CreateSolidBrush(Color);
    SelectObject(hDC, hPen);
    SelectObject(hDC, hBrush);

    Rectangle(hDC, CenterX, CenterY, CenterX + w, CenterY + h);

    DeleteObject(hBrush);
    DeleteObject(hPen);
    }

    class Lines : public Figure
    {
    private:
    int h;
    int w;
    public:
    Lines(HWND _hWnd, int iCenterX, int iCenterY, int ih, int iw) :
    Figure(_hWnd, iCenterX, iCenterY)
    {
    h = ih;
    w = iw;
    }
    void Show();
    };
    void Lines::Show()
    {
    POINT lppt;
    HPEN hPen = CreatePen(PS_SOLID, 1, Color);
    HBRUSH hBrush = GetStockBrush(NULL_BRUSH);
    SelectObject(hDC, hPen);
    SelectObject(hDC, hBrush);
    MoveToEx(hDC, CenterX, CenterY, &lppt);
    LineTo(hDC, CenterX + h, CenterY + w);
    DeleteObject(hBrush);
    DeleteObject(hPen);
    }

    // Головная функция
    int main()
    {
    HWND hWnd = GetConsoleWindow(); //Получаем дескриптор окна консоли
    COLORREF Color;
    HBRUSH hBrush;
    Lines L1(hWnd, 0, 200, 600, 0);
    Lines L2(hWnd, 600, 200, 0, -200);
    Lines L3(hWnd, 750, 0, 0, 800);
    Lines L4(hWnd, 900, 0, 0, 200);
    Lines L5(hWnd, 900, 200, 500, 0);
    Lines L6(hWnd, 0, 500, 600, 0);
    Lines L7(hWnd, 600, 500, 0, 300);
    Lines L8(hWnd, 900, 800, 0, -300);
    Lines L9(hWnd, 900, 500, 500, 0);
    Lines L10(hWnd, 0, 350, 1400, 0);
    Lines L11(hWnd, 270, 380, 30, 20);
    Lines L22(hWnd, 300, 400, 30, -20);
    Lines L12(hWnd, 920, 200, 0, -150);
    Lines L13(hWnd, 920, 50, 70, 0);
    Lines L14(hWnd, 990, 50, 0, 150);
    Circle C1(hWnd, 955, 175, 20);
    Circle C2(hWnd, 955, 125, 20);
    Circle C3(hWnd, 955, 75, 20);
    Circle C4(hWnd, 30, 270, 10);
    Circle C5(hWnd, 90, 270, 10);
    Circle C6(hWnd, 275, 460, 10);
    Circle C7(hWnd, 325, 460, 10);
    Figure *R1;
    R1 = new Rectangle_my(hWnd, 10, 210, 50, 100);
    Figure *R2;
    R2 = new Rectangle_my(hWnd, 350, 450, -50, -100);
    L1.Show();
    L2.Show();

    if (HPEN hPen = CreatePen(PS_DASH, 1, Color = RGB(153, 153, 153)))
    {
    L3.Show();
    L3.SetNewColor(Color);
    L10.Show();
    L10.SetNewColor(Color);
    }
    L4.Show();
    L5.Show();
    L6.Show();
    L7.Show();
    L8.Show();
    L9.Show();
    L11.Show();
    L22.Show();
    L12.Show();
    L13.Show();
    L14.Show();

    if (Color = RGB(0, 255, 0))
    {
    C1.Show();
    C1.SetNewColor(Color);
    }

    if (Color = RGB(255, 255, 0))
    {
    C2.Show();
    C2.SetNewColor(Color);
    }

    C3.Show();

    if (Color = RGB(0, 0, 255))
    {
    C4.Show();
    C4.SetNewColor(Color);
    C5.Show();
    C5.SetNewColor(Color);
    }

    if (Color = RGB(255, 153, 51))
    {
    C6.Show();
    C6.SetNewColor(Color);
    C7.Show();
    C7.SetNewColor(Color);
    }

    if (Color = RGB(153, 51, 255))
    {
    R2->Show();
    R2->SetNewColor(Color);
    }

    if (Color = RGB(51, 255, 255))
    {
    R1->Show();
    R1->SetNewColor(Color);
    }

    std::cin.get();



    delete R1;
    delete R2;

    return 0;
    }


    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		Chưa có tên.jpg
Lần xem:	4
Size:		43.7 KB
ID:		66358

  2. #2
    Ngày gia nhập
    09 2010
    Nơi ở
    Hà Nôi
    Bài viết
    464

    Mình ko xem code nhưng chắc mỗi xe sẽ có bounding box (x, y, width, height).
    Bạn không tăng x thì xe nó đứng yên, còn thay đổi y để các xe nó ở vị trí làn khác nhau.
    Nhận code thuê :
    kiet.heros@gmail.com

  3. #3
    Ngày gia nhập
    12 2017
    Bài viết
    4

    nhưng mình ko biết làm sao để xe chạy độc lập với đèn giao thông, đèn liên tục chuyển màu và xe thì chạy
    đến ngã tư xe gặp đèn đỏ thì sẽ dừng lại

  4. #4
    Ngày gia nhập
    07 2018
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi Tai2 Xem bài viết
    nhưng mình ko biết làm sao để xe chạy độc lập với đèn giao thông, đèn liên tục chuyển màu và xe thì chạy
    đến ngã tư xe gặp đèn đỏ thì sẽ dừng lại
    Ví dụ X xe đang chạy theo chiều ngang, X là chiều chạy, Y là làn thì kiểm tra X hiện tại đã đến chỗ dừng của ngã tư chưa nếu chưa thì cho xe chạy, nếu đã đến vị trí dừng thì kiểm tra xem đèn hiện tại là màu gì, nếu là màu đỏ thì dừng xe ngược lại cho chạy. Trường hợp chạy dọc thì đảo X, Y. Chắc z =))))))

    Code:
    if(X == Vi_Tri_Nga_Tu_X){
            if(Mau_Den == RED){
                      Dừng_Xe;
            }else{
                      Cho_Xe_Chay;
            }
    }else{
            Cho_Xe_chạy;
    }
    - - - Nội dung đã được cập nhật ngày 12-12-2018 lúc 02:38 PM - - -

    1. Mình ko đọc chương trình trên nên chỉ ghi hướng giải quyết bằng lời thôi
    2. Để xe phía sau không chạm vào xe phía trước thì cần xác định các giá trị sau:
    - Khi vẽ để gốc tọa độ của vẽ là ở đâu, vd: Gốc ở góc trái phía trên.
    - Bước dịch của xe (bước di chuyển của xe một lần dịch sang). Vd: Bước dịch của xe là 5px 1 lần dịch.
    - Chiều dài của xe đang chạy, vd: Xe có kích thước là (dài = 50, rộng = 10). Nếu 1 hàng/làn thì ko cần chiều rộng.
    3. Khi xe chạy phải kiểm tra phía trước có vật cản hay ko, bước dịch và chiều xài của xe hiện tại là bao nhiêu để xác định điểm dừng an toàn cho xe đang chạy tránh đâm vào xe phía trc. Vd:
    - Xe trc dừng ở vị trí (ngang,dọc) = (300, 80). Xe sau đang ở vị trí (20, 80) có chiều dài xe là 50, bước dịch là 5.
    - Để xe dừng ko bị đâm thì cần ít nhất khoảng trống ở giữa 2 xe là 5 do đó tọa độ bắt buộc phải dừng là 300 - 50 - 5 = 245 (245, 80)
    Đã được chỉnh sửa lần cuối bởi tkdlbhvn : 12-12-2018 lúc 02:48 PM.

  5. #5
    Ngày gia nhập
    12 2017
    Bài viết
    4

    bạn có tài liệu gì liên quan đến phần này không cho mình xin với, mình đang cần gấp mà ko biết đọc ở đâu

  6. #6
    Ngày gia nhập
    07 2018
    Bài viết
    7

    Mặc định đồ họa giao thông

    Trích dẫn Nguyên bản được gửi bởi Tai2 Xem bài viết
    bạn có tài liệu gì liên quan đến phần này không cho mình xin với, mình đang cần gấp mà ko biết đọc ở đâu
    mình cho bạn tham khảo cái code này:
    Code:
    #include <addgraphics.h>
    #include <stdio.h>
    int WWindow = 800, HWindow = 500, clbk = LGREY;
    const char* TenWindow = "Mo Phong Giao Thong";
    
    void CreateRoad(int TamNgaTuX, int TamNgaTuY, int ChieuRongLan);
    void DrawCar(int x, int y, int dai, int rong, int cl);
    void DelCar(int x, int y, int dai, int rong, int cldel);
    void DrawLamp(int x, int y, int R, int cl);
    int x = 30, y = 270;
    char PressKey;
    int EndRoad = 675;
    int CheckLamp = 235;
    int clLamp = LGREEN;
    struct InfoCar{
    	int dai;
    	int rong;
    	int x;
    	int y;
    	int CheckLamp;
    	int cl;
    	int cldel;
    	int ECrCar;
    };
    int main(int argc, char *argv[])
    {
    	InfoCar Car_1;
    	InfoCar Car_2;
    	
    	Car_1.dai = 100;
    	Car_1.rong = 20;
    	Car_1.x = 30;
    	Car_1.y = 270;
    	Car_1.CheckLamp = 235 + 100 - Car_1.dai;
    	Car_1.cl = BLUE;
    	Car_1.cldel = clbk;
    	Car_1.ECrCar = 0;
    	
    	Car_2.dai = 80;
    	Car_2.rong = 20;
    	Car_2.x = 30;
    	Car_2.y = 270;
    	Car_2.CheckLamp = 235 + 100 - Car_2.dai;
    	Car_2.cl = YELLOW;
    	Car_2.cldel = clbk;
    	Car_2.ECrCar = 0;
    	
    	TaoWindow(WWindow, HWindow, TenWindow, clbk);
    	CreateRoad(WWindow/2, HWindow/2, 120);
    	
    	while(1){
    		delay(1);
    		DrawLamp(500, 150, 30, clLamp);
    		if(kbhit()){
    			PressKey = getch();
    			switch(PressKey){
    				case 'd':
    					if(Car_1.ECrCar == 0 ){
    						if(Car_2.ECrCar == 0){
    							Car_1.x += 5;
    							DelCar(Car_1.x - 5, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cldel);
    							DrawCar(Car_1.x, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cl);
    							Car_1.ECrCar = 1;
    						}else{
    							if(Car_2.x > Car_1.x + Car_1.dai + 5){
    								Car_1.x += 5;
    								DelCar(Car_1.x - 5, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cldel);
    								DrawCar(Car_1.x, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cl);
    								Car_1.ECrCar = 1;
    							}
    						}
    					}
    					if(Car_2.ECrCar == 0){ // Chua co xe 2
    						if(Car_1.x != Car_1.CheckLamp){ // Khong phai cho dung den
    							Car_1.x += 5;
    							DelCar(Car_1.x - 5, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cldel);
    							DrawCar(Car_1.x, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cl);
    						}else{
    							if(clLamp == LGREEN){ // neu dang o cho dung kiem tra mau den
    								Car_1.x += 5;
    								DelCar(Car_1.x - 5, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cldel);
    								DrawCar(Car_1.x, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cl);
    							}
    						}
    					}
    					if(Car_2.ECrCar == 1){ // Da co Xe 2
    						if(Car_1.x != Car_1.CheckLamp){ 
    							if(Car_1.x > Car_2.x){
    								Car_1.x += 5;
    								DelCar(Car_1.x - 5, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cldel);
    								DrawCar(Car_1.x, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cl);
    							}else{
    								if(Car_1.x + Car_1.dai + 5 < Car_2.x){
    									Car_1.x += 5;
    									DelCar(Car_1.x - 5, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cldel);
    									DrawCar(Car_1.x, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cl);
    								}
    							}
    						}else{
    							if(clLamp == LGREEN){ 
    								if(Car_1.x > Car_2.x){
    									Car_1.x += 5;
    									DelCar(Car_1.x - 5, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cldel);
    									DrawCar(Car_1.x, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cl);
    								}else{
    										if(Car_1.x + Car_1.dai + 5 < Car_2.x){
    										Car_1.x += 5;
    										DelCar(Car_1.x - 5, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cldel);
    										DrawCar(Car_1.x, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cl);
    									}
    								}
    								
    							}
    						}
    					}
    					if(Car_1.x >= 670){
    						DelCar(Car_1.x, Car_1.y, Car_1.dai, Car_1.rong, Car_1.cldel);
    						Car_1.x = 30;
    						Car_1.ECrCar = 0;
    					}
    					
    					break;
    				case 'e':
    					if(Car_2.ECrCar == 0 ){
    						if(Car_1.ECrCar == 0){
    							Car_2.x += 5;
    							DelCar(Car_2.x - 5, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cldel);
    							DrawCar(Car_2.x, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cl);
    							Car_2.ECrCar = 2;
    						}else{
    							if(Car_1.x > Car_2.x + Car_2.dai + 5){
    								Car_2.x += 5;
    								DelCar(Car_2.x - 5, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cldel);
    								DrawCar(Car_2.x, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cl);
    								Car_2.ECrCar = 1;
    							}
    						}
    					}
    					if(Car_1.ECrCar == 0){ // Chua co xe 1
    						if(Car_2.x != Car_2.CheckLamp){ // Khong phai cho dung den
    							Car_2.x += 5;
    							DelCar(Car_2.x - 5, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cldel);
    							DrawCar(Car_2.x, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cl);
    						}else{
    							if(clLamp == LGREEN){ // neu dang o cho dung kiem tra mau den
    								Car_2.x += 5;
    								DelCar(Car_2.x - 5, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cldel);
    								DrawCar(Car_2.x, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cl);
    							}
    						}
    					}
    					if(Car_1.ECrCar == 1){ // Da co Xe 2
    						if(Car_2.x != Car_2.CheckLamp){ 
    							if(Car_2.x > Car_1.x){
    								Car_2.x += 5;
    								DelCar(Car_2.x - 5, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cldel);
    								DrawCar(Car_2.x, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cl);
    							}else{
    								if(Car_2.x + Car_2.dai + 5 < Car_1.x){
    									Car_2.x += 5;
    									DelCar(Car_2.x - 5, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cldel);
    									DrawCar(Car_2.x, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cl);
    								}
    							}
    						}else{
    							if(clLamp == LGREEN){ 
    								if(Car_2.x > Car_1.x){
    									Car_2.x += 5;
    									DelCar(Car_2.x - 5, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cldel);
    									DrawCar(Car_2.x, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cl);
    								}else{
    										if(Car_2.x + Car_2.dai + 5 < Car_1.x){
    										Car_2.x += 5;
    										DelCar(Car_2.x - 5, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cldel);
    										DrawCar(Car_2.x, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cl);
    									}
    								}
    								
    							}
    						}
    					}
    					if(Car_2.x >= 670){
    						DelCar(Car_2.x, Car_2.y, Car_2.dai, Car_2.rong, Car_2.cldel);
    						Car_2.x = 30;
    						Car_2.ECrCar = 0;
    					}
    					
    					break;
    				case 'o': clLamp = LGREEN;
    					break;
    				case 'p': clLamp = LRED;
    			}
    		}
    	}
    }
    
    void CreateRoad(int TamNgaTuX, int TamNgaTuY, int ChieuRongLan){
    	// Ve duong phan lan
    	setlinestyle(2, 0, 6);
    	setcolor(WHITE);
    		// Duong Ngang
    	line(TamNgaTuX - ChieuRongLan/2, TamNgaTuY, 0 + 20, TamNgaTuY);
    	line(TamNgaTuX + ChieuRongLan/2, TamNgaTuY, WWindow - 20, TamNgaTuY);
    		// Duong Doc
    	line(TamNgaTuX, TamNgaTuY - ChieuRongLan/2, TamNgaTuX, 0 + 20);
    	line(TamNgaTuX, TamNgaTuY + ChieuRongLan/2, TamNgaTuX, HWindow - 20);
    	
    	// Ve duong
    	setlinestyle(0, 0, 3);
    	setcolor(BLACK);
    		// Duong Ngang
    	line(TamNgaTuX - ChieuRongLan/2, TamNgaTuY - ChieuRongLan/2, 0 + 20, TamNgaTuY - ChieuRongLan/2);
    	line(TamNgaTuX - ChieuRongLan/2, TamNgaTuY + ChieuRongLan/2, 0 + 20, TamNgaTuY + ChieuRongLan/2);
    	line(TamNgaTuX + ChieuRongLan/2, TamNgaTuY - ChieuRongLan/2, WWindow - 20, TamNgaTuY - ChieuRongLan/2);
    	line(TamNgaTuX + ChieuRongLan/2, TamNgaTuY + ChieuRongLan/2, WWindow - 20, TamNgaTuY + ChieuRongLan/2);
    		// Duong Doc
    	line(TamNgaTuX - ChieuRongLan/2, TamNgaTuY - ChieuRongLan/2, TamNgaTuX - ChieuRongLan/2, 0 + 20);
    	line(TamNgaTuX + ChieuRongLan/2, TamNgaTuY - ChieuRongLan/2, TamNgaTuX + ChieuRongLan/2, 0 + 20);
    	line(TamNgaTuX - ChieuRongLan/2, TamNgaTuY + ChieuRongLan/2, TamNgaTuX - ChieuRongLan/2, HWindow - 20);
    	line(TamNgaTuX + ChieuRongLan/2, TamNgaTuY + ChieuRongLan/2, TamNgaTuX + ChieuRongLan/2, HWindow - 20);
    	
    	// Ve khung
    	setlinestyle(0, 0, 10);
    	setcolor(BLACK);
    	rectangle(20, 20, WWindow - 20, HWindow - 20);
    }
    void DrawCar(int x, int y, int dai, int rong, int cl){
    	setcolor(cl);
    	setlinestyle(0, 0, 2);
    	rectangle(x, y, x + dai - 30, y + rong);
    	rectangle(x + dai - 25, y, x + dai, y + rong);
    }
    void DelCar(int x, int y, int dai, int rong, int cldel){
    	setcolor(cldel);
    	setlinestyle(0, 0, 2);
    	rectangle(x, y, x + dai - 30, y + rong);
    	rectangle(x + dai - 25, y, x + dai, y + rong);
    }
    void DrawLamp(int x, int y, int R, int cl){
    	setcolor(cl);
    	setlinestyle(0, 0 , 2);
    	circle(x, y, R);
    	setfillstyle(SOLID_FILL, cl);
    	floodfill(x + 5, y + 5, cl);
    	setcolor(BLACK);
    	setlinestyle(0, 0 , 2);
    	circle(x, y, R);
    }
    - Cái code này mình viết trên DEV C++, cái thư viện addgraphics.h ý mình sửa lại từ thư viện graphics.h thôi. nếu bạn có copy code về test thử thì tải cái thư viện graphics.h và winbgim.h trên mạng về.
    - Mình ko dùng thời gian để cho xe chạy mà bấm nút để cho xe chạy. bấm d, e để cho xe 1 và xe 2 chạy; bấm o, p để đổi màu đèn.
    - Bạn muốn cho xe với đèn chạy tự động thì tạo cái chương trình đếm thời gian ý. Đối với đèn thì vd 30s đổi 1 lần thì cứ đếm đủ 30s là đổi màu; đối với xe: thì vd cứ 100ms cho xe 1 chạy, xe thì 150ms. Cái đếm thời gian như nào bạn tự tìm hiểu nhé.
    Click vào hình ảnh để lấy hình ảnh lớn

Tên:		Capture.PNG
Lần xem:	3
Size:		11.5 KB
ID:		66463

  7. #7
    Ngày gia nhập
    12 2017
    Bài viết
    4

    cảm ơn bạn nhiều nhé

  8. #8
    Ngày gia nhập
    12 2017
    Bài viết
    4

    mình cần vẽ nhiều xe trên nhiều làn khác nhau, xe được phép đi thẳng hoặc rẽ khi đến ngã tư thì điều khiển xe như nào vậy, bạn cho mình xin ý tưởng với, minh cần gấp mong bạn giúp đỡ

  9. #9
    Ngày gia nhập
    07 2018
    Bài viết
    7

    Trích dẫn Nguyên bản được gửi bởi Tai2 Xem bài viết
    mình cần vẽ nhiều xe trên nhiều làn khác nhau, xe được phép đi thẳng hoặc rẽ khi đến ngã tư thì điều khiển xe như nào vậy, bạn cho mình xin ý tưởng với, minh cần gấp mong bạn giúp đỡ
    - Bạn tìm điểm tọa độ x, y nào là của làn nào xong vẽ xe vào điểm đó, nếu ở điểm tọa độ này xe chỉ được phép đi theo chiều này (ko đc đi ngc chiều), với chiều ngang thì khóa trục y, chiều dọc thì khóa trục x.
    - Khi tọa độ của xe mà đầu xe đạt tới ngã tư cho cái random điều hướng nữa là được. Khi chạy thẳng, rẽ thì phải kiểm tra phía trước và kế bên ở hướng rẽ có xe ko tránh tông vào nhau

    - - - Nội dung đã được cập nhật ngày 24-12-2018 lúc 04:54 PM - - -

    CÁCH TÌM TỌA ĐỘ CỦA 1 LÀN XE.
    Đối với chiều ngang thì lấy trục y, chiều dọc thì lấy trục x.
    (1) Vẽ một cái xe (dùng cái lệnh vẽ hình chữ nhật), thiết lập phím di chuyển trái, phải, lên, xuống cho nó.
    (2) Cho hiển thị tọa độ của xe hiện tại lên. Dùng phím bấm cho xe di chuyển tới vị trí bạn mong muốn, ghi cái tọa độ đấy ra. Các tọa độ bao gồm: Vị trí xuất phát (vị trí xe bắt đầu xuất hiện trên đường), Vị trí cuối (cuối đường của làn đấy), Vị trí dừng ngã tư (lấy cái vị trí này để cho chạy cái random điều hướng luôn). Ghi các vị trí đó ra và đưa vào chương trình thôi

  10. #10
    Ngày gia nhập
    12 2017
    Bài viết
    4

    mình điều khiển một xe vậy các xe còn lại di chuyển kiểu gì để cũng dừng lại khi đèn đỏ

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn