Berechnung will nicht richtig

Übersicht BlitzBasic Allgemein

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

h3ir

Betreff: Berechnung will nicht richtig

BeitragMi, Aug 27, 2008 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
   t = speed/100
   rspeed = 2*t


will nicht und das will auch nicht:

Code: [AUSKLAPPEN]
   rspeed = 2*(speed/100)


Entweder es ist 2 oder 0 und speed ist gesetzt.

darkralf

BeitragMi, Aug 27, 2008 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist speed vielleicht 100?

Was soll denn rauskommen?



Vielleicht hilfreich:

https://www.blitzforum.de/help/Int
https://www.blitzforum.de/help/Float
Das ist kein Fehler! Das ist ein Feature.
  • Zuletzt bearbeitet von darkralf am Mi, Aug 27, 2008 21:06, insgesamt einmal bearbeitet
 

ChristianK

BeitragMi, Aug 27, 2008 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst Float-Variablen (Kommazahlen) statt Integer (Ganzzahlen) verwenden.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

h3ir

BeitragMi, Aug 27, 2008 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
speed ist nicht 100...

t = Float(2*(speed/100)) <-- will auch nicht
t# = Float(2*(speed/100)) <-- will auch nicht

entweder 2.0 oder 0.0
 

da_poller

BeitragMi, Aug 27, 2008 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
t# = (2*(speed#/100)) <-- will
 

h3ir

BeitragMi, Aug 27, 2008 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
speed ist ne ganze zahl... also 90, 91 ...
also @da_poller: ist es auch nicht so richtig...

das hier:
Code: [AUSKLAPPEN]
t# = Float(Float(2)*Float(Float(speed)/Float(100)))

sieht kacke aus und macht nun auch 1.0 xD

edit: aber ich will auch 1.5 und so
  • Zuletzt bearbeitet von h3ir am Mi, Aug 27, 2008 21:19, insgesamt einmal bearbeitet

Xeres

Moderator

BeitragMi, Aug 27, 2008 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
https://www.blitzforum.de/foru...hp?t=27657
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

h3ir

BeitragMi, Aug 27, 2008 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:
https://www.blitzforum.de/foru...hp?t=27657


oben habe ich alles als float umgewandelt... also liegt es nicht da dran...

darkralf

BeitragMi, Aug 27, 2008 21:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Alles lesen...

Müsste klappen:

t# = (2.0*(speed#/100.0))
Das ist kein Fehler! Das ist ein Feature.
 

h3ir

BeitragMi, Aug 27, 2008 21:23
Antworten mit Zitat
Benutzer-Profile anzeigen
darkralf hat Folgendes geschrieben:
Alles lesen...

Müsste klappen:

t# = (2.0*(speed#/100.0))


hab doch schon alles mit float umgewandelt...

Code: [AUSKLAPPEN]
t# = Float(2)*(Float(speed)/Float(100))


also ist es doch eigentlich das selbe oder?

darkralf

BeitragMi, Aug 27, 2008 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Kommazahlen!

100.0

2.0
Das ist kein Fehler! Das ist ein Feature.

Xeres

Moderator

BeitragMi, Aug 27, 2008 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
100.0 = Float(100)

@h3ir:
Sicher das du die richtigen Variablen berechnest & ausgibst? Ansonsten mehr Code posten.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

h3ir

BeitragMi, Aug 27, 2008 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
darkralf hat Folgendes geschrieben:
Kommazahlen!


100.0

2.0


Übrigends: https://www.blitzforum.de/help/Float
Float mach Integer zu Float...

und deins will auch nicht:
Code: [AUSKLAPPEN]
   speed# = 90.0
   t# = (2.0*(speed#/100.0))


Edit:

also:

Code: [AUSKLAPPEN]
   speed# = 90.0
   t# = (2.0*(speed#/100.0))

   If speed <> 0 And direction = 1 Then MoveEntity obj, 0, 0, t#


Allerdings wird schon die Variable falsch berechnet. Daher: t# ist schon bevor es in MoveEntity eingefügt wird falsch.
  • Zuletzt bearbeitet von h3ir am Mi, Aug 27, 2008 21:28, insgesamt einmal bearbeitet
 

da_poller

BeitragMi, Aug 27, 2008 21:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
speed#=75.0
t#=(speed#/100.0)*2.0
Print t#
WaitKey()
End


wenn ich diesen code(der der formel von xerxes entspricht) ausführe bekomme ich die ausgabe 1.5 was wilslt du noch mehr?


edit: sorry war von darkralf die forme.. und ps: ergebniss bei speed 90 ist 1.8
 

h3ir

BeitragMi, Aug 27, 2008 21:29
Antworten mit Zitat
Benutzer-Profile anzeigen
@ da_poller: merkwürdig... hab mal ne test.bb erstellt und da gehts auch
 

da_poller

BeitragMi, Aug 27, 2008 21:31
Antworten mit Zitat
Benutzer-Profile anzeigen
und warum sagst du dann das es nciht geht? überprüf mal ob die variable auch einen gültigen wert hat .. etc..
 

h3ir

BeitragMi, Aug 27, 2008 21:36
Antworten mit Zitat
Benutzer-Profile anzeigen
also speed mit float() hat den richtigen wert.
speed schon direkt "gefloatet" hat auch den richtigen wert...

nur irgendwie wirds durch die rechnung total falsch...
 

da_poller

BeitragMi, Aug 27, 2008 21:37
Antworten mit Zitat
Benutzer-Profile anzeigen
die rechnung haben wir nun geprüft die passt.. schau mal ob an anderer stelle die speed nen anderen wert hat... evtl auch mit etwas code für uns das wir vllt helfen können
 

h3ir

BeitragMi, Aug 27, 2008 21:40
Antworten mit Zitat
Benutzer-Profile anzeigen
speed hat nirgends einen anderen wert... das sind die unfertigen funktionen:

Code: [AUSKLAPPEN]
Function calc_speed( )
   If driving = False And speed# <> 0 Then
   
   If current-timer > 1000 Then
      speed# = speed#-10.0
      reltimer = CreateTimer (1)
      timer = reltimer
      FreeTimer(reltimer)
   EndIf
   
   ElseIf driving = True And speed# = 0.0 Then
      speed# = 100.0
   ElseIf driving = True And speed# <= 100.0 Then
      speed# = 100.0
   EndIf
End Function

Function object_key_control( obj )
   If KeyDown( W_key )=True Then
      reltimer = CreateTimer (1)
      timer = reltimer
      FreeTimer(reltimer)
      direction = 1
      driving = True
   EndIf
   If KeyDown( S_key )=True Then
      reltimer = CreateTimer (1)
      timer = reltimer
      FreeTimer(reltimer)
      direction = 2
      driving = True
   EndIf
   If KeyDown( A_key )=True And (KeyDown( S_key )=True Or KeyDown( W_key )=True) Then MoveEntity obj, -.5, 0, 0
   If KeyDown( D_key )=True And (KeyDown( S_key )=True Or KeyDown( W_key )=True) Then MoveEntity obj, .5, 0, 0
   If KeyDown( S_key )<>True And KeyDown( W_key )<>True Then
      direction = 1
      driving = False
   EndIf
End Function

Function move_player( obj )

   tsss# = (speed#/100.0)*2.0

   If speed# <> 0 And direction = 1 Then MoveEntity obj, 0, 0, tsss#
   If speed# <> 0 And direction = 2 Then MoveEntity obj, 0, 0, -1.0*tsss#
   
   Return tsss#
   
End Function

Xeres

Moderator

BeitragMi, Aug 27, 2008 21:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ist speed auch Global als Float deklariert? in move_player() ist speed# ansonsten 0.
und btw. was ist das für ne Konstruktion:
Code: [AUSKLAPPEN]
reltimer = CreateTimer (1)
timer = reltimer
FreeTimer(reltimer)
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group