Effektcodes und sonstiger Unnütz
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
Effektcodes und sonstiger Unnütz
Zeigt mal lustige kleine Codes die grafische Effekte,
Physikkramm oder sonst irgendwas lustiges machen.
Physikkramm oder sonst irgendwas lustiges machen.
I´a dllfreak2001
Hier ein kleiner Code von mir:
Er simuliert die Bewegung eines Doppelpendels, deren Bewegungsgleichung ich vorher in "Theoretische Physik = Mechanik" hergeleitet habe.
Stichwort: Differentialgleichungen, Lagrangefunktion
Im Programm einfach mal ein bisschen mit den Startbedingungen spielen
Er simuliert die Bewegung eines Doppelpendels, deren Bewegungsgleichung ich vorher in "Theoretische Physik = Mechanik" hergeleitet habe.
Stichwort: Differentialgleichungen, Lagrangefunktion
Im Programm einfach mal ein bisschen mit den Startbedingungen spielen
Code: Alles auswählen
InitSprite()
xP = 400
yP = 400
xP2 = xP/2
yP2 = yP/2
OpenWindow(0, 0, 0, xP+200, yP, "SCREEN", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 200, 0, xP, yP, 0, 0, 0)
CreateSprite(1, xP, yP)
Phi1.f = 1
Phi1_.f = 0
Phi1__.f = 0
Phi2.f = -2
Phi2_.f = 0
Phi2__.f = 0
l1.f = 100
l2.f = 100
m1.f = 10
m2.f = 10
g.f = 9.81/70
TextGadget(110, 10, 10, 80, 20, "Masse 1") : StringGadget(111, 100, 10, 80, 20, StrF(m1))
TextGadget(120, 10, 40, 80, 20, "Länge 1") : StringGadget(121, 100, 40, 80, 20, StrF(l1))
TextGadget(130, 10, 70, 80, 20, "Phi 1") : StringGadget(131, 100, 70, 80, 20, StrF(Phi1))
TextGadget(210, 10, 110, 80, 20, "Masse 2") : StringGadget(211, 100, 110, 80, 20, StrF(m2))
TextGadget(220, 10, 140, 80, 20, "Länge 2") : StringGadget(221, 100, 140, 80, 20, StrF(l2))
TextGadget(230, 10, 170, 80, 20, "Phi 2") : StringGadget(231, 100, 170, 80, 20, StrF(Phi2))
ButtonGadget(0, 10, 300, 180, 20, "Simulation starten")
Repeat
Delay(5)
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
Select EventGadget()
Case 0
UseBuffer(1)
ClearScreen(0)
UseBuffer(-1)
Phi1_.f = 0
Phi1__.f = 0
Phi2_.f = 0
Phi2__.f = 0
Phi1 = ValF(GetGadgetText(131))
Phi2 = ValF(GetGadgetText(231))
x1_ = 0
Case 111
m1 = ValF(GetGadgetText(111))
Case 121
l1 = ValF(GetGadgetText(121))
Case 131
Phi1 = ValF(GetGadgetText(131))
Case 211
m2 = ValF(GetGadgetText(211))
Case 221
l2 = ValF(GetGadgetText(221))
Case 231
Phi2 = ValF(GetGadgetText(231))
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case 0
EndSelect
EndSelect
Until Not Event
ClearScreen(0)
For n = 1 To 10
Phi1__ = -g/l1*Sin(Phi1) -m2/(m1+m2)*(l2/l1)*(Cos(Phi2-Phi1)*Phi2__+Sin(Phi1-Phi2)*Phi2_*Phi2_)
Phi2__ = -g/l2*Sin(Phi2) -(l1/l2)*(Cos(Phi2-Phi1)*Phi1__-Sin(Phi1-Phi2)*Phi1_*Phi1_)
Next
Phi1_ + Phi1__
Phi1 + Phi1_
Phi2_ + Phi2__
Phi2 + Phi2_
x1 = xP2 + Sin(Phi1)*l1
y1 = yP2 + Cos(Phi1)*l1
x2 = x1 + Sin(Phi2)*l2
y2 = y1 + Cos(Phi2)*l2
If x1_
StartDrawing(SpriteOutput(1))
LineXY(x1, y1, x1_, y1_, $5050A0)
LineXY(x2, y2, x2_, y2_, $50A000)
StopDrawing()
EndIf
x1_ = x1
y1_ = y1
x2_ = x2
y2_ = y2
DisplaySprite(1,0,0)
StartDrawing(ScreenOutput())
DrawingMode(1)
LineXY(xP2, yP2, x1, y1, $808080)
Circle(x1, y1, 5, $A0A0F0)
LineXY(x1, y1, x2, y2, $808080)
Circle(x2, y2, 5, $A0F0A0)
DrawText(0, 50, StrF(E), $FFFFFF)
StopDrawing()
FlipBuffers()
ForEver
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
Genial
Jetzt auch was von mir...
Mit Maustaste sprüht man Partikel, der Gelbe Punkt ist der Mauscursor.

Jetzt auch was von mir...
Mit Maustaste sprüht man Partikel, der Gelbe Punkt ist der Mauscursor.
Code: Alles auswählen
InitSprite()
InitSprite3D()
InitKeyboard()
InitMouse()
ExamineDesktops()
#fieldw = 99
#fieldh = 74
#fscale = 8
#pcount = 8000
OpenScreen(800,600,32,"Feld")
CreateSprite(0,20,20,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(0))
For n = 1 To 9
Circle(9,9,9-n,RGB(7*n,3*n,0))
Next
StopDrawing()
CreateSprite3D(0,0)
Structure Feld
x.f
y.f
EndStructure
Dim field.Feld(#fieldw,#fieldh)
dfield.b = 0
Structure Partikel
x.f
y.f
mx.f
my.f
EndStructure
Dim part.Partikel(#pcount)
For n = 0 To #pcount
part(n)\x = Random((#fieldw+1)*#fscale-1)
part(n)\y = Random((#fieldh+1)*#fscale-1)
part(n)\mx = (Random(200)-100)/100
part(n)\my = (Random(200)-100)/100
Next
Repeat
ExamineKeyboard()
ExamineMouse()
mx.l = MouseX()
my.l = MouseY()
If KeyboardReleased(#PB_Key_Q): If dfield = 0: dfield = 1 :Else: dfield = 0 :EndIf:EndIf
StartDrawing(ScreenOutput())
Circle(mx,my,2,RGB(255,255,0))
If MouseButton(1)
For k = 0 To 11
gn + 1
If gn > #pcount: gn = 0: EndIf
part(gn)\x = mx
part(gn)\y = my
part(gn)\mx = (Random(8000)-4000)/100
part(gn)\my = (Random(8000)-4000)/100
Next
EndIf
If dfield = 1
For x = 0 To #fieldw:For y = 0 To #fieldh
Line(x*#fscale,y*#fscale,field(x,y)\x*10,field(x,y)\y*10,RGB(55,55,55))
Next:Next
EndIf
StopDrawing()
Start3D()
Sprite3DBlendingMode(5,7)
For n = 0 To #pcount
ox.l = Round(part(n)\x/#fscale,0)
oy.l = Round(part(n)\y/#fscale,0)
If ox < 0 Or ox> #fieldw: CloseScreen(): MessageRequester("dsda","ox = " + Str(ox) + " x = " + StrF(part(n)\x)+ " y = " + StrF(part(n)\y)):EndIf
If oy < 0 Or oy> #fieldh: CloseScreen(): MessageRequester("dsda","oy = " + Str(oy)+ " x = " + StrF(part(n)\x)+ " y = " + StrF(part(n)\y)):EndIf
tx.f = field(ox,oy)\x
ty.f = field(ox,oy)\y
;field(ox,oy)\x = tx + part(n)\mx/2
;field(ox,oy)\y = ty + part(n)\my/2
field(ox,oy)\x = (tx + part(n)\mx)/5
field(ox,oy)\y = (ty + part(n)\my)/5
part(n)\mx = 4*field(ox,oy)\x
part(n)\my = 4*field(ox,oy)\y
; part(n)\my + 0.002
part(n)\x + part(n)\mx
part(n)\y + part(n)\my
If part(n)\x < 0
part(n)\x = (#fieldw+1)*#fscale-1
;part(n)\mx = -part(n)\mx/1.5
ElseIf part(n)\x > (#fieldw+1)*#fscale-1
part(n)\x = 0
;part(n)\mx = -part(n)\mx/1.5
EndIf
If part(n)\y < 0
part(n)\y = (#fieldh+1)*#fscale-1
;part(n)\my = -part(n)\my/1.5
ElseIf part(n)\y > (#fieldh+1)*#fscale-1
part(n)\y = 0
;part(n)\my = -part(n)\my/1.5
EndIf
DisplaySprite3D(0,part(n)\x-9,part(n)\y-9,100)
Next
Stop3D()
FlipBuffers()
ClearScreen(0)
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
End
I´a dllfreak2001
@STARGATE: witzig, vor allem, wenn man etwas übertreibt und das Pendel
schleudern lässt
@dllfreak2001: Cool, sieht aus wie die Bewegung der Erde in der zeitlupe.
Kontinente entstehen und zerfallen wieder. Genial
schleudern lässt


@dllfreak2001: Cool, sieht aus wie die Bewegung der Erde in der zeitlupe.
Kontinente entstehen und zerfallen wieder. Genial

Zuletzt geändert von Andesdaf am 20.11.2008 20:25, insgesamt 1-mal geändert.
Win11 x64 | PB 6.20
@dllfreak2001
wenn es nicht so laggen würde, wäre das durchaus was für ein Spiel als Effekt
wenn es nicht so laggen würde, wäre das durchaus was für ein Spiel als Effekt
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
Noch mehr Unfug:
Muss aber nicht auf allen Grafikkarten laufen...
Mach aus deinem Desktop ein Picasso:
Muss aber nicht auf allen Grafikkarten laufen...
Code: Alles auswählen
InitSprite()
InitSprite3D()
InitKeyboard()
InitMouse()
OpenScreen(1024,768,32,"Nazrah-Lichtcheck")
CreateSprite(0,32,32,0)
CreateSprite(1,32,32,0)
StartDrawing(SpriteOutput(0))
Box(0,0,32,32,RGB(255,200,100))
Box(4,4,23,23,RGB(200,150,50))
StopDrawing()
StartDrawing(SpriteOutput(1))
Box(0,0,32,32,RGB(10,50,0))
For n = 0 To 1280
Line(Random(32),Random(38),0,Random(2),RGB(Random(50),70+Random(150),Random(50)))
Next
StopDrawing()
#Maph = 21
#Mapw = 29
Dim Map.l(#Mapw,#Maph)
For x = 0 To #Mapw : For y = 0 To #Maph
Map(x,y) = Random(1)
Next:Next
CreateSprite(2,32,32,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(2))
Box(0,0,32,32,RGB(1,1,1))
StopDrawing()
CreateSprite3D(2,2)
CreateSprite(3,64,64,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(3))
For r = 31 To 1 Step -1
Circle(31,31,r,RGB(1*(187-r*6),1*(187-r*6),1*(187-r*6)))
Next
StopDrawing()
CreateSprite3D(3,3)
CreateSprite(4,256,256,#PB_Sprite_Texture)
StartDrawing(SpriteOutput(4))
Box(0,0,128,128,RGB(255,255,255))
StopDrawing()
CreateSprite3D(4,4)
modea = 9
modeb = 9
modea2 = 5
modeb2 = 7
modea3 = 11
modeb3 = 5
inv = 1
fadenight.f = 1
Sprite3DQuality(1)
#Offsetx = 32
#Offsety = 32
StartDrawing(SpriteOutput(2))
Box(0,0,32,32,RGB(fadenight,fadenight,fadenight))
StopDrawing()
Repeat
ExamineKeyboard()
ExamineMouse()
mx.l = MouseX()
my.l = MouseY()
fadenight + MouseWheel()*4
If fadenight > 255
fadenight = 255
ElseIf fadenight < 1
fadenight = 1
EndIf
If MouseWheel() <> 0
StartDrawing(SpriteOutput(2))
Box(0,0,32,32,RGB(fadenight,fadenight,fadenight))
StopDrawing()
EndIf
If KeyboardReleased(#PB_Key_1)
modea + 1
If modea > 13
modea = 0
EndIf
EndIf
If KeyboardReleased(#PB_Key_2)
modeb + 1
If modeb > 13
modeb = 0
EndIf
EndIf
If KeyboardReleased(#PB_Key_4)
modea2 + 1
If modea2 > 13
modea2 = 0
EndIf
EndIf
If KeyboardReleased(#PB_Key_5)
modeb2 + 1
If modeb2 > 13
modeb2 = 0
EndIf
EndIf
If KeyboardReleased(#PB_Key_7)
modea3 + 1
If modea3 > 13
modea3 = 0
EndIf
EndIf
If KeyboardReleased(#PB_Key_8)
modeb3 + 1
If modeb3 > 13
modeb3 = 0
EndIf
EndIf
If KeyboardReleased(#PB_Key_Space)
If inv = 0
inv = 1
Else
inv = 0
EndIf
EndIf
For x = 0 To #Mapw : For y = 0 To #Maph
DisplaySprite(Map(x,y),#Offsetx + x*32,#Offsety + y*32)
Next:Next
rad.f = Sqr(Pow(384-my,2)+Pow(512-mx,2))
ang.f = ATan((384-my)/(512-mx))
If mx > 512
ang -#PI
EndIf
Start3D()
Sprite3DBlendingMode(modea3, modeb3)
DisplaySprite3D(4,0,0,150)
Sprite3DBlendingMode(modea2,modeb2)
ZoomSprite3D(3,512,512)
DisplaySprite3D(3,mx-256,my-256,(inv*255+fadenight*(1-2*inv))/2)
Sprite3DBlendingMode(modea, modeb)
ZoomSprite3D(2,1024,768)
DisplaySprite3D(2,0,0,100)
Stop3D()
StartDrawing(ScreenOutput())
DrawText(0,0,"a: " +Str(modea)+" b: " + Str(modeb) + " a2: " +Str(modea2)+" b2: " + Str(modeb2)+ " a3: " +Str(modea3)+" b3: " + Str(modeb3) + " fade: " + Str(fadenight) + " inv: " +Str(inv) )
Line(512,384,Cos(ang)*132,Sin(ang)*132,RGB(255,255,255))
Line(512,384,Cos(ang+#PI/2)*132,Sin(ang+#PI/2)*132,RGB(255,255,255))
StopDrawing()
FlipBuffers()
ClearScreen(0)
Delay(1)
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
End
Code: Alles auswählen
Global Mem.l
; hier werden 1024 byte speicher reserviert
Mem = AllocateMemory(1024)
Procedure.l DesktopOutput()
PokeL(Mem, 1)
ProcedureReturn Mem
EndProcedure
Maus.Point
Global mvx.f,mvy.f,mx.f,my.f
mvx = 12-Random(8)
mvy = 12 - Random(8)
mx = Random(1280)
my = Random(800)
Repeat
If mx > 1280
mx = 1280
mvx = -15-Random(800)/100
EndIf
If mx < 0
mx = 0
mvx = 15+Random(800)/100
EndIf
If my > 800
my = 800
mvy = -15-Random(800)/100
EndIf
If my < 0
my = 0
mvy = 15+Random(800)/100
EndIf
mx + mvx
my+mvy
; hier werden die maus koordinaten ausgelesen
GetCursorPos_(Maus)
;
; hier beginnt die verwirrung
StartDrawing(DesktopOutput())
; mx = Maus\x
; my = Maus\y
For m = 0 To 1280
rot = Random(1440)
rad = Random(128)
fall = my+ Sin(2*x*((rot/4)/360))*rad
x = mx + Cos(2*x*((rot/4)/360))*rad
fx = x
c1.l = Point(fx,fall)
c2.l = Point(fx+1,fall)
c3.l = Point(fx-1,fall)
c4.l = Point(fx,fall+1)
c5.l = Point(fx,fall-1)
c6.l = Point(fx-1,fall+1)
c7.l = Point(fx+1,fall+1)
c8.l = Point(fx+1,fall-1)
c9.l = Point(fx-1,fall-1)
rd = (Red(c1)+Red(c2)+Red(c3)+Red(c4)+Red(c5)+Red(c6)+Red(c7)+Red(c8)+Red(c9))/9
gr = (Green(c1)+Green(c2)+Green(c3)+Green(c4)+Green(c5)+Green(c6)+Green(c7)+Green(c8)+Green(c9))/9
bl = (Blue(c1)+Blue(c2)+Blue(c3)+Blue(c4)+Blue(c5)+Blue(c6)+Blue(c7)+Blue(c8)+Blue(c9))/9
rg.l = RGB(rd,gr,bl)
If RGB(0,0,0) <> rg
LineXY(mx,my,fx,fall,rg)
;Box(x,fall,8,8,rg)
;Box(x,fall,64,64,0)
EndIf
Next
; Line(0,Random(1024),1280,0,RGB(0,0,0))
;Circle(Random(1280),Random(1024),Random(132),RGB(0,0,0))
; Line(Maus\x-16, Maus\y-16,32,32, RGB(0,0,0))
; Line(Maus\x+16, Maus\y-16,-32,32, RGB(0,0,0))
StopDrawing()
;
; delay für cpu entlastung
Delay(1)
run + 1
Until run > 500
End
I´a dllfreak2001
- KeyKon
- Beiträge: 1412
- Registriert: 10.09.2004 20:51
- Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit) - Wohnort: Ansbach
- Kontaktdaten:
Ein einfacher Partikeleffekt:
http://www.purebasic.fr/german/viewtopi ... 4&start=11
http://www.purebasic.fr/german/viewtopi ... 4&start=11
(\/) (°,,,°) (\/)