Wie sieht dieser B3d-Code in C++ aus?
Übersicht

Peak7810 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Auch wenn ich grad einen uralt Thread ausgrab...meine Frage ist mir grad sehr wichtig...
Code: [AUSKLAPPEN] If KeyDown(...)
;Vorwärts beschleunigen ElseIf KeyDown(...) ;Rückwärts beschleunigen Else If Speed>0 Then Speed=Speed-0.01 If Speed<0 Then Speed=Speed+0.01 If Speed<0.01 And Speed>0 Then Speed=0 EndIf wenn das funktioniert, was es meiner meinung nach tun sollte, könnte mir das jemand nach c++ übersetzen...? also nur diese speedberechnung... ich hadere jetzt schon so 2 Stunden rum, und es tut nicht was es soll..... wahrscheinlich liegt es an den bedingungen in c++, jedoch kommen keine fehler... wäre supertoll wenn mir das jemand auf die schnelle schreiben könnte. |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] if (wasauchimmerdeinkeydownabfragt()) {
// vorwaerts } else if (wasauchimmerdeinkeydownabfragt2()) { // zurueck } else { if (speed > 0) speed -= 0.01; if (speed < 0) speed += 0.01; if (speed < 0.01 && speed > 0) speed = 0; } man beachte, dass je nach deiner umgebung möglicherweise ein zweifaches keydown-abfragen irgendwelche unerwarteten seiteneffekte hat, wodurch das zweite ignoriert wird... (tippfehler im c-code vorbehalten.) ~AUFSPALTUNG~ die frage ist nicht wirklich eine b3d-frage und passt erst recht nicht in den anderen thread. |
||
![]() |
the FR3AK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei den Keydown abfragen ist eben das Problem dass C++ die nicht so einfach zur verfügung stellt wie B3D und ich denke dass er gerade das wissen wollte wie es geht. | ||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja, wenn er nen Spiel schreibt, hat er vermutlich irgendeine Art Framework (möglicherweise die C-verwendbare Engine von B3d), das ihm so etwas ähnliches wie KeyDown zur Verfügung stellt... Was wirklich gemeint ist, wäre klar geworden, wenn Peak7810 einfach den nicht funktionierenden C++-Code gepostet hätte. Aber meinetwegen, kannst du ja einen Vorschlag mit der Eingabeschnittstelle deines Vertrauens posten, FR3AK ![]() |
||
MrKeks.net |
Peak7810 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein also das KeyDown kann ignoriert werden.
Mir geht es lediglich um die Geschwindigkeits-Beschleunigungs-Abbremsberechnung. So funktioniert es irgendwie nicht... Code: [AUSKLAPPEN] float speed;
if (xKeyDown(KEY_UP)) { speed = speed -1; } else if (xKeyDown(KEY_DOWN)) { speed = speed +1; } else { if (speed>0) speed=speed-0.01; if (speed<0) speed=speed+0.01; if ((speed<0.1)&&(speed>0)) { speed = 0; } } |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
So würde ich das vermutlich machen:
Code: [AUSKLAPPEN] if (abs(speed) <= 0.01f)
speed = 0; if (speed > 0) speed -= 0.01f; else if (speed < 0) speed += 0.01f; |
||
Lador |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zugegeben, ich kann nur Java aus dem Schulunterricht, aber ich würde bei einer lokalen Variable die eigentlich erstmal auf 0 setzen bzw. ihr einen Standardwert geben. Und kann man wie in Blitz If, die Bedingung und die Folge in eine Zeile ohne Klammern schreiben?
Mein Vorschlag: Code: [AUSKLAPPEN] Float speed=0;
If (xKeyDown(KEY_UP)) { speed = speed -1; } Else { If (xKeyDown(KEY_DOWN)) { speed = speed +1; } Else { If (speed>0.1) { speed=speed-0.01; } Else { If (speed<0) { speed=speed+0.01; } Else { If (speed<0.1) { speed = 0; } } } } } |
||
Mein aktuelles Projekt:
2D-Rollenspiel "Iliran" Screenshot | Worklog Fortschritt: ca. 70% |
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Achso, die Variable speed sollte natürlich nicht lokal sein, sondern schon vorher definiert worden sein. Ansonsten kann speed ja immer nur die Werte 1, -1 oder 0 annehmen und wird nie langsamer. | ||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
was funktioniert eigentlich nicht?
ich nehme an du deklarierst "float speed;" irgendwo auf einer höheren ebene des programms, oder? |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
Peak7810 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab noch nicht weitergearbeitet an meinem code.
Poste heut Abend was ich erarbeitet habe. @lador: bei deinem code gibt es keine Beschleunigung.Ich probiere dann selber etwas. |
||
Peak7810 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sorry wegen doppelpost...
dieser code funktioniert nun... Code: [AUSKLAPPEN] float speed;
if (xKeyDown(KEY_UP)) { speed -= 1.1f; } else if (xKeyDown(KEY_DOWN)) { speed += 1.1f; } else { if (speed > 0.0f) speed -= 0.08f; if (speed < 0.0f) speed += 0.08f; if ((speed < 0.1f) && (speed > 0.0f)) { speed = 0.0f; } } if (speed > 3.0f) speed = 3.0f; wenn ich diesen nun aber in eine movement.h packe und includiere, bewegt es sich zwar, jedoch nur mit konstanter geschwindigkeit. |
||
![]() |
Alkan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kann es sein, dass du die Variable speed immer wieder neu deklarierst und somit überschreibst? | ||
Hauptrechner: Win7 Ultimate x64|AMD Phenom II X4 965 BlackEdition 4x3.4GHz|4 GB DualKit DDR3-1600 Ram|1.5 TB Samsung EcoGreen|Cougar CM 700Watt|ASRock M3A790GFX/120M|Nvidia GeForce 9500GT|Ati Radeon HD3300(Onboard-Deaktiviert)
Server(früher Hauptrechner): Ubuntu 9.1 x86|Intel P4 HT 3GHz|Ati Radeon X600Pro|200 GB HDD Worklog: Planetensimulation Homepage(Under Construction): alkan96.dyndns.org Wenn schon falsch, dann richtig falsch. |
Peak7810 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jup hab ich übersehen...
Da ichs ja in eine Funktion packe, musste die Variable natürlich vorher definiert sein. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group