Gleitender Zeiger!

Übersicht BlitzBasic Codearchiv

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Waveblue

Betreff: Gleitender Zeiger!

BeitragMo, März 28, 2005 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Will auch mal was zum Code-Archiv beisteuern:
Inspiriert vom Mauszeiger aus "Worms 3D" hab ich mal versucht, einen solchen Zeiger zu proggen um ihn in eigenen Menüs einzusetzen!
Und hier ist er:

Ladet euch erstmal dieses Bild (3,3KB) runter und speichert es auf eurem Desktop!

BlitzBasic: [AUSKLAPPEN]
Graphics 1024,768,32,1

ClsColor 0,0,255
;-------Der Type-----
Type pfeilspur
Field x,y
End Type
;--------------------


Global pfeil.pfeilspur,grad


For a=1 To 25
pfeil =New pfeilspur
pfeil\x=MouseX()
pfeil\y=MouseY()
Next





Dim winkel(360) ;der Bilderspeicher

tempbild=LoadImage(\"C:/windows/desktop/1.png\") Laden des Bildes, Pfad eventuell ersetzen!


HandleImage tempbild,49,22
TFormFilter 0

For a=0 To 360 ;das Bilderarray wird mit gedrehten Kopien des Urbildes gefüllt!
winkel(a)=CopyImage(tempbild)
RotateImage winkel(a),a
DrawImage winkel(a),100,100

Next



SetBuffer BackBuffer()


zeit=MilliSecs()

Repeat


;====Framezähler===
frames=frames+1

If MilliSecs()-zeit>1000 Then
framesanzeig=frames
frames=0
zeit=MilliSecs()
End If
;===============

Cls








mausx=MouseX()
mausy=MouseY()


Malepfeil(mausx,mausy) ;Handlich in ne Funktion verpackt!^^

Text 1,1,\"Fps: \"+framesanzeig
Flip 0



Until KeyHit(1)




Function Malepfeil(mausx,mausy)

pfeil=First pfeilspur

If mausx<>pfeil\x Or mausy<>pfeil\y Then ;Nur wenn die Maus auch bewegt wurde.....


pfeil=Last pfeilspur
letzterx=pfeil\x
letztery=pfeil\y

a=0

While ((mausx-letzterx)^2)+((mausy-letztery)^2)>45^2 ;Satz des Pytagoras, der Punkt, der am nächsten am Ende des Pfeils liegt wird ausgewählt!


pfeil=Before pfeil

If pfeil=Null Then
pfeil=First pfeilspur
letzterx=pfeil\x
letztery=pfeil\y
Exit
End If



letzterx=pfeil\x
letztery=pfeil\y

a=a+1
Wend





grad = ATan2 (mausy - letztery, mausx - letzterx) ;Ausrechnen des Winkels zu diesem Punkt


If grad<0 Then grad=360+grad ;Die Winkellrechnung produziert manchmal unbrauchbare Minuszahlen!Wink

pfeil=Last pfeilspur
Delete pfeil ; letzter Punkt wird rausgeworfen!

pfeil=New pfeilspur
Insert pfeil Before First pfeilspur ;Neuer Punkt hinzugefügt!

pfeil\x=mausx
pfeil\y=mausy
End If
DrawImage winkel(grad),mausx,mausy
End Function

;by Waveblue


Was haltet ihr davon?
Habt ihr Verbesserungsvorschläge?

MFG Waveblue
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name
  • Zuletzt bearbeitet von Waveblue am Mi, März 30, 2005 10:36, insgesamt 7-mal bearbeitet

diGGa

GruppenKaspar

BeitragMo, März 28, 2005 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
ansich ganz cool und bestimmt gut zu nutzen, nur hab ich das gefühl das der ein wenig langsam läuft? also von drehung her und so. wirkt ruckelig.

übrigens findet er bei mir den desktop nicht weil ich nen usernamne eingetragen habe... also am besten pfad rausnehmen und code abspeichern.
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und
glaubte im Licht der Straßenlampe
Den Geist unseres jahrhunderts auf der
Straße zu sehen
Der uns sagte, daß wir alle am Rande
des Abgrunds stehen.
- Al Steward


Athlon 64 3000+ / Radeon 9600 / 1024mb ddram

Bms

BeitragMo, März 28, 2005 15:25
Antworten mit Zitat
Benutzer-Profile anzeigen
auch wenns auf die fps geht: ich würde t-formfilter aktivieren! das sieht sonst so pixelig aus!

und das ist mir rätselhaft:
BlitzBasic: [AUSKLAPPEN]

For a=1 To 25
pfeil =New pfeilspur
pfeil\x=MouseX()
pfeil\y=MouseY()
Next

du erzeugst 25 mauszeiger, aber ich seh immer nur einen!

aber sonst nicht schlecht!
 

CodeMaster

BeitragMo, März 28, 2005 15:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Nette Idee, für spätere Projekte sicherlich nicht uninteressant Smile
Dies ist ein Text, der an jeden Beitrag von dir angehängt werden kann. Es besteht eine Limit von 500 Buchstaben.

Zuletzt bearbeitet von CodeMaster am Mo Apr 01, Parse error: syntax error, unexpected ';' in htdocs\viewtopic.php on line 102

Waveblue

BeitragMo, März 28, 2005 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Bms hat Folgendes geschrieben:
auch wenns auf die fps geht: ich würde t-formfilter aktivieren! das sieht sonst so pixelig aus!

und das ist mir rätselhaft:
BlitzBasic: [AUSKLAPPEN]

For a=1 To 25
pfeil =New pfeilspur
pfeil\x=MouseX()
pfeil\y=MouseY()
Next

du erzeugst 25 mauszeiger, aber ich seh immer nur einen!

aber sonst nicht schlecht!


-Tformfilter bringt nix, da ich es ja als Transparentbild verwenden will!

-Diese Schleife erstellt eine Tabelle, in denen 25 Mauszeigerpositionen gespeichert werden und am Ende die letzte rausgeworfen wird und eine neue erstellt wird! Wink
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name
 

Ensign Joe

BeitragMo, März 28, 2005 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
bei mir kommt "Image does not exist"
Ich habe jetzt eine Pommesbude aufgemacht am Münchner Hauptbahnhof.
Und da ich Herbert Görgens heiße, heißt diese Pommesbude
Herbert's Pommesbude Smile

Artemis

BeitragMo, März 28, 2005 17:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Du müsstes vielleiht auch das image runterladen und im programm deinen Pafd eingeben, in den du das Image gespeichert hast!!!!!!!!!!!!!!!!!!
 

walski

Ehemaliger Admin

BeitragMo, März 28, 2005 20:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ensign Joe, ich weiß dass es hier wirklich nicht hingehört und entschulige mich bei allen anderen fürs OT, aber:

DU NERVST!

Lies BITTE einmal einen Post richtig und wenn du nichts zu sagen hast halt einfach das Maul. Du musst deinen Senf nicht zu jedem Scheiß abgeben.

Normalerweise würde ich dich einfach per PN verwarnen aber dann würdest du wieder stundenlang nachfragen warum, wieso und weshalb.

Hier hast du echt mal ein wirkliches Paradebeispiel für deine Faulheit und unnützen Posts die das Lesen hier im Forum immer mehr zu einer Qual werden lassen.

Also: Weniger Output oder mehr Qualität!

walski
buh!

sbrog

BeitragDi, März 29, 2005 11:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Waveblue hat Folgendes geschrieben:


-Diese Schleife erstellt eine Tabelle, in denen 25 Mauszeigerpositionen gespeichert werden und am Ende die letzte rausgeworfen wird und eine neue erstellt wird! Wink


Hallo,

aber wieso machst du das alles in einem Durchgang, wo sich die Mausposition überhaupt nicht verändern kann ? Mousex() und y sind in dieser Schleife immer gleich.

Waveblue

BeitragDi, März 29, 2005 11:34
Antworten mit Zitat
Benutzer-Profile anzeigen
damit sie schon mal da sind!

die Anzahl von 25 Konttrollpunkten verändert sich ja nie! Wink
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name

Artemis

BeitragDi, März 29, 2005 11:36
Antworten mit Zitat
Benutzer-Profile anzeigen
es gibt eine minimale zeitspanne, und die reciht aus!
also sind die etwas verschieden!

Waveblue

BeitragDi, März 29, 2005 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
JonasCleve hat Folgendes geschrieben:
es gibt eine minimale zeitspanne, und die reciht aus!
also sind die etwas verschieden!


Das bezweifel ich jetzt mal, das du in dieser Zeitspanne deine Maus mehr als 2 Pixel bewegen kannst^^°

Ich hab den Code jetzt mit mehr Kommentaren versehen,
nur das ruckeln macht mir zuschaffen, ich glaub aber, das es daran liegt, das man die Maus eher ruckartig bewegt!

Wer Ideen hat, was man an dem Code besser machen kann, bitte posten! Wink
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name
  • Zuletzt bearbeitet von Waveblue am Di, März 29, 2005 11:57, insgesamt 2-mal bearbeitet

Artemis

BeitragDi, März 29, 2005 11:51
Antworten mit Zitat
Benutzer-Profile anzeigen
tja dann halt nicht!
war nur so eine idee

maximilian

BeitragDi, März 29, 2005 12:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Nice, aber bin ich der einzige wo es so sterbenslahm geht? Bei mir ruckelt es auch stark, doch sobald ich den Debug ausschalte läuft es gut. Neutral

LordChaos
Variety is the spice of life. One day ignore people, next day annoy them.

Waveblue

BeitragDi, März 29, 2005 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
LordChaos hat Folgendes geschrieben:
Nice, aber bin ich der einzige wo es so sterbenslahm geht? Bei mir ruckelt es auch stark, doch sobald ich den Debug ausschalte läuft es gut. Neutral

LordChaos


Was hast du für ein System?

Ich würd ja gern einen Framezähler einbaun, aber ich hab keinen Plan, wie sowas geht! Embarassed
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name

Artemis

BeitragDi, März 29, 2005 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
hier
BlitzBasic: [AUSKLAPPEN]
Graphics 800,600,32,2


;-------Der Type-----
Type pfeilspur
Field x,y
End Type
;--------------------


Global pfeil.pfeilspur,grad


For a=1 To 25
pfeil =New pfeilspur
pfeil\x=MouseX()
pfeil\y=MouseY()
Next





Dim winkel(180) ;der Bilderspeicher

tempbild=LoadImage(\"C:/windows/desktop/1.png\") ;laden des ungedrehen Picts, Pfad eventuell ersetzen
HandleImage tempbild,49,22
TFormFilter 0

For a=0 To 180 ;Diese schleife füllt das Bilderarray mit gedrehten Kopien des Urbildes
winkel(a)=CopyImage(tempbild)
RotateImage winkel(a),a*2
DrawImage winkel(a),100,100

Next



SetBuffer BackBuffer()
;############# INI
time = MilliSecs()
;############# End INI
Repeat
;############# framecounter
loops = loops+1
If MilliSecs()-time > 100 Then
fps = loops
loops = 0
time = MilliSecs()
EndIf
;############ end framecounter
Cls
Color 255,255,255
Text 10,10,\"FPS: \"+fps







mausx=MouseX()
mausy=MouseY()

Malepfeil(mausx,mausy)
Flip

Until KeyHit(1)




Function Malepfeil(mausx,mausy)

pfeil=First pfeilspur

If mausx<>pfeil\x Or mausy<>pfeil\y Then ;Nur wenn sich die Mausposition verändert hat, wird das hier ausgeführt!


pfeil=Last pfeilspur
letzterx=pfeil\x
letztery=pfeil\y



While ((mausx-letzterx)^2)+((mausy-letztery)^2)>45^2 ;Satz des Pytagoras! Ausrichtung des Pfeils nach dem Punkt, der am dichtesten am Pfeilende liegt!


pfeil=Before pfeil

If pfeil=Null Then
pfeil=First pfeilspur
letzterx=pfeil\x
letztery=pfeil\y
Exit
End If



letzterx=pfeil\x
letztery=pfeil\y


Wend





grad = ATan2 (mausy - letztery, mausx - letzterx)


If grad<0 Then grad=360+grad ;weil leider die Winkelrechnung manchmal Minuszahlen ausspuckt!

pfeil=Last pfeilspur
Delete pfeil ;letzter Punkt raus

pfeil=New pfeilspur ;neuer Punkt rein!
Insert pfeil Before First pfeilspur

pfeil\x=mausx
pfeil\y=mausy
End If
DrawImage winkel(grad/2),mausx,mausy
End Function

;by Waveblue
 

Gombolo

BeitragDi, März 29, 2005 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Deine FPS Berechnung ist falsch.
Heute ist der erste Tag vom Rest deines Lebens
http://gombolo.go.funpic.de/

Waveblue

BeitragDi, März 29, 2005 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
THX Jonas! Wink

Ich hab grad selbst mal meinen Kopf zum Rauchen gebracht!
(Gedankenblitze kommen mir immer unverhofft Embarassed )

Hab meine Version in meinen ersten Beitrag reineditiert!

hab 1162 Frames!
This is 10% luck
20% skill
15% concentrated power of will
5% pleasure, 50% pain
and 100% reason to remember the name

diGGa

GruppenKaspar

BeitragDi, März 29, 2005 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
mach doch einfach

vorne
x = createtimer(60)

inne schleife
waittimer(x)

dann wartet der immer solange bis der nächste takt kommt... siehe blitzbase
Gestern Nacht Schlug der Regen an mein Fenster
Ich ging durch das dunkle Zimmer und
glaubte im Licht der Straßenlampe
Den Geist unseres jahrhunderts auf der
Straße zu sehen
Der uns sagte, daß wir alle am Rande
des Abgrunds stehen.
- Al Steward


Athlon 64 3000+ / Radeon 9600 / 1024mb ddram

bruZard

BeitragDi, März 29, 2005 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
*PSST diGGa* ... blitzbase ist gut, aber nicht der heilige Gral. In der Zeit in der das programm wartet könnte man soviele andere Sachen machen ... Gimmicks, KI, mehrere Renderdurchläufe für Effekte etc.

Also lieber einen eigenen Timer programmiert der aufpasst dass alles auf jedem System ungefähr gleich schnell ist.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group