Graphics - Random Pixels/Shapes?!

My computer science teacher assigned a problem that requires showing random shapes and colors to the screen. This is the prompt:

"Write a program that will cut the screen into 4 equal sections and then place the following items randomly in only one of the sections. Please note each item will only be found in one section, they can not overwrite parts of another section, and they should put random amounts/colors of each type at random locations in each section. The program should run until the user presses a key. Item Types: Cricles, Rectangles, Lines, Pixels."

This is what I have so far:
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
//Library Section
#include <conio.h>
#include <iostream>
#include <iomanip>
#include <string>
#include <ExtraLibrary.h>
#include <vector>
#include <time.h>
#include <cstdlib>
#include <fstream>
#include <apmatrix.h>
#include <graphics.h>
#include <winbgi.cpp>
using namespace std;


//struct section

//const section

//global var section
char Ans;
int GrDriver, GrMode, ErrorCode;
int I;
//prototype section
void gr_start(int&,int&,int&);

//main section
void main()
{
	srand(time(NULL));

	gr_start(GrDriver, GrMode, ErrorCode);
	do{
		//making the quadrants
		line(getmaxx()/2,0,getmaxx()/2,getmaxy());
		line(0,getmaxy()/2,getmaxx(),getmaxy()/2);


		//making random pixels in a quadrant
		for(I=0;I<rand();I++)
		{
			putpixel(I,getmaxy()/2,rand()%15);
		}


		cout<<"Press any button to continue."<<endl;
		cin>>Ans;
		}while(Ans=='y'||Ans=='Y');
	closegraph();
	}








void gr_start(int&GrDriver, int&GrMode, int&ErrorCode)
{

		//Set the Draphics Driver
		GrDriver=VGA;
		//Set Graphics Mode - Screen Size is part
		GrMode=VGAMAX;
		//Start Graphics
		initgraph(&GrDriver, &GrMode,"");
		//Check for Problems
		ErrorCode=graphresult();
		if(ErrorCode!=grOk)
		{
			cout<<"Error:"<<ErrorCode;
			getch();
		}
		
}



Any tips on how to properly put these shapes perfectly into the quadrants? (And I know the code for the pixel generation is incorrect...)

Last edited on
Finding the center point of the quadrants is what? This would become the center of the shapes, would it not?

What are the Equations of the of the shapes? Like 2(pie)(radius) is the circumference. Or the Unit circle with sin or cos.

Pixels is just spacing them out and maybe changing their color as I iterate through rows and columns. Lines would be picking the starting x,y and drawing to a ending x,y. Rectangles are just a set of lines like any polygon.

You have the basic start for one of these programs. It is just a bunch of math and plotting them.
Okay, I've made a slightly improved version:
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
//Library Section
#include <conio.h>
#include <iostream>
#include <iomanip>
#include <string>
#include <ExtraLibrary.h>
#include <vector>
#include <time.h>
#include <cstdlib>
#include <fstream>
#include <apmatrix.h>
#include <graphics.h>
#include <winbgi.cpp>
using namespace std;


//struct section

//const section

//global var section

int GrDriver, GrMode, ErrorCode;
char Ans;
int I;
int RandomColor;
double RandomX;
double RandomY;
int RandomRadius;
//prototype section
void gr_start(int&,int&,int&);

//main section
void main()
{
	srand(time(NULL));

	gr_start(GrDriver, GrMode, ErrorCode);

	getmaxx();
	getmaxy();
	setcolor(3);

	//Making the quadrants
	line(getmaxx()/2,0,getmaxx()/2,getmaxy());
	line(0,getmaxy()/2,getmaxx(),getmaxy()/2);

	while(!kbhit())
	{
		I=rand()%4;
	switch(I)
	{
		case 0:
			//1st quadrant
				RandomX=(rand()%getmaxx()/2);
				RandomY=(rand()%getmaxy()/2);
				RandomColor=(rand()&15)+1;
				circle(RandomX,RandomY,RandomRadius);

		case 1:
			//2nd quadrant
			
				RandomX=(rand()%getmaxx()/2)+getmaxx()/2;
				RandomY=(rand()%getmaxy()/2);
				RandomColor=(rand()&15);

				setcolor(RandomColor);
				putpixel(RandomX,RandomY,RandomColor);

		case 2:
			//3rd quadrant
			
				RandomX=(rand()%getmaxx()/2);
				RandomY=(rand()%getmaxy()/2)+getmaxy()/2;
				RandomColor=(rand()%15)+1;

				setcolor(RandomColor);
				rectangle(RandomX,RandomY,RandomX,RandomY);

		case 3:
			//4th quadrant
			
				RandomX=(rand()%getmaxx()/2)+getmaxx()/2;
				RandomY=(rand()%getmaxy()/2)+getmaxy()/2;
				RandomColor=(rand()&15)+1;


				setcolor(RandomColor);
				line(20,20,30,30);

				break;
		}

	}
		cout<<"Press any button to continue."<<endl;
		getch();
		closegraph();
	
}







void gr_start(int&GrDriver, int&GrMode, int&ErrorCode)
{

		//Set the Draphics Driver
		GrDriver=VGA;
		//Set Graphics Mode - Screen Size is part
		GrMode=VGAMAX;
		//Start Graphics
		initgraph(&GrDriver, &GrMode,"");
		//Check for Problems
		ErrorCode=graphresult();
		if(ErrorCode!=grOk)
		{
			cout<<"Error:"<<ErrorCode;
			getch();
			exit(1);
		}
		
}


I haven't come up with a code to make the "RandomRadius" int, but the lines and rectangles won't work! Only the pixel section does.
Topic archived. No new replies allowed.