|
#include
#include
void DrawGreenCircle()
{
SetColor(BLACK);
SetThickness(4);
SetFillColor(GREEN);
FilledCircle(GetMaxX()/2, GetMaxY()/2, 200);
};
void DrawBullsEye()
{
SetColor(BLACK);
SetThickness(2);
SetFillColor(RED);
FilledCircle(GetMaxX()/2,GetMaxY()/2,250);
SetFillColor(WHITE);
FilledCircle(GetMaxX()/2,GetMaxY()/2,200);
SetFillColor(RED);
FilledCircle(GetMaxX()/2,GetMaxY()/2,150);
SetFillColor(WHITE);
FilledCircle(GetMaxX()/2,GetMaxY()/2,100);
SetFillColor(RED);
FilledCircle(GetMaxX()/2,GetMaxY()/2,50);
};
void DrawCar()
{
int x=200, y=300;
SetColor(BLUE);
SetThickness(1);
Rectangle(x,y,x+100,y+25);
Line(x+15,y,x+25,y-25);
Line(x+25,y-25,x+75,y-25);
Line(x+75,y-25,x+85,y);
Circle(x+25,y+25,10);
Circle(x+75,y+25,10);
};
void DrawPixels()
{
for(int i=1; i<=1000001; i++)
{
int pixelX, pixelY;
pixelX=random(GetMaxX());
pixelY=random(GetMaxY());
SetColor(GREEN);
SetPixel(pixelX,pixelY);
}
};
void End()
{
PostQuitMessage(0);
};
class ButtonClass {
public:
ButtonClass(String Text, int X1,int Y1, int X2, int Y2);/* Creates a button with upper left corner at X1,Y1 and lower right corner at X2,Y2 with Text centered in box */
ButtonClass();
void SetButton(String Text, int X1,int Y1, int X2, int Y2);
void Paint();
bool IsHit(int x, int y); /* Returns true if and only if (x,y) is on the button */
private:
int MyX1, MyY1, MyX2, MyY2;
String MyText;
};
//-------------------------------------------------------------------
ButtonClass::ButtonClass()
{
}
//-------------------------------------------------------------------
ButtonClass::ButtonClass(String Text, int X1,int Y1, int X2, int Y2)
:MyText(Text), MyX1(X1), MyY1(Y1), MyX2(X2), MyY2(Y2) /* Creates a button with upper left corner at X1,Y1 and lower right corner at X2,Y2 with Text centered in box */
{
}
//-------------------------------------------------------------------
void ButtonClass::SetButton(String Text, int X1,int Y1, int X2, int Y2) /* Sets button with upper left corner at X1,Y1 and lower right corner at X2,Y2 with Text centered in box */
{
MyText = Text;
MyX1 = X1;
MyY1 = Y1;
MyX2 = X2;
MyY2 = Y2;
}
//-------------------------------------------------------------------
void ButtonClass::Paint()
{
SetColor(BLACK);
SetThickness(2);
Rectangle(MyX1,MyY1,MyX2,MyY2);
gotoxy((MyX1+MyX2)/2, 5+(MyY1+MyY2)/2);
DrawCenteredText(MyText);
}
//-------------------------------------------------------------------
bool ButtonClass::IsHit(int x, int y)
/* Returns true if and only if point (x,y) is on the button */
{
return (x >= MyX1 && x <= MyX2 && y >= MyY1 && y <= MyY2);
}
//-------------------------------------------------------------------
class GuiClass
{
public:
GuiClass();
void GuiMouseClick(int x, int y); // Action if mouse click
void GuiPaint(); // Repaint the entire window
String Title(); // Return the title for the Window
private:
ButtonClass buttonGreenCircle, buttonBullsEye, buttonCar, buttonPixels, buttonEnd;
int LastX;
int LastY;
};
//--------------------------------------------------------------------------------
GuiClass::GuiClass()
:buttonGreenCircle("Green Circle",50,50,150,75),buttonBullsEye("Bullseye",150,50,250,75),buttonCar("Car",250,50,350,75),buttonPixels("Pixels",350,50,450,75),buttonEnd("End",450,50,550,75)
{
}
//--------------------------------------------------------------------------------
String GuiClass::Title()
{
return "Mouse Clicker!";
}
//--------------------------------------------------------------------------------
void GuiClass::GuiMouseClick(int x, int y)
{
LastX=x;
LastY=y;
}
//--------------------------------------------------------------------------------
void GuiClass::GuiPaint()
{
randomize();
buttonGreenCircle.Paint();
buttonBullsEye.Paint();
buttonCar.Paint();
buttonPixels.Paint();
buttonEnd.Paint();
if(buttonGreenCircle.IsHit(LastX,LastY))
DrawGreenCircle();
else if(buttonBullsEye.IsHit(LastX,LastY))
DrawBullsEye();
else if(buttonCar.IsHit(LastX,LastY))
DrawCar();
else if(buttonPixels.IsHit(LastX,LastY))
DrawPixels();
else if(buttonEnd.IsHit(LastX,LastY))
End();
}
//--------------------------------------------------------------------------------
#include
|
|