Das ist besser als Alkohol .. [Optische Täuschung]

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

Moep

Betreff: Das ist besser als Alkohol .. [Optische Täuschung]

BeitragMo, Jul 28, 2008 23:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Moinsen,

ich hab mal wieder eine kleine Rumspielerei.. Cool

Einfach 30 Sekunden lang auf die Mitte gucken und danach woanders hin. Am besten auf die eigene Hand oder so.

Mit [Leertaste] wechselt man den Modus. Sind beide sehr interessant.

Der Code ist eigentlich recht simpel und verständlich (hoffe ich zumindest Laughing )

Falls ihr ihn nicht für "Codearchivwürdig" haltet,dann geh ich gleich in eine Ecke und schäme mich dort.

Code: [AUSKLAPPEN]
Strict
Framework brl.max2d
Import brl.glmax2d
Import brl.basic
Import brl.timer

Global appTimer:TTimer=CreateTimer(60)  'Wir wollen ja die CPU nicht unnötig auslasten :P

Graphics 1024, 768, 32               'Vollbild
Global gw = GraphicsWidth()          
Global gh = GraphicsHeight()



Type TRect                        'Die Klasse für die Vierecke
   Global rList:TList = CreateList()
   Field m#
   Field sp#
   
   Field x#
   Field y#
   
   
   Field Size#
   
   Function Create(x#, y#, Size#, m#, sp# = 1)
      Local r:TRect = New TRect
      r.x = x
      r.y = y
      r.m = m
      r.Size = Size
      r.sp = sp
   End Function
   
   Function UpdateAll()
      For Local r:TRect = EachIn rList
         r.Update()
      Next
   End Function
   

   
   Method New()
      rList.AddLast(Self)
   End Method
   
   Method Remove()
      rList.Remove(Self)
   End Method
   
   Method Update()
      Size:+sp
      
      Select 1               'Werden die Vierecke größer oder kleiner?
         Case sp > 0
            If Size > m
               Remove()
            End If
         Case sp < 0
            If Size < m
               Remove()
            End If
      End Select
      rect x, y, Size            'Malen
   End Method
   
   Function DeleteAll()
      For Local r:TRect = EachIn rList
         r.Remove()
      Next
   End Function
   
End Type

SetOrigin gw/2,gh/2

Local time
Local rectTimer
Local mode=False

SetLineWidth 5

While Not KeyHit(KEY_ESCAPE) And Not AppTerminate()
   WaitTimer appTimer
   
   If KeyHit(KEY_SPACE)    ' Modus wechseln
      mode=Not mode
      If mode=0
         time=0
         TRect.DeleteAll()   'Vierecke löschen, falls welche da waren
      Else
         For Local i=0 To 20      ' Schonmal ein paar erstellen damit man am Anfang schon was sehen kann
            TRect.Create(gw / 2, gh / 2, i*50, gw *1.01, 4)
         Next
      End If
   endif
   
   If mode
      If MilliSecs() - rectTimer > 160
         rectTimer = MilliSecs()
         TRect.Create(gw / 2, gh / 2, 0, gw *1.01, 4)
      EndIf
   Else   
      time:+1
      Spirale(0,0,1,30,700,time*20)
   EndIf
   
    TRect.UpdateAll()

   Flip 0
   Cls
Wend

Function rect(x#, y#, s#, b# = 10)
   SetOrigin x, y

   SetHandle s / 2, - s / 2 + b
   DrawRect 0, 0, s - b, b
   
   SetHandle s / 2, s / 2
   DrawRect 0, 0, s - b, b

   SetHandle - s / 2 + b, s / 2
   DrawRect 0, 0, b, s
   
   SetHandle s / 2, s / 2
   DrawRect 0, 0, b, s - b

   SetHandle 0, 0
End Function

Function Spirale(x,y,l#,st#=1,a,g#=0,Logr#=0,s#=1)   ' Die Funktion ist aus dem Blitzbasic Codearchiv
   Local amount#=(360/st#),l2#=0
   For Local i=0 To a
      If Logr=0 Then l2#=l2#+l#
      If Logr<>0 Then l#=l#*Logr l2#=l2#+l#
      DrawLine (l2-l)*Cos(g#+amount#*i)+x,((l2-l)*Sin(g#+amount#*i))*s+y,l2*Cos(g#+amount#*(i+1))+x,(l2*Sin(g#+amount#*(i+1)))*s+y
   Next
End Function


mfg Moep
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42

Achtung: Suchtgefahr!
moep123.ohost.de
  • Zuletzt bearbeitet von Moep am Do, Jul 31, 2008 19:27, insgesamt 2-mal bearbeitet

Smily

BeitragDi, Jul 29, 2008 8:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hoi Moep

Die Ansätze sind ganz gut, aber das ganz würde sich sicher noch ein ganzes stück ausbauen lassen Wink
(Unterschiedliche Farben, Langsam wechselnde Geschwindigkeiten, mehrere Verschieden schnell drehende Spiralen in unterschiedlichen Farben übereinanderlegen und mit Alphablend und Lightblend rumspielen, evtl auch gegeneinander drehen lassen.. usw. usf, die Möglichkeiten sind grenzenlos Wink )

cu,
Smily0412
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Moep

BeitragDi, Jul 29, 2008 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Einiges davon hab ich schon ausprobiert.. Dabei verringert sich nur der Verzerrungseffekt. Wenn man Farben reinmacht is dies der Fall und verschiedene Blends kombinieren bringt auch nicht wirklich viel. Confused .

Deswegen hab ichs bei dieser simplen Variante gelassen.


mfg
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42

Achtung: Suchtgefahr!
moep123.ohost.de

Smily

BeitragDi, Jul 29, 2008 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kam mit ein wenig rumspielen jetzt auf die zwei dinge, die auch schon leicht psychotisch aussehen:


Code: [AUSKLAPPEN]
Strict

Graphics 1024, 768       
SetBlend LightBlend


SetOrigin GraphicsWidth()/2,GraphicsHeight()/2
SetLineWidth 80

Local time

While Not KeyHit(KEY_ESCAPE) And Not AppTerminate()
   time :+ 1
   SetColor 255,0,0
   Spirale(0,0,1,30,700,time*10)
   SetColor 0,255,0
   Spirale(0,0,1,30,700,time*20)
   SetColor 0,0,255
   Spirale(0,0,1,30,700,time*30)
   Flip
   Cls
Wend

Function Spirale(x,y,l#,st#=1,a,g#=0,Logr#=0,s#=1)   ' Die Funktion ist aus dem Blitzbasic Codearchiv
   Local amount#=(360/st#),l2#=0
   For Local i=0 To a
      If Logr=0 Then l2#=l2#+l#
      If Logr<>0 Then l#=l#*Logr l2#=l2#+l#
      DrawLine (l2-l)*Cos(g#+amount#*i)+x,((l2-l)*Sin(g#+amount#*i))*s+y,l2*Cos(g#+amount#*(i+1))+x,(l2*Sin(g#+amount#*(i+1)))*s+y
   Next
End Function


Code: [AUSKLAPPEN]
Strict

Graphics 1024, 768       
SetBlend LightBlend


SetOrigin GraphicsWidth()/2,GraphicsHeight()/2
SetLineWidth 80

Local time

While Not KeyHit(KEY_ESCAPE) And Not AppTerminate()
   time = time + 1   
   SetColor 20,20,20
   For Local i:Int = 1 To 10
      Spirale(0,0,1,30,700,time*i)
   Next
   Flip
   Cls
Wend

Function Spirale(x,y,l#,st#=1,a,g#=0,Logr#=0,s#=1)   ' Die Funktion ist aus dem Blitzbasic Codearchiv
   Local amount#=(360/st#),l2#=0
   For Local i=0 To a
      If Logr=0 Then l2#=l2#+l#
      If Logr<>0 Then l#=l#*Logr l2#=l2#+l#
      DrawLine (l2-l)*Cos(g#+amount#*i)+x,((l2-l)*Sin(g#+amount#*i))*s+y,l2*Cos(g#+amount#*(i+1))+x,(l2*Sin(g#+amount#*(i+1)))*s+y
   Next
End Function
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets

"Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!"
stummi.org

Moep

BeitragMi, Jul 30, 2008 23:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ui das sieht ja toll aus Very Happy

Allerdings sollte mein bei Linewidth lieber 5 nehmen , sieht besser aus.


[ironie]
PS: Ich bin jedes mal überrascht wie Aktiv die User im Blitzmax Forum sind Rolling Eyes
[/ironie]


mfg
Hardstyle Schleichwerbung:
http://www.youtube.com/user/Hackepeter42

Achtung: Suchtgefahr!
moep123.ohost.de
 

#Reaper

Newsposter

BeitragDo, Jul 31, 2008 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Beim ersten Code seh ich im ersten Modus garnichts, außer ich stelle die LineWidth z.B. auf 5 runter.
Gleiches gilt für Smily's Codes. Confused

Den Effekt kannte ich schon, und ich finde ihn toll. Very Happy
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group