Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > PureBasic

PureBasic Мощный кросс-платформенный язык среднего уровня на основе BASIC. Подходит для решения широкого круга задач.

Ответ
 
Опции темы
Старый 22.11.2007, 08:54   #31
kvitaliy
Оператор ЭВМ
 
Регистрация: 10.01.2007
Сообщений: 37
Написано 6 полезных сообщений
(для 5 пользователей)
Re: Fractals

Практически законченная программа, рисующая милионы неповторяющихся узоров, с возможностью сохранения в файл.

 ;{ Windows
Enumeration
  #Window_0
  #Window_1
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Timer_0
  #StringGadget_1
  #StringGadget_3
  #StringGadget_4
  #StringGadget_5
  #StringGadget_6
  #StringGadget_7
  #StringGadget_8
  #StringGadget_9
  #StringGadget_10
  #StringGadget_11
  #StringGadget_2
  #ButtonGadget_13
  #ButtonGadget_14
  #ButtonGadget_15
  #ButtonGadget_16
  #ButtonGadget_17
  #ButtonGadget_18
  #ButtonGadget_19
  #ButtonGadget_20
  #ButtonGadget_21
  #ButtonGadget_22
  #ButtonGadget_23
  #ButtonGadget_24
  #ButtonGadget_25
  #ButtonGadget_26
  #CheckBoxGadget_27
  #CheckBoxGadget_28
  #CheckBoxGadget_29
  #CheckBoxGadget_30
  #CheckBoxGadget_31
  #CheckBoxGadget_32
  #CheckBoxGadget_33
  #CheckBoxGadget_34
  #CheckBoxGadget_35
  #CheckBoxGadget_36
  #CheckBoxGadget_37
  #ButtonGadget_38
  #ButtonGadget_39
  #ButtonGadget_40
  #ButtonGadget_41
  #ButtonGadget_42
  #Image_1
  #OptionGadget_0
  #OptionGadget_1
  #OptionGadget_2
  #OptionGadget_3
  #ButtonGadget_100
EndEnumeration
;}
  Global xmax=800;1024
  Global ymax=600;768
 
  Global E.f = 5
  Global F.f = 5
  Global A.f = 1
  Global B.f = 1
  Global C.f = 1
  Global D.f = 1
  Global I.f = 1 / 5
  Global J.f = 1 / 4
  Global K.f = 1 / 4
  Global L.f = 1 / 5
  Global Col_or.l=10000
  
  Global sc.f = 0.25
  Declare Risovat()

;}
Procedure OpenWindow_Window_1()
  If OpenWindow(#Window_1, 484, 221, 235, 167, "Настройка окна", #PB_Window_TitleBar|#PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(#Window_1))
      OptionGadget(#OptionGadget_0, 15, 15, 100, 25, "800 Х 600")
      OptionGadget(#OptionGadget_1, 15, 45, 335, 20, "1024 Х 768")
      OptionGadget(#OptionGadget_2, 15, 70, 335, 20, "1280 Х 1024")
      OptionGadget(#OptionGadget_3, 15, 100, 330, 20, " Текущее разрешение"):SetGadgetState(#OptionGadget_3,1)
      ButtonGadget(#ButtonGadget_100, 45, 125, 135, 25, "Применить")
    EndIf
  EndIf
EndProcedure

Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 10, 10, xmax, ymax, "Калейдоскоп",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    If CreateGadgetList(WindowID(#Window_0))
      StringGadget(#StringGadget_1, 30, 35, 75, 20, "5")
      StringGadget(#StringGadget_2, 30, 60, 75, 20, "5")
      StringGadget(#StringGadget_3, 30, 85, 75, 20, "1")
      StringGadget(#StringGadget_4, 30, 110, 75, 20, "1")
      StringGadget(#StringGadget_5, 30, 135, 75, 20, "1")
      StringGadget(#StringGadget_6, 30, 160, 75, 20, "1")
      StringGadget(#StringGadget_7, 30, 185, 75, 20, "5")
      StringGadget(#StringGadget_8, 30, 210, 75, 20, "4")
      StringGadget(#StringGadget_9, 30, 235, 75, 20, "4")
      StringGadget(#StringGadget_10, 30, 260, 75, 20,"5")
      StringGadget(#StringGadget_11, 30, 285, 75, 20, "1000")
      
      ButtonGadget(#ButtonGadget_13, 105, 35, 50, 20, "1-100")
      ButtonGadget(#ButtonGadget_14, 105, 60, 50, 20, "1-100")
      ButtonGadget(#ButtonGadget_15, 105, 85, 50, 20, "1-10")
      ButtonGadget(#ButtonGadget_16, 105, 110, 50, 20, "1-10")
      ButtonGadget(#ButtonGadget_17, 105, 135, 50, 20, "1-10")
      ButtonGadget(#ButtonGadget_18, 105, 160, 50, 20, "1-10")
      ButtonGadget(#ButtonGadget_19, 105, 185, 50, 20, "1-100")
      ButtonGadget(#ButtonGadget_20, 105, 210, 50, 20, "1-100")
      ButtonGadget(#ButtonGadget_21, 105, 235, 50, 20, "1-100")
      ButtonGadget(#ButtonGadget_22, 105, 260, 50, 20, "1-100")
      ButtonGadget(#ButtonGadget_23, 105, 285, 50, 20, "1-1000")
      ButtonGadget(#ButtonGadget_24, 5, 370, 150, 20, "Рисовать!")
      ButtonGadget(#ButtonGadget_25, 5, 5, 150, 20, "Случайно для всех")
      ButtonGadget(#ButtonGadget_26, 5, 405, 150, 20, "Сохранить в файл")
      ButtonGadget(#ButtonGadget_39, 5, 325, 150, 20, "Случайно для отмеченных")
      ButtonGadget(#ButtonGadget_40, 5, 347, 150, 20, "Возврат на исходное")
      ButtonGadget(#ButtonGadget_41, 155, 35, 15, 270, ">")
      ButtonGadget(#ButtonGadget_42, 5, 500, 150, 20, "Авто")
      
      CheckBoxGadget(#CheckBoxGadget_27, 5, 35, 20, 20, ""): SetGadgetState(#CheckBoxGadget_27,1)
      CheckBoxGadget(#CheckBoxGadget_28, 5, 60, 20, 20, ""): SetGadgetState(#CheckBoxGadget_28,1)
      CheckBoxGadget(#CheckBoxGadget_29, 5, 85, 20, 20, "")
      CheckBoxGadget(#CheckBoxGadget_30, 5, 110, 20, 20, "")
      CheckBoxGadget(#CheckBoxGadget_31, 5, 135, 20, 20, "")
      CheckBoxGadget(#CheckBoxGadget_32, 5, 160, 20, 20, "")
      CheckBoxGadget(#CheckBoxGadget_33, 5, 185, 20, 20, ""): SetGadgetState(#CheckBoxGadget_33,1)
      CheckBoxGadget(#CheckBoxGadget_34, 5, 210, 20, 20, ""): SetGadgetState(#CheckBoxGadget_34,1)
      CheckBoxGadget(#CheckBoxGadget_35, 5, 235, 20, 20, ""): SetGadgetState(#CheckBoxGadget_35,1)
      CheckBoxGadget(#CheckBoxGadget_36, 5, 260, 20, 20, ""): SetGadgetState(#CheckBoxGadget_36,1)
      CheckBoxGadget(#CheckBoxGadget_37, 5, 285, 20, 20, "")
      
    EndIf
  EndIf
EndProcedure

OpenWindow_Window_1()
Repeat
 Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #OptionGadget_0
      xmax=800
      ymax=600
      ElseIf EventGadget = #OptionGadget_1
      xmax=1024
      ymax=768
      ElseIf EventGadget = #OptionGadget_2
      xmax=1280
      ymax=1024
      ElseIf EventGadget = #OptionGadget_3
      xmax=DesktopWidth(0)
      ymax=DesktopHeight(0)
      ElseIf EventGadget = #ButtonGadget_100
        If GetGadgetState(#OptionGadget_0)=1
             xmax=800
             ymax=600
             CloseWindow(#Window_1)
            Break
        ElseIf GetGadgetState(#OptionGadget_1)=1
            xmax=1024
            ymax=768
            CloseWindow(#Window_1)
            Break
        ElseIf GetGadgetState(#OptionGadget_2)=1
            xmax=1280
            ymax=1024
            CloseWindow(#Window_1)
            Break
        ElseIf GetGadgetState(#OptionGadget_3)=1
            ExamineDesktops()
            MessageRequester("Калейдоскоп", "Текущее разрешение = "+Str(DesktopWidth(0))+"x"+Str(DesktopHeight(0))+"x"+Str(DesktopDepth(0)))
            xmax=DesktopWidth(0)
            ymax=DesktopHeight(0)
            CloseWindow(#Window_1)
            Break
         EndIf   
      EndIf
    ; //////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_1
        Break
      EndIf
  EndSelect
ForEver

OpenWindow_Window_0()
Procedure Risovat()

      E = ValF(GetGadgetText(#StringGadget_1)) 
      F = ValF(GetGadgetText(#StringGadget_2))
      A = ValF(GetGadgetText(#StringGadget_3))
      B = ValF(GetGadgetText(#StringGadget_4))
      C = ValF(GetGadgetText(#StringGadget_5))
      D = ValF(GetGadgetText(#StringGadget_6))
      I = 1 / ValF(GetGadgetText(#StringGadget_7))
      J = 1 / ValF(GetGadgetText(#StringGadget_8))
      K = 1 / ValF(GetGadgetText(#StringGadget_9))
      L = 1 / ValF(GetGadgetText(#StringGadget_10))
      Col_or = Val(GetGadgetText(#StringGadget_11))
      
           
       If StartDrawing(WindowOutput(0))
         
For y = 1 To ymax Step 1
    For x = 1 To xmax Step 1
      xx = (x - xmax / 2) * sc: yy = (y - ymax / 2) * sc
      z.f = E * Pow(Sin(A * Sin(i * xx)+ B * Cos(J * yy)),6)+ F * Pow(Cos(c * Cos(K * xx)+ D * Sin(L * yy)),6)
      Col =z * Col_or
      If col>16777215:Col=16777215:EndIf
      Plot(x+170 , y, Col)
    Next x
Next y
     
    StopDrawing() 
    
    EndIf 

EndProcedure

Procedure OtmRND()
If GetGadgetState(#CheckBoxGadget_28)+GetGadgetState(#CheckBoxGadget_29)+GetGadgetState(#CheckBoxGadget_30)+GetGadgetState(#CheckBoxGadget_31)+GetGadgetState(#CheckBoxGadget_32)+GetGadgetState(#CheckBoxGadget_33)+GetGadgetState(#CheckBoxGadget_34)+GetGadgetState(#CheckBoxGadget_35)+GetGadgetState(#CheckBoxGadget_36)+GetGadgetState(#CheckBoxGadget_37)<1
  MessageRequester("Калейдоскоп", "Нет выбранных параметров для изменения!", #MB_OK|#MB_ICONINFORMATION)
EndIf
If GetGadgetState(#CheckBoxGadget_27)=1:SetGadgetText(#StringGadget_1,StrF(Random(99)+1,1)) :EndIf
      If GetGadgetState(#CheckBoxGadget_28)=1:SetGadgetText(#StringGadget_2,StrF(Random(99)+1,1)) :EndIf
      If GetGadgetState(#CheckBoxGadget_29)=1:SetGadgetText(#StringGadget_3,StrF(Random(9)+1,1))  :EndIf
      If GetGadgetState(#CheckBoxGadget_30)=1:SetGadgetText(#StringGadget_4,StrF(Random(9)+1,1))  :EndIf
      If GetGadgetState(#CheckBoxGadget_31)=1:SetGadgetText(#StringGadget_5,StrF(Random(9)+1,1))  :EndIf
      If GetGadgetState(#CheckBoxGadget_32)=1:SetGadgetText(#StringGadget_6,StrF(Random(9)+1,1))  :EndIf
      If GetGadgetState(#CheckBoxGadget_33)=1:SetGadgetText(#StringGadget_7,StrF(Random(99)+1,1)) :EndIf
      If GetGadgetState(#CheckBoxGadget_34)=1:SetGadgetText(#StringGadget_8,StrF(Random(99)+1,1)) :EndIf
      If GetGadgetState(#CheckBoxGadget_35)=1:SetGadgetText(#StringGadget_9,StrF(Random(99)+1,1)) :EndIf
      If GetGadgetState(#CheckBoxGadget_36)=1:SetGadgetText(#StringGadget_10,StrF(Random(99)+1,1)):EndIf
      If GetGadgetState(#CheckBoxGadget_37)=1:SetGadgetText(#StringGadget_11,StrF(Random(1000)+1,1)):EndIf
      Risovat()
EndProcedure


;{- Event loop
Repeat

  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #StringGadget_1
     
      ElseIf EventGadget = #ButtonGadget_13
      SetGadgetText(#StringGadget_1,StrF(Random(100)+1,1))
      ElseIf EventGadget = #ButtonGadget_14
      SetGadgetText(#StringGadget_2,StrF(Random(100)+1,1))
      ElseIf EventGadget = #ButtonGadget_15
      SetGadgetText(#StringGadget_3,StrF(Random(9)+1,1))
      ElseIf EventGadget = #ButtonGadget_16
      SetGadgetText(#StringGadget_4,StrF(Random(9)+1,1))
      ElseIf EventGadget = #ButtonGadget_17
      SetGadgetText(#StringGadget_5,StrF(Random(9)+1,1))
      ElseIf EventGadget = #ButtonGadget_18
      SetGadgetText(#StringGadget_6,StrF(Random(9)+1,1))
      ElseIf EventGadget = #ButtonGadget_19
      SetGadgetText(#StringGadget_7,StrF(Random(100)+1,1))
      ElseIf EventGadget = #ButtonGadget_20
      SetGadgetText(#StringGadget_8,StrF(Random(100)+1,1))
      ElseIf EventGadget = #ButtonGadget_21
      SetGadgetText(#StringGadget_9,StrF(Random(100)+1,1))
      ElseIf EventGadget = #ButtonGadget_22
      SetGadgetText(#StringGadget_10,StrF(Random(100)+1,1))
      ElseIf EventGadget = #ButtonGadget_23
      SetGadgetText(#StringGadget_11,StrF(Random(1000)+1,1))
      
      ElseIf EventGadget = #ButtonGadget_24
      Risovat()
      ElseIf EventGadget = #ButtonGadget_25
      SetGadgetText(#StringGadget_1,StrF(Random(100)+1,1))
      SetGadgetText(#StringGadget_2,StrF(Random(100)+1,1))
      SetGadgetText(#StringGadget_3,StrF(Random(10)+1,1))
      SetGadgetText(#StringGadget_4,StrF(Random(10)+1,1))
      SetGadgetText(#StringGadget_5,StrF(Random(10)+1,1))
      SetGadgetText(#StringGadget_6,StrF(Random(10)+1,1))
      SetGadgetText(#StringGadget_7,StrF(Random(100)+1,1))
      SetGadgetText(#StringGadget_8,StrF(Random(100)+1,1))
      SetGadgetText(#StringGadget_9,StrF(Random(100)+1,1))
      SetGadgetText(#StringGadget_10,StrF(Random(100)+1,1))
      SetGadgetText(#StringGadget_11,StrF(Random(1000)+1,1))
      
      ElseIf EventGadget = #ButtonGadget_26
      CreateImage(#Image_1, xmax, ymax)
      StartDrawing(ImageOutput(#Image_1))
      For y = 1 To ymax Step 1
         For x = 1 To xmax Step 1
        xx = (x - xmax / 2) * sc: yy = (y - ymax / 2) * sc
        z.f = E * Pow(Sin(A * Sin(i * xx)+ B * Cos(J * yy)),6)+ F * Pow(Cos(c * Cos(K * xx)+ D * Sin(L * yy)),6)
        Col =z * Col_or
             If col>16777215:Col=16777215:EndIf
        Plot(x+170 , y, Col)
        Next x
     Next y
      StopDrawing()
      FSN:
      StandardFile$ = "picture.bmp"  
  Pattern$ = "BMP (*.bmp);*.bmp"
  Pattern = 0    
  File$ = SaveFileRequester("Выберите файл для записи", StandardFile$, Pattern$, Pattern)
   If Len(File$)>0
        If FileSize(File$)>0
             
           Select MessageRequester("Калейдоскоп", "Файл с таким именем существует. Переписать?", #MB_YESNO|#MB_ICONWARNING|#MB_DEFBUTTON2)
                  Case #IDYES
                  Goto FSD
                  Case #IDNO
                  Goto FSN
           EndSelect
         EndIf  
         FSD:
      SaveImage(#Image_1,File$,#PB_ImagePlugin_BMP)
      MessageRequester("Калейдоскоп", "Выполнено сохранение!", #MB_OK|#MB_ICONINFORMATION)
   Else
      MessageRequester("Калейдоскоп", "Файл не выбран!", #MB_OK|#MB_ICONINFORMATION)
   EndIf   
      
            
      ElseIf EventGadget = #ButtonGadget_39
      
      If GetGadgetState(#CheckBoxGadget_28)+GetGadgetState(#CheckBoxGadget_29)+GetGadgetState(#CheckBoxGadget_30)+GetGadgetState(#CheckBoxGadget_31)+GetGadgetState(#CheckBoxGadget_32)+GetGadgetState(#CheckBoxGadget_33)+GetGadgetState(#CheckBoxGadget_34)+GetGadgetState(#CheckBoxGadget_35)+GetGadgetState(#CheckBoxGadget_36)+GetGadgetState(#CheckBoxGadget_37)<1
          MessageRequester("Калейдоскоп", "Нет выбранных параметров для изменения!", #MB_OK|#MB_ICONINFORMATION)
      EndIf
      If GetGadgetState(#CheckBoxGadget_27)=1:SetGadgetText(#StringGadget_1,StrF(Random(99)+1,1)) :EndIf
      If GetGadgetState(#CheckBoxGadget_28)=1:SetGadgetText(#StringGadget_2,StrF(Random(99)+1,1)) :EndIf
      If GetGadgetState(#CheckBoxGadget_29)=1:SetGadgetText(#StringGadget_3,StrF(Random(9)+1,1))  :EndIf
      If GetGadgetState(#CheckBoxGadget_30)=1:SetGadgetText(#StringGadget_4,StrF(Random(9)+1,1))  :EndIf
      If GetGadgetState(#CheckBoxGadget_31)=1:SetGadgetText(#StringGadget_5,StrF(Random(9)+1,1))  :EndIf
      If GetGadgetState(#CheckBoxGadget_32)=1:SetGadgetText(#StringGadget_6,StrF(Random(9)+1,1))  :EndIf
      If GetGadgetState(#CheckBoxGadget_33)=1:SetGadgetText(#StringGadget_7,StrF(Random(99)+1,1)) :EndIf
      If GetGadgetState(#CheckBoxGadget_34)=1:SetGadgetText(#StringGadget_8,StrF(Random(99)+1,1)) :EndIf
      If GetGadgetState(#CheckBoxGadget_35)=1:SetGadgetText(#StringGadget_9,StrF(Random(99)+1,1)) :EndIf
      If GetGadgetState(#CheckBoxGadget_36)=1:SetGadgetText(#StringGadget_10,StrF(Random(99)+1,1)):EndIf
      If GetGadgetState(#CheckBoxGadget_37)=1:SetGadgetText(#StringGadget_11,StrF(Random(1000)+1,1)):EndIf
      
      ElseIf EventGadget = #ButtonGadget_40
      
        SetGadgetText(#StringGadget_1, "5")
        SetGadgetText(#StringGadget_2, "5")
        SetGadgetText(#StringGadget_3, "1")
        SetGadgetText(#StringGadget_4, "1")
        SetGadgetText(#StringGadget_5, "1")
        SetGadgetText(#StringGadget_6, "1")
        SetGadgetText(#StringGadget_7, "5")
        SetGadgetText(#StringGadget_8, "4")
        SetGadgetText(#StringGadget_9, "4")
        SetGadgetText(#StringGadget_10,"5")
        SetGadgetText(#StringGadget_11,"10000")
        
      ElseIf EventGadget = #ButtonGadget_41
          Risovat()
      ElseIf EventGadget = #ButtonGadget_42
        If GetGadgetText(#ButtonGadget_42) = "Авто"
           SetGadgetText(#ButtonGadget_42,"Стоп Авто")
           DisableGadget(#ButtonGadget_26, 1)
           OtmRND()
           StartTimer( #Timer_0 , 5000 , @OtmRND() )
        Else
           SetGadgetText(#ButtonGadget_42,"Авто")
           DisableGadget(#ButtonGadget_26, 0)
           EndTimer( #Timer_0 )
        EndIf
       ElseIf EventGadget = #ButtonGadget_100
       ExamineDesktops()
         MessageRequester("Display Information", "Current resolution = "+Str(DesktopWidth(0))+"x"+Str(DesktopHeight(0))+"x"+Str(DesktopDepth(0)))
      CloseWindow(#Window_1)
         
      EndIf
    ; //////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
      EndTimer( #Timer_0 )
        Break
      EndIf
  EndSelect
ForEver
;}
(Offline)
 
Ответить с цитированием
Старый 25.11.2007, 19:23   #32
Chrono Syndrome
 
Сообщений: n/a
Re: Fractals

InitSprite()
OpenWindow(0, 0, 0, 800, 600, "--Fractal Test--", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
Define Width = WindowWidth(0) - 1, Height = WindowHeight(0) - 1, X, Y
Define I = 1
OpenWindowedScreen(WindowID(0), 0, 0, Width + 1, Height + 1, #False, 0, 0)
While WindowEvent() <> #PB_Event_CloseWindow 
StartDrawing(ScreenOutput())
For X = 0 To Width
For Y = 0 To Height
;--Fractal[--;
Plot(X, Y, X & Y * I)
;--]Fractal--;
Next Y
Next X
StopDrawing()
FlipBuffers()
If I < 0 : I = 0 : Else : I + 1 : EndIf
Wend
Гипнотизирует, однако)...
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 15:36.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com