Seite 3 von 5

Verfasst: 14.03.2008 23:01
von scholly
Wenn Du meinst, olly...

arng_ugs_07

Verfasst: 20.03.2008 20:16
von scholly
Ich hab mal wieder einen :D

; About TNG Requester scholly 07 Version 1.0
; by scholly
; (intern arng_ugs_07.pb)
; WindowsXP(SP2), PB 4.10
;
; Textgadgets + Screen mit 2 Scrollern (normal und sinus) und einem netten Rahmen

Code: Alles auswählen

; About TNG Requester scholly 07 Version 1.0
; by scholly
; (intern arng_ugs_07.pb)
; WindowsXP(SP2), PB 4.10
; 
; Textgadgets + Screen mit 2 Scrollern (normal und sinus) und einem netten Rahmen

Declare ar7()

ar7()
End

Procedure ar7()

  If InitSprite()=0 
    MessageRequester("ERROR","Cant initialize screen !",#MB_ICONERROR)
    End
  EndIf

  #ar7_sinscroll_factor   = 0.015
  #ar7_sinscroll_y_offset = 45
  #ar7_horscroll_y_offset = 230

  ar7_font_size    = 64
  ar7_font_id      = LoadFont(#PB_Any,"Verdana", ar7_font_size,#PB_Font_Bold)

  ar7_quit = #False

  ar7_win_titel.s  = "About-Requester - TNG "
  ar7_win_width    = 400
  ar7_win_height   = 480 
 
  ar7_win_ID = OpenWindow(#PB_Any,0,0,ar7_win_width,ar7_win_height,ar7_win_titel,#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
  If ar7_win_ID = 0
    MessageRequester("ERROR","Can't open About-windowd screen !",#MB_ICONERROR)
    End
  EndIf

  If CreateGadgetList(WindowID(ar7_win_ID)) = 0
    MessageRequester("ERROR","Can't create Gadgetlist !",#MB_ICONERROR)
    CloseWindow(ar7_win_ID)
    End
  EndIf
  
  ar7_tg1 = TextGadget(#PB_Any,0, 5,ar7_win_width,20,"PureBoard Requester Suite",#PB_Text_Center)
  ar7_tg1 = TextGadget(#PB_Any,0,30,ar7_win_width,20,"schollys Requester 7 Version 4711",#PB_Text_Center)
  ar7_tg1 = TextGadget(#PB_Any,0,55,ar7_win_width,20,"Copyleft März 2008",#PB_Text_Center)

  If OpenWindowedScreen(WindowID(ar7_win_ID), 0, 80, ar7_win_width, ar7_win_height-80, 0, 0, 0) = 0
    MessageRequester("ERROR","Can't open windowd screen !",#MB_ICONERROR)
    End
  EndIf

  ; Sinus-Scroller vorbereiten Anfang
  ar7_sinscrolltext.s = "Dieser Scroller basiert auf Code von Danilo: http://www.purebasic.fr/german/viewtopic.php?t=3020&start=11 "
  ar7_sinscroll_x_offset = ar7_win_width
  
  StartDrawing(ScreenOutput())
    DrawingFont(FontID(ar7_font_id))
    ar7_sintxt_len.l = TextWidth(ar7_sinscrolltext)
  StopDrawing()

  ar7_sprite1_nr = CreateSprite(#PB_Any,ar7_sintxt_len,ar7_win_height)
  If ar7_sprite1_nr=0
    CloseScreen()
    MessageRequester("ERROR","Can't init sprite ar7_sprite1_nr!",#MB_ICONERROR)
    End
  EndIf

  StartDrawing(SpriteOutput(ar7_sprite1_nr))
    DrawingMode(1)
    DrawingFont(FontID(ar7_font_id))
    FrontColor(#Blue)
    DrawText(10,10,ar7_sinscrolltext)
  StopDrawing()

  ; Sinus-Scroller vorbereiten Ende
  
  ; H-Scroller vorbereiten Anfang
  ar7_horscrolltext.s = "Der Rahmen basiert auf einer Grafikspielerei von netzer und Fluid Byte: http://www.purebasic.fr/german/viewtopic.php?t=16026 "
  ar7_horscroll_x_offset = ar7_win_width
  
  StartDrawing(ScreenOutput())
    DrawingFont(FontID(ar7_font_id))
    ar7_hortxt_len.l = TextWidth(ar7_horscrolltext)
  StopDrawing()
  
  ar7_sprite2_nr = CreateSprite(#PB_Any,ar7_hortxt_len,ar7_win_height)
  If ar7_sprite2_nr=0
    CloseScreen()
    MessageRequester("ERROR","Cant init sprite ar7_sprite2_nr !",#MB_ICONERROR)
    End
  EndIf

  StartDrawing(SpriteOutput(ar7_sprite2_nr))
    DrawingMode(1)
    DrawingFont(FontID(ar7_font_id))
    FrontColor(#Red)
    DrawText(0,0,ar7_horscrolltext)
  StopDrawing()
  ; H-Scroller vorbereiten Ende
  
  Repeat
    
    Delay(1)
    FlipBuffers(0)
    If IsScreenActive()
      
      ClearScreen(RGB(0,0,0))
      
      c1 = RGB(r,g,b) : c2 = RGB(r,g,b) : c3 = RGB(r,g,b) : c4 = RGB(r,g,b)
      
      ;Ecke links oben soll unter dem Sinusscroller verschwinden
      StartDrawing(ScreenOutput())
        DrawingMode(1)
        For k = 1 To 40
          Line(00,00 + (k * 10),400 - (k * 10)*1.8,-(k * 10),c4)
        Next k
      StopDrawing()
             
      ;Sinus-Scroller darstellen Anfang
      y_sin.f + 0.05 
      If y_sin > 2*#PI 
        y_sin = 0  
      EndIf

      ar7_sinscroll_x_offset - 1 ;hier kann die Scrollgeschwindigkeit eingestellt werden....
      If ar7_sinscroll_x_offset < - ar7_sintxt_len
        ar7_sinscroll_x_offset = ar7_win_width 
      EndIf

      x = ar7_sinscroll_x_offset
      For a = 0 To ar7_sintxt_len
        ClipSprite(ar7_sprite1_nr,a,0,1,SpriteHeight(ar7_sprite1_nr))
        DisplayTransparentSprite(ar7_sprite1_nr,x,#ar7_sinscroll_y_offset+Sin(y_sin+#ar7_sinscroll_factor*a)*ar7_win_height/8)
        x+1
      Next a
      ;Sinus-Scroller darstellen Ende
        
      ;Ecke rechts oben soll über dem Sinusscroller liegen 
      StartDrawing(ScreenOutput())
        DrawingMode(1)
        For k = 1 To 40    
          Line(0 + (k * 10),00,400 - (k * 10),(k * 10)/1.8,c1) 
        Next k
      StopDrawing()     
             
      ;Ecke links unten soll unter dem H-Scroller liegen
      StartDrawing(ScreenOutput())
        For k = 1 To 40   
          Line(400,180 + (k/2 * 10),-(k * 10),400 - (k * 10),c2)      
        Next
      StopDrawing()

      ;H-Scroller darstellen Anfang
      ar7_horscroll_x_offset - 1 ;hier kann die Scrollgeschwindigkeit eingestellt werden....
      If ar7_horscroll_x_offset < - ar7_hortxt_len
        ar7_horscroll_x_offset = ar7_win_width
      EndIf
    
      DisplayTransparentSprite(ar7_sprite2_nr, ar7_horscroll_x_offset,#ar7_horscroll_y_offset) 
      ;H-Scroller darstellen ende
       
      StartDrawing(ScreenOutput())
  
        ;Ecke rechts unten soll über dem H-Scroller liegen
        For k = 1 To 40
          Line(00,180 + (k/2 * 10),(k * 10),400 - (k * 10),c3)
        Next k
          
        ;Umrandung in weiß zeichnen
        Box( 00, 00,400,  2,#White)
        Box( 00, 00,  2,400,#White)
        Box(398, 00,  2,400,#White)
        Box( 00,398,400,  2,#White)

        ;Zeichenfarbe des Rahmens Variieren
        If r < 255 And g = 0 And b = 0 : r + 1 : EndIf   
        If r = 255 And g < 255 And b = 0 : g + 1 : EndIf      
        If r = 255 And g = 255 And b < 255 : b + 1 : EndIf   
        If r > 0 And g = 255 And b = 255 : r - 1 : EndIf      
        If r = 0 And g > 0 And b = 255 : g - 1 : EndIf   
        If r = 0 And g = 0 And b > 0 : b - 1 : EndIf   
        If r = 0 And g = 0 And b = 1 : g = 1 : b = 0 : EndIf   
        If r = 0 And g < 255 And b = 0 : g + 1 : EndIf   
        If r < 255 And g = 255 And b < 255 : r + 1 : b + 1 : EndIf
         
        StopDrawing()

    EndIf
    
    ar7_EventID = WaitWindowEvent(1)
    If EventWindow() = ar7_win_ID
      If ar7_EventID = #PB_Event_CloseWindow
        ar7_quit = #True
        FreeSprite(ar7_sprite2_nr)
        FreeSprite(ar7_sprite1_nr)
        CloseScreen()
        CloseWindow(ar7_win_ID)
      EndIf
    EndIf
  
  Until ar7_quit = #True
  
  EndProcedure ;About-Requester 7

Verfasst: 20.03.2008 20:44
von Kaeru Gaman
scholly hat geschrieben:Und beim Austauschen wird dann nur

Code: Alles auswählen

Procedure Wup_1()
  ;... ruft zB Wup_2() auf
EndProcedure
gelöscht und der Rest bleibt drinne.
Ich möcht nicht wissen, wieviel "Leichen" nach 3 solcher Aktionen im Code noch 'rumfliegen :freak:
bitte schlag mal die Hilfe auf, und lies dir XIncludeFile durch.
jetzt, sofort, als erstes.

danach kann hier weitergeredet werden.

...mir ging der ton aller beteiligten auf der 2ten seite grad aufn keks....

PS:
benutzt du jetzt doch procs?
...what was the hussel about then anyways?

Verfasst: 20.03.2008 22:09
von HeX0R
Kaeru Gaman hat geschrieben: ...mir ging der ton aller beteiligten auf der 2ten seite grad aufn keks....
? :freak:

Verfasst: 20.03.2008 22:10
von scholly
Meine Güte, welche Laus ist Dir denn schonwieder über die Leber gelaufen, daß Du eine 7 Tage alte Suppe aufwärmst? :freak:
Bin ich ja garnicht von Dir gewohnt....:o
Kaeru Gaman hat geschrieben:benutzt du jetzt doch procs?
...what was the hussel about then anyways?
1. Ich hab keine Lust, mich mit Procedure-Evangelisten rumzuschlagen, die nur die Verwendung von Gosub kritisieren, aber nix zum Gegenstand des Threads beitragen.
2. Solang das Ziel (copy - paste - change - delete/exchange ohne Leichenreste) erreicht wird, is mir egal, was ich hier reinsetz, ne Proc oder ne Subroutine.
3. Für einige scheint es notwenig zu sein, daß jemand "Lernwilligkeit" demonstriert, bevor man sich mit dem Ergebnis und nicht der Form auseinandersetzt.

So, und jetzt schweig ich still, geh nach oben und rauch meinen Frust weg :lol:

Verfasst: 20.03.2008 22:20
von Fluid Byte
1. Ich hab keine Lust, mich mit Procedure-Evangelisten rumzuschlagen, die nur die Verwendung von Gosub kritisieren, aber nix zum Gegenstand des Threads beitragen.
Ruhig Brauner. Kritisiert hat hier keiner. Ich habe nun wirklich ausführlich im netten Ton beschrieben warum GOSUB's Unfug sind.
2. Solang das Ziel (copy - paste - change - delete/exchange ohne Leichenreste) erreicht wird, is mir egal, was ich hier reinsetz, ne Proc oder ne Subroutine.
Knieschuss! Genau deshalb solltest du auf Prozeduren umsteigen und dir die Verwendung von GOSUB's (bis auf wenige Ausnahmen) ganz schnell abgewöhnen.
3. Für einige scheint es notwenig zu sein, daß jemand "Lernwilligkeit" demonstriert, bevor man sich mit dem Ergebnis und nicht der Form auseinandersetzt.
Das hab ich getan und mein Standpunkt wird bestätigt.
So, und jetzt schweig ich still, geh nach oben und rauch meinen Frust weg
Solange es nur Zigaretten sind ... Bild

Verfasst: 20.03.2008 22:30
von Kaeru Gaman
hey scholly...
bekomms nich in den falschen Hals, aber ein (fast)-omni-kompatibles Include
mit ein paar Procs bei denen es genügt, wie aufgerufen wird,
ist den meisten heutigen Proggern nun mal lieber,
und kann nur beitragen zur verbreitung deiner versuche.

...und ich hab den antwort-button diesem "Verfasst am: 14 März 2008 17:18:09 " post gedrückt,
das war so ein überragendes "es langt" gefühl, weil ihr euch grad gegenseitig auf 380 gebracht hattet...

leider ist mir entgangen, wie alt das topic war... ich entschuldige mich öffentlich.
wieso zur hölle hatte ich das alles noch nicht gelesen?
ich war überzeugt, dass es neuer ist, weil ich mir gemerkt hätte,
wenn ich den monolog am anfang vorher schon mal gelesen hätte....

Verfasst: 20.03.2008 23:20
von scholly
Dann verstehst Du ja auch, warum ich fast explodiert bin, als auf den neuen, prozeduralen Code, so eine Reaktion erfolgte.
Und "die Zigarette danach" hat schnell geholfen, bin wieder bei 134-79-84 :lol:
Kaeru Gaman hat geschrieben:... aber ein (fast)-omni-kompatibles Include
mit ein paar Procs bei denen es genügt, wie aufgerufen wird,
ist den meisten heutigen Proggern nun mal lieber...

Muß ich jetzt gehen, weil ich nicht dazugehöre ?
FMPOV kommt es zu oft vor, daß über einen Code gemeckert wird, weil er zu alt (3.3,3.94, etc) ist, irgendwas braucht, was nich da ist (.pbi, Dll. gfx o.Ä) oder, besonders für Anfänger (auch wenn die weit älter als 14 sind), einfach nicht so schnell verständlich sind, wie für diejenigen, die seit Jahren täglich mit PB arbeiten.

Und grade das Thema "About-Requester" ist doch nun viel zu banal, als daß sich FMPOV so ein Aufheben um die Form lohnt.
Ich hab mir extra die Mühe gemacht, ohne externe Teile auszukommen, auch wenns wesentlich effekthaschender gewesen wäre, wenn ich einen Oldskool-Font, 'n altes tolles Amiga-Mod oder ein Super-Pic als Logo eingebunden hätte.
Aber dann wär nix mit copy-compile-like it-change it-use it gewesen, weil der geneigte Tester ersma mitm download der Zusatzfiles genervt würde.

Da ich keine optimalen Medien/Texte benutze, sind die Codes in diesem Thread doch nur Beispiele, wie man mit etwas Fantasie und einfachsten Mitteln (auch ohne zusätzliche Libs oder Includes) relativ schnell aus einem langweiligen About-Message-Requester einen Augen- oder sogar Ohrenschmaus machen kann :D

Und wenn Newbies angemacht werden, weil sie eine sofort einsetzbare Routine suchen, die in ihrem Proggie vielleicht genauso nebensächlich ist, wie es die About-Requester für viele sind, kann es doch irgendwie nicht sein, daß mein Code, der immerhin funktioniert, bekrittelt wird, weil er so wie er ist, nicht in das Konzept eines anderen paßt.

Manchmal ist nicht die Form, sondern das Aussehen bzw. die Message das wichtige.

Verfasst: 21.03.2008 00:44
von Fluid Byte
Muß ich jetzt gehen, weil ich nicht dazugehöre ?
Nein, aber vielleicht mal Gedanken drüber machen ob programmieren das Richtige für dich ist. Bild

Verfasst: 21.03.2008 00:51
von Kaeru Gaman
Fluid Byte hat geschrieben:
Muß ich jetzt gehen, weil ich nicht dazugehöre ?
Nein, aber vielleicht mal Gedanken drüber machen ob programmieren das Richtige für dich ist. Bild
dann überleg du dir mal, ob in foren zu posten für dich das richtige ist.... Bild