TV-Noise

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Code: Alles auswählen

Debug #SCREEN_X
Constant not found: #SCREEN_X

öh.. hab ich da vergessen, was zu installieren??
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Creature
Beiträge: 678
Registriert: 29.08.2004 00:55
Wohnort: Frankfurt/Main

Beitrag von Creature »

wirklich cool :allright:

bei mir hat ausnahmsweise mal alles auf anhieb geklappt...
Bildung kommt von Bildschirm und nicht von Buch, sonst hieße es ja Buchung.
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Kaeru Gaman hat geschrieben:

Code: Alles auswählen

Debug #SCREEN_X
Constant not found: #SCREEN_X

öh.. hab ich da vergessen, was zu installieren??
Dies ist eine lokale Konstante welche Rings in seinem Programm verwendet hat. ;)
Die kannst du nur nehmen wenn du seine Codezeilen verwendest. Hat übrigends den Wert 800.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

jaaa... is mir inzwischen auch klar geworden :freak:

ein veränderbarer wert kann ja garnicht als konstante vorhanden sein Bild

ich bitte, laut und herzlich über meinen dummen irrtum zu lachen :mrgreen:
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Rob
Shadow Admin
Beiträge: 258
Registriert: 26.08.2004 01:39
Kontaktdaten:

Beitrag von Rob »

Bwahaha, n00b!
:allright:
Build a man a fire and he's warm for a day. Set a man on fire and he's warm for the rest of his life
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

bluejoke hat geschrieben:Geilooo!

Ich hab Bennys TV-Noise als Bildschirmschoner, machst du aus deinem auch noch einen?
Wie hast du das gemacht?

Ich hab da mal ein Bildschirmschonergrundgerüst gehabt, hab mich aber nie getraut da was dran zu verändern. Postest du bitte den Code? *lieb-guck*

@Kaeru Gaman: Bild
:lol:


Greetz Laurin
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
benny
Beiträge: 383
Registriert: 29.08.2004 09:18
Wohnort: Am Ende des www's
Kontaktdaten:

Beitrag von benny »

@Laurin:

Ich denke mal bluejoke redet von dem Screensaver, den ich damals irgend-
wann mal von dem Effekt gemacht habe.
Kannst Du Dir hier runterladen:

http://www.weltenkonstrukteur.de/tv_noise.php


Ich denke ich habe da auf das gleiche ScreenSaver-Gerüst zurückgegriffen,
welches Du auch schon hast.

Aber ich poste gerne nochmal den Code.

main.pb

Code: Alles auswählen



IncludeFile "Common.pb"

;===========================================================================
;-ONLY START ONE INSTANCE
;===========================================================================

Global ScreensaverName.s
ScreensaverName = "TV-Noise Screensaver"
;The next function call uses the AppRunning User Library
If AppRunning(ScreensaverName) : End : EndIf

;===========================================================================
;-CONSTANTS
;===========================================================================

#SCREEN_X     = 800 
#SCREEN_Y     = 600 

#LOOPTIME   = 1000/40  ; 40 Frames in 1000ms (1second) 

;===========================================================================
;-GLOBAL FLAGS / VARIABLES / STRUCTURES / ARRAYS
;===========================================================================

Global Parameter.s
Global PrevWinHndlString.s
Global PrevWinHndl.l

Parameter = UCase(ProgramParameter())
If Len(Parameter) > 2
    PrevWinHndlString = RemoveString(Parameter, Left(Parameter, 3), 1)
    Parameter = RemoveString(Parameter, Left(Parameter, 1), 1)
    Parameter = Left(Parameter, 1)
Else
    Parameter = RemoveString(Parameter, Left(Parameter, 1), 1)
    PrevWinHndlString = ProgramParameter()
    If FindString(PrevWinHndlString, "-", 0) <> 0 : PrevWinHndlString = RemoveString(PrevWinHndlString, "-", 1) : EndIf
    If FindString(PrevWinHndlString, "/", 0) <> 0 : PrevWinHndlString = RemoveString(PrevWinHndlString, "/", 1) : EndIf
EndIf
PrevWinHndl = Val(PrevWinHndlString)


;===========================================================================
;-PROCEDURES
;===========================================================================

;simple error checking
Procedure HandleError(result, text.s)
    If result = 0 : MessageRequester("Error", text, #PB_MessageRequester_Ok) : End : EndIf
EndProcedure

;preview window callback
Procedure PreviewCallback(hWnd, Message, wParam, lParam) 
    Select Message
        Case #WM_CLOSE
            UnregisterClass_("PreviewWindowClass", GetModuleHandle_(#NULL)) 
            DestroyWindow_(hWnd)
            End 
    EndSelect
    Result = DefWindowProc_(hWnd, Message, wParam, lParam) 
    ProcedureReturn Result
EndProcedure

;execute the preview in the little mini monitor in 'Display Properties'
Procedure ExecutePreview()
    PreviewWindowSize.RECT
    GetClientRect_(PrevWinHndl, @PreviewWindowSize)
    PreviewWindowClass.WNDCLASS
    Classname.s = "PreviewWindowClass"
    PreviewWindowClass\style = #CS_HREDRAW | #CS_VREDRAW
    PreviewWindowClass\lpfnWndProc = @PreviewCallback()
    PreviewWindowClass\cbClsExtra = 0
    PreviewWindowClass\cbWndExtra = 0
    PreviewWindowClass\hInstance = GetModuleHandle_(#NULL)
    PreviewWindowClass\hIcon = 0
    PreviewWindowClass\hCursor = 0
    PreviewWindowClass\hbrBackground = 0
    PreviewWindowClass\lpszMenuName = 0
    PreviewWindowClass\lpszClassName = @Classname
    RegisterClass_(PreviewWindowClass)
    hWnd.l = CreateWindowEx_(0, "PreviewWindowClass", "", #WS_CHILD | #WS_VISIBLE, 0, 0, PreviewWindowSize\right, PreviewWindowSize\bottom, PrevWinHndl, 0, GetModuleHandle_(#NULL), 0) 
    If hWnd
        CatchImage(1, ?PreviewImage)
        HandleError(CreateGadgetList(hWnd), "Gadget list in preview window could not be created!")
        ImageGadget(1, 0, 0, PreviewWindowSize\right, PreviewWindowSize\bottom, UseImage(1))
        While GetMessage_(Message.MSG, 0, 0, 0)
            TranslateMessage_(Message)
            DispatchMessage_(Message)
        Wend
    EndIf
EndProcedure


; Procedure, die die Farbe in den aktuellen Farbmodus umwandelt.
; (Bei 15-bit bin ich mir nicht sicher ob das so richtig ist, konnte es nicht testen...)
Procedure.l TransformColor(R.b,G.b,b.b) 
  Select DrawingBufferPixelFormat() 
    Case #PB_PixelFormat_32Bits_RGB 
      ProcedureReturn R+G<<8+b<<16 
    Case #PB_PixelFormat_32Bits_BGR 
      ProcedureReturn b+G<<8+R<<16 
    Case #PB_PixelFormat_24Bits_RGB 
      ProcedureReturn R+G<<8+b<<16 
    Case #PB_PixelFormat_24Bits_BGR 
      ProcedureReturn b+G<<8+R<<16 
    Case #PB_PixelFormat_16Bits 
      ProcedureReturn b>>3+(G&%11111100)<<3+(R&%11111000)<<8 
    Case #PB_PixelFormat_15Bits 
      ProcedureReturn R&%11111000>>3+(G&%11111000)<<2+(b&%11111000)<<7 
  EndSelect 
EndProcedure 

; For Speed-Optimation - Original by Danilo!

Procedure InitGameTimer() 
  ; initialize highres timing function TimeGetTime_() 
  Shared _GT_DevCaps.TIMECAPS 
  timeGetDevCaps_(_GT_DevCaps,SizeOf(TIMECAPS)) 
  timeBeginPeriod_(_GT_DevCaps\wPeriodMin) 
EndProcedure 

Procedure StopGameTimer() 
  ; de-initialize highres timing function TimeGetTime_() 
  Shared _GT_DevCaps.TIMECAPS 
  timeEndPeriod_(_GT_DevCaps\wPeriodMin) 
EndProcedure 


;run the fullscreen screensaver code
Procedure ExecuteScreenSaver()

    If InitSprite()=0 Or InitMouse()=0 Or InitKeyboard()=0 
     MessageRequester("ERROR","Cant init DirectX !",#MB_ICONERROR):End 
   EndIf 

    If OpenScreen(#SCREEN_X, #SCREEN_Y, 32, "weltenkonstrukteur.de")=0
      MessageRequester("ERROR","Cant open screen !",#MB_ICONERROR):End 
    EndIf 

    StartDrawing(ScreenOutput()) 
      Pitch        = DrawingBufferPitch() 
    StopDrawing() 

    White = TransformColor(255,255,255)
    Noise = 0
    Carry = 0
    Index = 0
    Seed  = $12345
  
;    InitScreenSaver()

    SystemParametersInfo_(#SPI_SCREENSAVERRUNNING, #TRUE, @oldval, 0)
    ShowCursor_(0)

    While quit=0
      FlipBuffers() 
      ExamineMouse()
      ExamineKeyboard() 

        StartDrawing(ScreenOutput())     
          For y = 0 To #SCREEN_Y -1     
            For x = 0 To #SCREEN_X -1
              noise = seed;
              noise = noise >> 3
              noise = noise ! seed
              carry = noise & 1
              seed = seed >> 1
              seed = seed | ( carry << 30)
              noise = noise & $FF
              *Screen.LONG = DrawingBuffer() 
              *Screen + (Pitch * y) +  (x*4)  
              *Screen\l = (noise<<16) | (noise << 8) | noise
            Next x
          Next y
        StopDrawing() 

       While ( timeGetTime_()-LoopTimer )<#LOOPTIME : Delay(1) : Wend 
        LoopTimer = timeGetTime_() 
   
       If KeyboardPushed(#PB_Key_All)
        quit = 2
       EndIf
   
       If MouseDeltaX() <> 0 Or MouseDeltaY() <> 0 Or MouseWheel() <> 0 Or MouseButton(1) <> 0 Or MouseButton(2) <> 0 Or MouseButton(3) <> 0
        quit = 2
       EndIf         
    Wend

    ShowCursor_(1)
    SystemParametersInfo_(#SPI_SCREENSAVERRUNNING, #FALSE, @oldval, 0)
    End
EndProcedure


;configuration window
Procedure ExecuteConfiguration()
;    MessageRequester("Saver - Config", "Nichts einzurichten!"+Chr(13)+"(c)coming art")


  Open_Window_0()

  Repeat
  
    Event = WaitWindowEvent()
  
    If Event = #PB_EventGadget
    
      ;Debug "WindowID: " + Str(EventWindowID())
    
      GadgetID = EventGadgetID()
    
      If GadgetID = #Button_0
        End        
      EndIf
    
    EndIf
  
  Until Event = #PB_EventCloseWindow

  End
EndProcedure

;===========================================================================
;-MAIN
;===========================================================================

;deal with the Parameters passed to this program
Select Parameter
    Case "" ;double clicked
        ExecuteConfiguration()
    Case "A" ;check password
        End
    Case "C" ;'Settings' button clicked in the screensaver dialog
        ExecuteConfiguration()
    Case "P" ;when the preview is requested in the screensaver dialog by selecting this screensaver
        ExecutePreview()
    Case "S" ;launch the main screensaver after an interval or by pressing 'Preview' in the dialog
        ExecuteScreenSaver()
EndSelect

End

;===========================================================================
;-DATA
;===========================================================================

DataSection
    PreviewImage:
        IncludeBinary "Preview.bmp"
EndDataSection

common.pb

Code: Alles auswählen

;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Image_0
  #Text_0
  #Button_0
EndEnumeration

;- Image Plugins

;- Image Globals
Global Image0

;- Catch Images
Image0 = CatchImage(0, ?Image0)

;- Images
DataSection
Image0:
  IncludeBinary "F:\Code\purebasic\Examples\comart\TV-Noise_SCR\wkbanner.bmp"
EndDataSection

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 453, 175,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar, "TV-Noise Screensaver - (c) 2oo4 benny!")
    If CreateGadgetList(WindowID())
      ImageGadget(#Image_0, 15, 15, 420, 60, Image0)
      TextGadget(#Text_0, 15, 105, 420, 30, "There is nothing to configure !", #PB_Text_Center)
      ButtonGadget(#Button_0, 165, 135, 120, 30, "Close")
      
    EndIf
  EndIf
EndProcedure
So long,
benny!
.
nur t0te f1sche schw1mmen m1t dem str0m - 00100 !
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Danke Benny :allright:
Ich denke ich habe da auf das gleiche ScreenSaver-Gerüst zurückgegriffen,
welches Du auch schon hast.
Das glaube ich auch. Ich hab mich damals nicht an den Code getraut, weil ich maximal nur 1/10 davon verstanden habe. :oops:

Ich glaube, ich werde am Code mal ein wenig rumspielen. Mal schau'n, was bei rauskommt. (Einen Bluescreen hatte ich heute schon, also müssten da andere Fehler kommen :lol: )


Greetz Laurin
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
sbehrens
Beiträge: 274
Registriert: 08.09.2004 18:41
Kontaktdaten:

Beitrag von sbehrens »

Schick! :) Ist besser als alles was im Fernsehen läuft. :allright:

mfG
Basti
enjoy life... while you can!
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

@Rings
Da bei mir dein Code nicht auf einem 19" SXGA nicht läuft, wohl wegen der aktuellen ScreenX/Y-Auflösung, habe ich noch einen kleinen Teil hinzugefügt und alle Konstanten deswegen auf Variablen umgestellt. So ist es Egal was für eine Auflösung für den Fullscreen eingestellt ist. :allright: Gefällt mir sehr gut.

Code: Alles auswählen

;TV-Test-picture läuft jetzt auch mit 19" TFT SXGA bei aktueller Auflösung
SCREEN_X=GetSystemMetrics_(#SM_CXSCREEN) 
SCREEN_Y=GetSystemMetrics_(#SM_CYSCREEN)

#SCREEN_DEPTH=32
#MyFontID=1

Sender.s="PUREBASIC"

XSchritt=SCREEN_X/20
YSchritt=SCREEN_Y/15

Mode=1
DelayZeit=5000

;Make tv-noise, generate a sound in mem without a WAV-file

;#pi = 3.141593                      ; pi
fq = 250                           ; frequenz in Hz for sinustone
#samplerate = 44100                 ; samplerate
#bitrate = 16                       ; Bits per sample, #bitrate Mod 8 must be 0 !
#channels = 2                       ; number of channels
#secs = 1                           ; time for the tone in seconds
BytesNeeded=#samplerate * #secs * #channels *2
BytesNeeded=BytesNeeded + 44;(44 is the header)
mem1=GlobalAlloc_(#GMEM_FIXED,Bytesneeded) ;Api only ;)
mem2=GlobalAlloc_(#GMEM_FIXED,Bytesneeded)

avBytesPerSec.l = #channels*#bitrate/8*#samplerate  ; calculate the average bytes per second
Global  actsamplevalue.w         ; for signed RAW data
offset=44   
For acttime = 1 To #samplerate * #secs
 For actchannel = 1 To #channels
        If fq <= 150
          m = 1
        ElseIf fq >= 300
          m = -1
        EndIf
        fq + m
        actsamplevalue = 32766 * Sin(2 * #pi * fq * acttime / #samplerate)
        If actsamplevalue <20000
         actsamplevalue = actsamplevalue +5000
        EndIf
        PokeW(mem2+offset,Random(32765))
        PokeW(mem1+offset,actsamplevalue )
        offset+2
    Next
  Next

  PokeL(mem1,$46464952) ;
  PokeL(mem1+4,36+avBytesPerSec*#secs) ;WriteLong(36+avBytesPerSec*#secs) ; normally filesize - 8 Bytes, here a bit tricky, fmt-chunk + data-chunk
  PokeL(mem1+8,$45564157)
  PokeL(mem1+12,$20746D66)
  PokeL(mem1+16,16);WriteLong(16)                     ; chunk data size
  PokeW(mem1+20,1);WriteWord(1)                      ; compression code
  PokeW(mem1+22,#Channels);WriteWord(#channels)              ; number of channels
  PokeL(mem1+24,#samplerate);WriteLong(#samplerate)            ; samplerate
  PokeL(mem1+28,avBytesPerSec);WriteLong(avBytesPerSec)          ; average bytes per second, here 2(channels)*2(block align)*44100(samplerate)
  PokeW(mem1+32,#bitrate/8*#channels);WriteWord(#bitrate/8*#channels)   ; Block Align ('bytes per sample')
  PokeW(mem1+34,#bitrate);WriteWord(#bitrate)               ; Bits per sample
  PokeS(Mem1+36,"data");WriteByte(Asc("d"))
  PokeL(mem1+40,avBytesPerSec*#secs);;WriteLong(avBytesPerSec*#secs)    ; data chunk size in byes

  PokeL(mem2,$46464952) ;
  PokeL(mem2+4,36+avBytesPerSec*#secs) ;WriteLong(36+avBytesPerSec*#secs) ; normally filesize - 8 Bytes, here a bit tricky, fmt-chunk + data-chunk
  PokeL(mem2+8,$45564157)
  PokeL(mem2+12,$20746D66)
  PokeL(mem2+16,16);WriteLong(16)                     ; chunk data size
  PokeW(mem2+20,1);WriteWord(1)                      ; compression code
  PokeW(mem2+22,#Channels);WriteWord(#channels)              ; number of channels
  PokeL(mem2+24,#samplerate);WriteLong(#samplerate)            ; samplerate
  PokeL(mem2+28,avBytesPerSec);WriteLong(avBytesPerSec)          ; average bytes per second, here 2(channels)*2(block align)*44100(samplerate)
  PokeW(mem2+32,#bitrate/8*#channels);WriteWord(#bitrate/8*#channels)   ; Block Align ('bytes per sample')
  PokeW(mem2+34,#bitrate);WriteWord(#bitrate)               ; Bits per sample
  PokeS(Mem2+36,"data");WriteByte(Asc("d"))
  PokeL(mem2+40,avBytesPerSec*#secs);;WriteLong(avBytesPerSec*#secs)    ; data chunk size in byes
 


; Private Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long
     #SoundSync = $0
     #SoundASync = $1
     #SoundMemory = $4
     #SoundLoop = $8
     #SoundNoStop = $10
     #SoundNoDefault = $2

If InitSprite()=0 Or InitKeyboard() = 0
  MessageRequester("Error", "Can't open DirectX 7 Or later", 0)
  End
EndIf

If OpenScreen(SCREEN_X, SCREEN_Y, #SCREEN_DEPTH, "TV-TEST")
 Flags=#PB_Font_Bold
 Result = LoadFont(#MyFontID, "Times New Roman", 32, Flags)
 UseFont(#MyFontID)

StartDrawing(ScreenOutput())
  Pitch        = DrawingBufferPitch()
StopDrawing()

White = $FFFFFF
Noise = 0
Carry = 0
Index = 0
Seed  = $12345

 Repeat
 FlipBuffers()
 If IsScreenActive()
  ClearScreen($50,$50,$50)
  StartDrawing(ScreenOutput())
  T1=GetTickCount_()
  If T1>T0+DelayZeit
   If Mode=1
    Mode=2
    result=sndPlaySound_(mem2,#SoundASync |#SoundMemory|#SoundLoop )
   Else
    Mode=1
    result=sndPlaySound_(mem1,#SoundASync |#SoundMemory|#SoundLoop )
   EndIf
   T0=T1 
  EndIf 
  If Mode=1
  ;Draw grid
  DrawingMode(1)
  X=0
  Y=0
  While x<SCREEN_X-1
   LineXY(X, 0, X, SCREEN_Y-1 , $FFFFFF)
   X+XSchritt
   While y< SCREEN_Y-1
    LineXY(0, y, SCREEN_X-1, y , $FFFFFF)
    y+YSchritt
   Wend
  Wend
  LineXY(SCREEN_X-1, 0, SCREEN_X-1, SCREEN_Y-1 , $FFFFFF)
  LineXY(0, SCREEN_Y-1, SCREEN_X-1, SCREEN_Y-1 , $FFFFFF)


  ;draw boxes
  Box(XSchritt*4,YSchritt*2,xSchritt*1.5,YSchritt*3,$FFFFFF) ;white
  Box(XSchritt*5.5,YSchritt*2,xSchritt*1.5,YSchritt*3,$00FFFF);yellow
  Box(XSchritt*7,YSchritt*2,xSchritt*1.5,YSchritt*3,$AAAA00);ligh bluegreen
  Box(XSchritt*8.5,YSchritt*2,xSchritt*1.5,YSchritt*3,$00AA44);green
  Box(XSchritt*10,YSchritt*2,xSchritt*1.5,YSchritt*3,$FF00FF);purple
  Box(XSchritt*11.5,YSchritt*2,xSchritt*1.5,YSchritt*3,$0000FF);red
  Box(XSchritt*13,YSchritt*2,xSchritt*1.5,YSchritt*3,$FF0000);blue
  Box(XSchritt*14.5,YSchritt*2,xSchritt*1.5,YSchritt*3,$000000);black
 
  Box(XSchritt*4,YSchritt*5,xSchritt*3,YSchritt*2,$000000);black
  Box(XSchritt*7,YSchritt*5,xSchritt*3,YSchritt*2,$505050);darkgrey
  Box(XSchritt*10,YSchritt*5,xSchritt*3,YSchritt*2,$A0A0A0);lighgrey
  Box(XSchritt*13,YSchritt*5,xSchritt*3,YSchritt*2,$FFFFFF);white

  Box(XSchritt*4,YSchritt*7,xSchritt*12,YSchritt*3,$FFFFFF);white
  Box(XSchritt*6,YSchritt*7+1,xSchritt*8,YSchritt-1,$000000);black
  Box(XSchritt*5.5,YSchritt*8,xSchritt*10.5,YSchritt,$505050);darkgrey

  For I=1 To 5
   Box(XSchritt*6 + (I* XSchritt/3),YSchritt*8,xSchritt/6,YSchritt,$FFFFFF);white
   Box(XSchritt*6 + XSchritt/6 + (I*XSchritt/3),YSchritt*8,xSchritt/6,YSchritt,$000000);white
   ;Box(XSchritt*4.25+ I*(XSchritt/4),YSchritt*8,xSchritt/4,YSchritt,$000000);black
  Next I

  For I=1 To 10
   Box(XSchritt*8 + (I* XSchritt/6),YSchritt*8,xSchritt/12,YSchritt,$FFFFFF);white
   Box(XSchritt*8 + XSchritt/12 + (I*XSchritt/6),YSchritt*8,xSchritt/12,YSchritt,$000000);white
   ;Box(XSchritt*4.25+ I*(XSchritt/4),YSchritt*8,xSchritt/4,YSchritt,$000000);black
  Next I

  mschritt=2
  For I=1 To 20
   Box(XSchritt*10.5 + (I* Mschritt*2),YSchritt*8,mSchritt,YSchritt,$FFFFFF);white
   Box(XSchritt*10.5 + 2 + (I*mSchritt*2),YSchritt*8,mschritt,YSchritt,$000000);white
   ;Box(XSchritt*4.25+ I*(XSchritt/4),YSchritt*8,xSchritt/4,YSchritt,$000000);black
  Next I
 
 
  Box(XSchritt*13,YSchritt*8,xSchritt*2.5,YSchritt,RGB(174,84,0));brown
 
  FrontColor($FF,$FF,$FF)
  DrawingFont(FontID())
  Locate((SCREEN_X - TextLength(sender) )/2,YSchritt*7-2)
  DrawText(Sender)
 
  LineXY(SCREEN_X/2, YSchritt*6,SCREEN_X/2, YSchritt*9 , $FFFFFF)
  LineXY(SCREEN_X/2+xSchritt/4, YSchritt*9,SCREEN_X/2+xSchritt/4, YSchritt*10, $000000)
  LineXY(xSchritt*9.75, YSchritt*9,SCREEN_X/2+xSchritt/4, YSchritt*9, $000000)
  LineXY(xSchritt*9.75, YSchritt*9,SCREEN_X/2+xSchritt/4, YSchritt*10, $000000)
  FillArea(SCREEN_X/2, YSchritt*9.1, 0, 0)


  Box(XSchritt*4,YSchritt*10,xSchritt*8,YSchritt,$3333FF);red
  Box(XSchritt*4,YSchritt*11,xSchritt*8,YSchritt,$FF3333);blue
  Box(XSchritt*12,YSchritt*10,xSchritt*4,YSchritt*2,$505050);darkgrey

  ;Draw circle
  DrawingMode(4)
  Ellipse(SCREEN_X/2, SCREEN_Y/2, SCREEN_Y/2 -1,SCREEN_Y/2 -1 , $FFFFFF)
  EndIf
  If Mode=2
   For y = 0 To SCREEN_Y
    For x = 0 To SCREEN_X
          noise = seed;
          noise = noise >> 3
          noise = noise ! seed
          carry = noise & 1
          seed = seed >> 1
          seed = seed | ( carry << 30)
          noise = noise & $FF
           
          *Screen.LONG = DrawingBuffer()
          *Screen + (Pitch * y) +  (x*4) 
          ;*Screen\l =Random(1) * $FFFFFF
          *Screen\l = (noise<<16) | (noise << 8) | noise
    Next x
   Next y
  EndIf
  StopDrawing()
 EndIf
 Delay(1)
 ExamineKeyboard()
 Until KeyboardPushed(#PB_Key_Escape)
 
Else
  MessageRequester("Error", "Can't open a 640*480 - 16 bit screen !", 0)
EndIf
GlobalFree_(mem1)
GlobalFree_(mem2)
End 
Bild
Win11 Pro 64-Bit, PB_6.11b1
Antworten