Vẽ hình đèn giao thông bằng C++

Chương trình của em ô tô đã chạy được rồi nhưng giờ em muốn tạo 1 đèn giao thông xong random 2 màu đỏ và xanh… đến đỏ thì dừng và xanh thì đi tiếp thì như thế nào ạ…mong mn giúp :((

1 Like

game này là hàng cây di chuyển, xe đứng yên phải không bạn

1 Like

xe di chuyển và cây đứng yên b ạ

có thể tính khoảng cách xe với đèn báo hiệu là bao nhiêu đó rồi nếu đèn xanh thì đi tiếp đèn đỏ thì dừng lại

1 Like
#include<iostream>
using namespace std;
#include<graphics.h>
#include<stdlib.h>
#include<time.h>

int main()
{

	
	                                //CHUONG TRINH DO HOA SU CHUYEN DONG CUA O TO 
	int x;
	char a[]=" ";
	int gd = DETECT , gm;
	initgraph(&gd , &gm , a);
	
														// TAO KHUNG XE
 

	int i,j;
	for(int k = 0 ; k < 1 ; k++)
	{
		for (int i = 0 ; i < 620 ; i++)//Su chuyen dong keo dai 
		
		{
			 //AB : duong thang do dai 210, o dong 200
			line(0 + i , 300 , 210 + i , 300);
			
			 //EF : duong cheo tu dong 200 len 170
			line(50 + i , 300 , 70 + i , 270);
			
			 //FG : duong thang tu 70 den 140  tren dong 170
			line(70 + i , 270 , 140 + i , 270);
			
			 //GH : duong cheo tu dong 170 xuong 200
			line(140 + i , 270 , 160 + i , 300);
			
			 //IJ : duong thang dong 170 xuong 200
			line(90 + i , 270 , 90 + i , 300);
			
			 //LK : duong thang tu dong 170 xuong 200
			line(120 + i , 270 , 120 + i , 300);
			
			 //AD : duong thang tu dong 200 xuong 230
			line(0 + i , 300 , 0 + i , 330);
			
			 //BC : duong thang tu dong 200 xuong 230
			line(210 + i , 300 , 210 + i , 330);
			
														// TAO BANH XE
									
			
			  // Tao duong thang dong 230
			line(0 + i , 330 , 50 + i , 330);
			
			 // Tao 1 hinh tron r=15 dong 230
			circle(65 + i , 330 , 15);
			
			 // Tao duong thang dong 230
			line(80 + i ,330 , 130 + i , 330);
			
			 // Tao 1 hinh tron r=15 dong 230
			circle(145 + i , 330 , 15);
			
			 // Tao duong thang dong 230
			line(160 + i , 330  ,210 + i ,330);
			
			 // Tao mau xanh cho o to
			setcolor(GREEN);
			 
			 // Duong banh xe di
			 line(0 , 240 , 950 , 240);
			line(0 , 385 , 950 , 385);
			
			 // Tao mau xanh cho 2 banh
			setfillstyle(SOLID_FILL,BLUE);
			
			
			floodfill(65 + i , 329 , GREEN);
			
			
			floodfill(146 + i , 329 , GREEN);	
				
			
				delay(20); // dieu chinh di nhanh or cham
			cleardevice(); // xe chay
			
											
			
											
														// Tao cay 1
											
								
														
			line (100,230,150,230);
			
			line (100,230,100,150);
			
			line (150,230,150,150);
			
			line (50,190,125,130);
			
			line(200,190,125,130);
			
			line (50,190,100,110);
			
			line(200,190,150,110);
			
			line(50,150,100,110);
			
			line(150,110,200,150);
			
			line(50,150,75,90);
			
			line(200,150,175,90);
			
			line(75,90,50,110);
			
			line(175,90,200,110);
			
			line(50,110,125,10);
			
			line(200,110,125,10);
			
			
														// Tao cay 2
														
			
			line (300,230,350,230);
			
			line (300,230,300,150);
			
			line (350,230,350,150);
			
			line (250,190,325,130);
			
			line(400,190,325,130);
			
			line (250,190,300,110);
			
			line(400,190,350,110);
			
			line(250,150,300,110);
			
			line(350,110,400,150);
			
			line(250,150,275,90);
			
			line(400,150,375,90);
			
			line(275,90,250,110);
			
			line(375,90,400,110);
			
			line(250,110,325,10);
			
			line(400,110,325,10);
			
			
														// Tao cay 3
														
														
			line (500,230,550,230);
			
			line (500,230,500,150);
			
			line (550,230,550,150);
			
			line (450,190,525,130);
			
			line(600,190,525,130);
			
			line (450,190,500,110);
			
			line(600,190,550,110);
			
			line(450,150,500,110);
			
			line(550,110,600,150);
			
			line(450,150,475,90);
			
			line(600,150,575,90);
			
			line(475,90,450,110);
			
			line(575,90,600,110);
			
			line(450,110,525,10);
			
			line(600,110,525,10);
			
	}

	getch();
	closegraph();
	return 0;
}
}

giờ ý tưởng của e định là vẽ cái đèn giao thông…nhưng mà em hỏi cách random 2 màu đỏ và xanh…đỏ thì dừng và xanh thì đi tiếp ạ

thì có hàm random đó random số trong khoảng 100 chẳng hạn để dễ tính phần trăm, thì nếu nhỏ hơn 50 thì tạo đèn xanh, hoặc đèn đỏ

1 Like

e random nó chỉ ra trên màn hình console chứ k hiện màu trên màn hình đồ họa ạ…a có thể code thử giúp e đc k ạ :frowning:

thì bạn phải viết hàm vẽ đèn như bạn vẽ xe với cây chứ, rồi sau đó random màu

1 Like

VÂNG…vẽ đèn thì e vẽ đc r…nhưng e đang tìm cách random ạ…vậy e vẽ đèn rồi a xem giúp e ạ

Đèn đây a…anh thử code random giúp e với ạ

//TAO DEN GIAO THONG
								
		line (500,230,550,230);
		line (500,230,500,150);
		line (550,230,550,150);
		line (450,150,600,150);
		line (450,150,450,10);
		line (450,10,600,10);
		line (600,10,600,150);
		
		circle(525 , 80 , 65);

Thấy bạn đổ màu cho bánh xe (màu xanh dương) được. Thế mà đổ màu cho đèn không được à?

int r = ... // tạo ngẫu nhiên từ 0 - 100.
// đổ màu cho đèn
if(r < 50){
floodfill(x, y , GREEN);
} else {
floodfill(x, y , RED);
}
3 Likes

Tạo màu cố định thì đc nhưng random nó lại lỗi bạn ạ

Lỗi gì? Đừng nói là gọi ngẫu nhiên trong vòng lặp nhé!

3 Likes

Ak đc r bạn…nma h muốn đèn đỏ thì dừng…bạn có thể code mk tham khảo k ?

Bạn hãy thiết lập điểm dừng khi đèn đỏ, vòng lặp thay vì chạy đến 620 (khi đèn xanh) thì sẽ chỉ chạy đến số nhỏ hơn (500 chẳng hạn).
Con số này được tính cũng dựa vào giá trị ngẫu nhiên kia.

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?