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.
; _________Physik_Fenster___________
; | |
; |Programmierer: Konstantin ***** |
; |Firma: KoMaNi |
; | |
; |--------|Beschreibung|------------|
; |Ist eine lustige Procedure um ein |
; |Fenster springen zu lassen |
; |__________________________________|
Procedure PhysikFenster()
Protected Anziehung ;Gibt die Geschwindigkeit der Anziehung an
Protected Huepfen ;Gibt die Hüpfkraft an
Protected Abweichung ;Gibt die Geschwindigkeit der Abweichung an
Protected Abweichung2 ;Gibt die Seitliche Abweichung nach rechts + | links- an
Protected Anziehung2 ;Gibt die Anziehung nach unten + | oben- an
Protected Geschwindigkeit ;Gibt an wie oft das Fenster verschoben wird
Protected WHoehe ;Bild Hoehe
Protected WBreite ;Bildbreite
Protected Breite ;Breiten koordinaten start punkt
Protected Hoehe ;Gibt die Hoehe des Fensters aus (zB zum Debugen)
Protected oldticks ;Counter von Windows
Protected oldHoehe ;Brechnung der max. Hoehe
Protected AufHoehe ;Auflösung Hoehe
Protected AufBreite ;Auflösung Breite
Protected i ;Zähl Variable
Protected v ;Zähl Variable
Protected c ;Zähl Variable
Protected l ;Zähl Variable
Protected a ;Zähl Variable
Protected x ;Zähl Variable
;______Hier_können_die_einzelnen_Faktoren_geändert_werden___________________________________________
Anziehung =1 ;Je mehr desto schwächer
Huepfen =70 ;Je mehr deto höher
Abweichung =1 ;weniger is mehr
;______Änderungen_hier_können_zu_einem_Ruckeln_führen_______________________________________________
Abweichung2 =5 ;5 ist gut, mehr is mehr
Anziehung2 =3 ;3 ist gut
Geschwindigkeit=30 ;Bild refresh zeit
;______Fenstereinstellungen_________________________________________________________________________
WHoehe =369 ;Hoehe des Bildes
WBreite =548 ;Breite des Bildes
Breite =100 ;Je mehr desto weiter rechts
;___________________________________________________________________________________________________
UseJPEGImageDecoder() ;Um JPGs einbinden zu können
If OpenWindow(1,Breite,0, WBreite , WHoehe , #PB_Window_Invisible|#PB_Window_BorderLess, "Physik") ;Fenster erstellen
SkinWin(WindowID(),CatchImage(0,?SkinPicture)) ;Fenster erstellen
HideWindow(1,0) ;Fenster anzeigen
EndIf
oldticks=GetTickCount_() ;Den Windows Tickcount auslesen
i=1
v=0
oldHoehe=8000 ;NUR zur höhenmessung benötigt
Repeat ;Hauptschleife öffnen
ExamineDesktops() ;Die Auflösung auslesen um das Bild dynamisch zur Auflösung springen zu lassen
AufHoehe=DesktopHeight(0) ;Hoehe ermitteln
AufBreite=DesktopWidth(0) ;Breite ermitteln
If oldticks + Geschwindigkeit < GetTickCount_() ; wollte kein delay beutzen kann aber dadurch ersetzt werden
oldticks=GetTickCount_() ;oldticks dem tickcount gleichstellen
If c=Abweichung And l=0 ;Seitliche Abweichung
Breite=Breite+Abweichung2
c=0
EndIf
If c=Abweichung And l=1
Breite=Breite-Abweichung2
c=0
EndIf
If v<3
c=c+1
EndIf
If Breite>AufBreite-WBreite
l=1
EndIf
If Breite<0
l=0
EndIf
;________________________________________________________________
If x=Anziehung ;Berechnet die Anziehung
a=a+Anziehung2
x=0
EndIf
x=x+1
If v=0 ;lässt den Gegenstand fallen
Hoehe=Hoehe+a
EndIf
If Hoehe=>AufHoehe-30-WHoehe And v=0 ;Wenn es den Boden erreicht...
v=1
a=0
oldHoehe=AufHoehe+800
y=0
EndIf
If v=1 ;Aufspringen
If Huepfen/i> 1.5
Hoehe=Hoehe-Huepfen+a+i*2.5+1
If Hoehe>AufHoehe-30-WHoehe
i=i+1
a=0
oldHoehe=AufHoehe+800
y=0
EndIf
Else
v=2
EndIf
EndIf
If v=2 And Hoehe>AufHoehe-WHoehe-30 ;wenn es auf dem Boden ist...
v=3
Hoehe=AufHoehe+60-WHoehe
MoveWindow(Breite, Hoehe)
Delay(500)
EndIf
If v=3 ;Bild runterziehen ...
s=s+2
Hoehe=Hoehe+s
Delay(25)
If Hoehe > AufHoehe+200
v=4
a=0
EndIf
EndIf
If v=4 ;Bild hochspringen lassen...
Hoehe=Hoehe-50
Delay(10)
EndIf
If v=4 And Hoehe<0 ;Wenn es oben ist die ganze sache nomal wiederholen
i=1
v=0
a=0
EndIf
;_________Höchster Punkt ausrechnen (nicht nötig)_____
;Höchsten Punkt ausrechnen
If Hoehe < oldHoehe
oldHoehe = Hoehe
; If y=1
EndIf
;Höchsten Punkt debugen
If Hoehe > oldhoehe And y=0
Debug(oldHoehe)
y=y+1
EndIf
;________________________________________________________________-
MoveWindow(Breite, Hoehe) ;Fenster an die angegebenen Koordinaten bewegen
EndIf
;___________________________________________________________________________________________
ForEver
EndProcedure
physikfenster() ;Ruft das Programm auf
DataSection
SkinPicture:
IncludeBinary "Bilder\bg1.jpg"
EndDataSection
Find es eher merkwürdig o_O. Das Fenster springt noch nicht ganz ruckelfrei (ruckelige bewegungen) und es nutzt die gesamte CPU aus >__<. Vielleicht könntest du es ja nochmal überarbeiten .
Naja jetzt tuts ohne 100% es braucht Auslastung nur noch ca 7%.
Das mit dem Ruckeln geht glaub net weg da Fenster eigendlich net für so was gemacht sind. Wern ihr es aber weg bekommen solltet könnt ihr es ruhig posten. Es ist auch möglich durch das ändern, der Variablen oben ,die Physikalischen Dingsens zu ändern und auch die update Zeit vielleicht kommt bei einer bestimmten einstellung etwas unruckeliges heraus.
; _________Physik_Fenster___________
; | |
; |Programmierer: Konstantin ***** |
; |Firma: KoMaNi |
; | |
; |--------|Beschreibung|------------|
; |Ist eine lustige Procedure um ein |
; |Fenster springen zu lassen |
; |__________________________________|
Procedure PhysikFenster()
Protected Anziehung ;Gibt die Geschwindigkeit der Anziehung an
Protected Huepfen ;Gibt die Hüpfkraft an
Protected Abweichung ;Gibt die Geschwindigkeit der Abweichung an
Protected Abweichung2 ;Gibt die Seitliche Abweichung nach rechts + | links- an
Protected Anziehung2 ;Gibt die Anziehung nach unten + | oben- an
Protected Geschwindigkeit ;Gibt an wie oft das Fenster verschoben wird
Protected WHoehe ;Bild Hoehe
Protected WBreite ;Bildbreite
Protected Breite ;Breiten koordinaten start punkt
Protected Hoehe ;Gibt die Hoehe des Fensters aus (zB zum Debugen)
Protected oldHoehe ;Brechnung der max. Hoehe
Protected AufHoehe ;Auflösung Hoehe
Protected AufBreite ;Auflösung Breite
Protected i ;Zähl Variable
Protected v ;Zähl Variable
Protected c ;Zähl Variable
Protected l ;Zähl Variable
Protected a ;Zähl Variable
Protected x ;Zähl Variable
;______Hier_können_die_einzelnen_Faktoren_geändert_werden___________________________________________
Anziehung =10 ;Je mehr desto schwächer
Huepfen =15 ;Je mehr deto höher
Abweichung =1 ;weniger is mehr
;______Änderungen_hier_können_zu_einem_Ruckeln_führen_______________________________________________
Abweichung2 =5 ;5 ist gut, mehr is mehr
Anziehung2 =3 ;3 ist gut
Geschwindigkeit=40 ;Bild refresh zeit
;______Fenstereinstellungen_________________________________________________________________________
WHoehe =369 ;Hoehe des Bildes
WBreite =548 ;Breite des Bildes
Breite =100 ;Je mehr desto weiter rechts
;___________________________________________________________________________________________________
UseJPEGImageDecoder() ;Um JPGs einbinden zu können
If OpenWindow(1,Breite,0, WBreite , WHoehe , #PB_Window_Invisible|#PB_Window_BorderLess, "Physik") ;Fenster erstellen
SkinWin(WindowID(),CatchImage(0,?SkinPicture)) ;Fenster erstellen
HideWindow(1,0) ;Fenster anzeigen
EndIf
i=1
v=0
oldHoehe=8000 ;NUR zur höhenmessung benötigt
Repeat ;Hauptschleife öffnen
ExamineDesktops() ;Die Auflösung auslesen um das Bild dynamisch zur Auflösung springen zu lassen
AufHoehe=DesktopHeight(0) ;Hoehe ermitteln
AufBreite=DesktopWidth(0) ;Breite ermitteln
Delay(Geschwindigkeit)
oldticks=GetTickCount_() ;oldticks dem tickcount gleichstellen
If c=Abweichung And l=0 ;Seitliche Abweichung
Breite=Breite+Abweichung2
c=0
EndIf
If c=Abweichung And l=1
Breite=Breite-Abweichung2
c=0
EndIf
If v<3
c=c+1
EndIf
If Breite>AufBreite-WBreite
l=1
EndIf
If Breite<0
l=0
EndIf
;________________________________________________________________
If x=Anziehung ;Berechnet die Anziehung
a=a+Anziehung2
x=0
EndIf
x=x+1
If v=0 ;lässt den Gegenstand fallen
Hoehe=Hoehe+a
EndIf
If Hoehe=>AufHoehe-30-WHoehe And v=0 ;Wenn es den Boden erreicht...
v=1
a=0
oldHoehe=AufHoehe+800
y=0
EndIf
If v=1 ;Aufspringen
If Huepfen/i> 1.5
Hoehe=Hoehe-Huepfen+a+i*2.5+1
If Hoehe>AufHoehe-30-WHoehe
i=i+1
a=0
oldHoehe=AufHoehe+800
y=0
EndIf
Else
v=2
EndIf
EndIf
If v=2 And Hoehe>AufHoehe-WHoehe-30 ;wenn es auf dem Boden ist...
v=3
Hoehe=AufHoehe+60-WHoehe
MoveWindow(Breite, Hoehe)
Delay(500)
EndIf
If v=3 ;Bild runterziehen ...
s=s+2
Hoehe=Hoehe+s
Delay(25)
If Hoehe > AufHoehe+200
v=4
a=0
EndIf
EndIf
If v=4 ;Bild hochspringen lassen...
Hoehe=Hoehe-50
Delay(10)
EndIf
If v=4 And Hoehe<0 ;Wenn es oben ist die ganze sache nomal wiederholen
i=1
v=0
a=0
EndIf
;_________Höchster Punkt ausrechnen (nicht nötig)_____________________________________
;Höchsten Punkt ausrechnen
If Hoehe < oldHoehe
oldHoehe = Hoehe
; If y=1
EndIf
;Höchsten Punkt debugen
If Hoehe > oldhoehe And y=0
Debug(oldHoehe)
y=y+1
EndIf
;________________________________________________________________-
MoveWindow(Breite, Hoehe) ;Fenster an die angegebenen Koordinaten bewegen
;___________________________________________________________________________________________
ForEver
EndProcedure
physikfenster() ;Ruft das Programm auf
DataSection
SkinPicture:
IncludeBinary "Bilder\bg1.jpg"
EndDataSection
Was bitte ist SkinWin? Und vielleicht könntest du erklären was dein Programm macht? Wie groß muss das Bild sein welches included wird? Hier sitzt man ein bisschen auf dem Trockenem... (Und Einrückung im Code wäre wunderbar )
So is es is doch ganz leicht... und zu SkinWin gibts Examples... (Damit kann man anstelle von einem Windows standartfenster Bilder einbinden ganz einfach )