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

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

Осцилограф



Code
;********************************************************************************  
; Удивительно красивый осциллограф. Найдено Fdisk-ом, не помню где  
; Образец для построения графиков....  
;********************************************************************************  
If InitSprite() = 0  
MessageRequester("Ошибка", " !", 0)  
End  
EndIf  
#width = 320  
#height = 240  
theta.f = 0.0 : x = 0 : y = 0 : frame.f = 0.0 : pas.f = 45.0 : DIV = 1 : DoCos = 1  
If OpenWindow(0, 0, 0, #width+70, #height, "Осциллограф",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)  
If CreateGadgetList(WindowID(0))  
ButtonGadget(0, #width+10, #height-25, 55, 20, "Quitter")  
TextGadget(5, #width+3, 5, 32, 20, "Pas", #PB_Text_Center|#PB_Text_Border)  
TextGadget(6, #width+38, 5, 32, 20, "Haut", #PB_Text_Center|#PB_Text_Border)  
TrackBarGadget(1, #width+5, 27, 20, #height-80, 0, 100, #PB_TrackBar_Vertical)  
SetGadgetState(1, pas)  
CheckBoxGadget(7, #width+32, 27, 40, 15, "Cos") : SetGadgetState(7,DoCos)  
TrackBarGadget(2, #width+40, 42, 20, #height-80-15, 1, 10, #PB_TrackBar_Vertical)  
SetGadgetState(2, DIV)  
TextGadget(3, #width+5, #height-50, 30, 20, Str(pas), #PB_Text_Center|#PB_Text_Border)  
TextGadget(4, #width+40, #height-50, 30, 20, Str(DIV), #PB_Text_Center|#PB_Text_Border)  
EndIf  
If OpenWindowedScreen(WindowID(0), 0, 0, #width, #height, 0, 0, 0)  
CreateSprite(0, 4, 4)  
If StartDrawing(SpriteOutput(0))  
Box(0, 0, 4, 4, RGB(255, 0, 255))  
Box(1, 0, 2, 4, RGB(127, 200, 127))  
Box(0, 1, 4, 2, RGB(127, 200, 127))  
Box(1, 1, 2, 2, RGB(0, 255, 0))  
StopDrawing()  
EndIf  
TransparentSpriteColor(0,$FF00FF)  
CreateSprite(1, #width, #height)  
If StartDrawing(SpriteOutput(1))  
For i = 0 To #width - 1 Step #height/12 ;20  
LineXY(i,0,i,#height-1,$1F1F1F)  
Next i  
For i = 0 To #height - 1 Step #height/12 ;20  
LineXY(0,i,#width-1,i,$1F1F1F)  
Next i  
LineXY(0,#height/2,#width-1,#height/2,$AFAFAF)  
LineXY(#width/2,0,#width/2,#height,$AFAFAF)  
For i = #width/16 To #width - 1 Step #height/12 ;20  
LineXY(i,(#height/2)-5,i,(#height/2)+5,$AFAFAF)  
Next i  
For i = #width/16 To #height - 1 Step #height/12 ;20  
LineXY((#width/2)-5,i,(#width/2)+5,i,$AFAFAF)  
Next i  
StopDrawing()  
EndIf  
Else  
MessageRequester("Ошибка", "!", 0)  
End  
EndIf  
EndIf  
#RAD_TO_DEG=57.29577951308232087  
#DEG_TO_RAD = 0.01745329251994329  

Macro DegCos(val)  
  Cos(val / #RAD_TO_DEG)  
EndMacro  
Macro DegSin(val)  
Sin(val / #RAD_TO_DEG)  
EndMacro  
Repeat  
Repeat  
Event = WindowEvent()  
; Faire un Random pour le fun  
;div = Random(10)  
;SetGadgetState(2,div)  
;SetGadgetText(4,Str(div))  
Select Event  
Case #PB_Event_Gadget  
If EventGadget()=0  
End  
EndIf  
If EventGadget()=1  
pas = GetGadgetState(1)  
SetGadgetText(3,Str(pas))  
EndIf  
If EventGadget()=2  
DIV=GetGadgetState(2)  
SetGadgetText(4,Str(DIV))  
EndIf  
If EventGadget()=7  
DoCos = 1 - DoCos  
SetGadgetState(7,DoCos)  
EndIf  
Case #PB_Event_CloseWindow  
End  
EndSelect  
Until Event=0  
FlipBuffers()  
;ClearScreen(RGB(0, 0, 0))  
DisplaySprite(1,0,0)  
For x = 0 To #width - 1  
theta = x + frame  
Select DoCos  
Case 0  
y=((#height-4)/2)-DegSin(theta)*(#height/2);  
Case 1  
y=((#height-4)/2)-DegSin(theta)*(#height/2)*(DegCos(theta)/DIV)  
EndSelect  
DisplayTransparentSprite(0,x,y)  
Next  
frame=frame+pas;vitesse de defilement  
Delay(25)  
ForEver










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