* * *    
Главная » Статьи » Код PB

Просмотров: 1342 | Дата: 21.06.2025 | Коментарии (0)

Вектор



Code
Enumeration  
 
#point_w1  
 
#point_w2  
 
#point_r  
 
#cursor  
 
EndEnumeration  

 
Structure vector  
 x
.f  
 y
.f  
 x2
.f  
 y2
.f  
 sp
.w  
 sp2
.w  
 
EndStructure  

 
Global NewList vector.vector()  

 
Procedure addvector(x.f,y.f,x2.f,y2.f)  
 
AddElement(vector())  
 vector
()\x=x  
 vector
()\y=y  
 vector
()\x2=x2  
 vector
()\y2=y2  
 vector
()\sp=#point_w1  
 vector
()\sp2=#point_w2  
 
EndProcedure  

 
Procedure MRB(ButtonNumber.b)  
 
Static Appel.b, Appuyee.b, Relachee.b, Memoire.b  
 
If Appel = #False  
 
Relachee = #False  
 
Memoire = #False  
 
Appel = #True  
 
EndIf  
 
Appuyee = MouseButton(ButtonNumber)  
 
If Appuyee = #True  
 
Relachee = #False  
 
Memoire = #True  
 
EndIf  
 
If Appuyee = #False And Relachee = #False And Memoire = #True  
 
Relachee = #True  
 
Appel = #False  
 
EndIf  
 
ProcedureReturn Relachee  
 
EndProcedure  

 
InitSprite()  
 
InitMouse()  
 
InitKeyboard()  
 
OpenScreen(1024,768,32,"Vector")  
 
CreateSprite(#point_w1,6,6)  
 
CreateSprite(#point_w2,6,6)  
 
CreateSprite(#point_r,6,6)  
 
CreateSprite(#cursor,4,4)  

 
StartDrawing(SpriteOutput(#point_w1))  
 
Circle(3,3,3,RGB(255,255,255))  
 
StopDrawing()  
 
StartDrawing(SpriteOutput(#point_w2))  
 
Circle(3,3,3,RGB(255,255,255))  
 
StopDrawing()  

 
StartDrawing(SpriteOutput(#cursor))  
 
Circle(2,2,2,RGB(0,255,0))  
 
StopDrawing()  

 
StartDrawing(SpriteOutput(#point_r))  
 
Circle(3,3,3,RGB(255,0,0))  
 
StopDrawing()  
 mode
.s="cons"  
 
Global xxx.f  
 
Global xxx2.f  
 
Global yyy.f  
 
Global yyy2.f  
 
Repeat  
 
FlipBuffers()  
 
ClearScreen(0)  
 
ExamineKeyboard()  
 
ExamineMouse()  

 
If KeyboardReleased(#PB_Key_1)  
 mode
="cons"  
 
EndIf  
 
If KeyboardReleased(#PB_Key_2)  
 mode
="anim"  
 
EndIf  
 
If KeyboardReleased(#PB_Key_3)  
 mode
="select"  
 
EndIf  

 
If mode="cons"  
 
If modeclick=0  
 
If mrb(1)  
 x
=MouseX()  
 y
=MouseY()  
 modeclick
=1  
 
EndIf  
 
Else  
 
If mrb(1)  
 x2
=MouseX()  
 y2
=MouseY()  
 modeclick
=0  
 addvector
(x,y,x2,y2)  
 
EndIf  
 
EndIf  
 
EndIf  

 
StartDrawing(ScreenOutput())  
 
DrawingMode(#PB_2DDrawing_Transparent)  
 
DrawText(0,0,mode,RGB(0,200,0))  
 
StopDrawing()  

 
ResetList(vector())  
 
While NextElement(vector())  
 
StartDrawing(ScreenOutput())  
 
LineXY(vector()\x,vector()\y,vector()\x2,vector()\y2,RGB(255,255,255))  
 
StopDrawing()  
 
If mo_p=0  
 
DisplayTransparentSprite(vector()\sp,vector()\x-3,vector()\y-3)  
 
DisplayTransparentSprite(vector()\sp2,vector()\x2-3,vector()\y2-3)  
 
EndIf  

 
If KeyboardReleased(#PB_Key_P)  
 mo_p
+1  
 
If mo_p>1  
 mo_p
=0  
 
EndIf  
 
EndIf  

 
If mode="select"  
 
If SpritePixelCollision(#cursor,MouseX(),MouseY(),vector()\sp,vector()\x-2,vector()\y-2) And MouseButton(1)  
 
DisplayTransparentSprite(#point_r,vector()\x-3,vector()\y-3)  
 select_1
=1  
 
EndIf  
 
If SpritePixelCollision(#cursor,MouseX(),MouseY(),vector()\sp2,vector()\x2-2,vector()\y2-2) And MouseButton(1)  
 
DisplayTransparentSprite(#point_r,vector()\x2-3,vector()\y2-3)  
 select_1
=2  
 
EndIf  

 
If MouseButton(1) And select_1=1  
 vector
()\x=MouseX()  
 vector
()\y=MouseY()  
 select_1
=0  
 
EndIf  

 
If MouseButton(1) And select_1=2  
 vector
()\x2=MouseX()  
 vector
()\y2=MouseY()  
 select_1
=0  
 
EndIf  
 
EndIf  

 
Wend  

 
DisplayTransparentSprite(#cursor,MouseX(),MouseY())  

 
Until KeyboardReleased(#PB_Key_Escape)  
 
End










Сайт посвящён языку программирования PureBasic — коммерческий компилятор языка программирования, использующего синтаксис BASIC. Предназначен для создания кроссплатформенных приложений для AmigaOS, Linux, Microsoft Windows, Windows NT и Mac OS X. Разработан компанией Fantaisie Software.