Basic Univers
Structure Rectangle
X.l
Y.l
R.l
Angle.l
X1.l
Y1.l
X2.l
Y2.l
X3.l
Y3.l
X4.l
Y4.l
EndStructure
Global Rect.Rectangle
Rect\X = 400
Rect\Y = 300
Rect\R = 150
If InitSprite() = 0 Or InitKeyboard()= 0 Or InitMouse()= 0 Or InitSprite3D()= 0 Or InitSound()= 0
MessageRequester("Error", "DirectX 7+ is needed.", 0)
End
EndIf
OpenWindow(0, 0, 0, 800, 600, "Planete Alien ", #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)
Procedure Drawrect()
LineXY(Rect\X1, Rect\Y1, Rect\X2, Rect\Y2, RGB(255, 255, 255))
LineXY(Rect\X2, Rect\Y2, Rect\X3, Rect\Y3, RGB(255, 255, 255))
LineXY(Rect\X3, Rect\Y3, Rect\X4, Rect\Y4, RGB(255, 255, 255))
LineXY(Rect\X4, Rect\Y4, Rect\X1, Rect\Y1, RGB(255, 255, 255))
Circle(Rect\X1, Rect\Y1, 10, RGB(255, 0, 0))
Circle(Rect\X2, Rect\Y2, 10, RGB(255, 0, 0))
Circle(Rect\X3, Rect\Y3, 10, RGB(255, 0, 0))
Circle(Rect\X4, Rect\Y4, 10, RGB(255, 0, 0))
EndProcedure
Procedure Signe(a.l)
If a>0
ProcedureReturn 1
ElseIf a = 0
ProcedureReturn 0
Else
ProcedureReturn - 1
EndIf
EndProcedure
Procedure Coli()
mx = MouseX() : my = MouseY()
xu1 = Rect\X2 - Rect\X1: yu1 = Rect\Y2 - Rect\Y1
c1 = Rect\Y1*xu1 - Rect\X1*yu1
P1 = Rect\X3*yu1 - Rect\Y3*xu1 + c1
AX1 = Mx*yu1 - My*xu1 + c1
xu2 = Rect\X3 - Rect\X2: yu2 = Rect\Y3 - Rect\Y2
c2 = Rect\Y2*xu2 - Rect\X2*yu2
P2 = Rect\X1*yu2 - Rect\Y1*xu2 + c2
AX2 = Mx*yu2 - My*xu2 + c2
xu3 = Rect\X4 - Rect\X3: yu3 = Rect\Y4 - Rect\Y3
c3 = Rect\Y3*xu3 - Rect\X3*yu3
P3 = Rect\X1*yu3 - Rect\Y1*xu3 + c3
AX3 = Mx*yu3 - My*xu3 + c3
xu4 = Rect\X1 - Rect\X4: yu4 = Rect\Y1 - Rect\Y4
c4 = Rect\Y4*xu4 - Rect\X4*yu4
P4 = Rect\X3*yu4 - Rect\Y3*xu4 + c4
AX4 = Mx*yu4 - My*xu4 + c4
If Signe(AX1)= Signe(P1) And Signe(AX2)= Signe(P2) And Signe(AX3)= Signe(P3) And Signe(AX4)= Signe(P4)
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
#DEG=#PI/180
Repeat
ExamineMouse()
ExamineKeyboard()
Rect\X = 400 + 100*Sin(Rect\Angle*#DEG)
Rect\Y = 300 + 100*Cos(Rect\Angle*#DEG)
Rect\Angle + 1
If Rect\Angle>360: Rect\Angle = 0: EndIf
Rect\X1 = Rect\X + Rect\R*Cos((Rect\Angle - 25)*#DEG)
Rect\Y1 = Rect\Y + Rect\R*Sin((Rect\Angle - 25)*#DEG)
Rect\X2 = Rect\X + Rect\R*Cos((Rect\Angle + 25)*#DEG)
Rect\Y2 = Rect\Y + Rect\R*Sin((Rect\Angle + 25)*#DEG)
Rect\X3 = Rect\X + Rect\R*Cos((Rect\Angle + 180 - 25)*#DEG)
Rect\Y3 = Rect\Y + Rect\R*Sin((Rect\Angle + 180 - 25)*#DEG)
Rect\X4 = Rect\X + Rect\R*Cos((Rect\Angle - 180 + 25)*#DEG)
Rect\Y4 = Rect\Y + Rect\R*Sin((Rect\Angle - 180 + 25)*#DEG)
If Coli()
ClearScreen(#Blue)
Else
ClearScreen(0)
EndIf
StartDrawing(ScreenOutput())
Drawrect()
Circle(MouseX(), MouseY(), 10, RGB(0, 255, 0))
StopDrawing()
Delay(1)
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)