![]() |
Problem mit Multiplikation
Hallo, unzwar habe ich folgendes Problem in einer simplen Anweisung:
Ball.YSpeed := Ball.YSpeed * -1; YSpeed ist im Testfall -1, wenn ich es aber wie oben mit -1 multipliziere bleibt es -1. Wenn ich es mit z.B. -3 multipliziere kommt -3 heraus, aber bei einer Multiplikation mit 3 kommt auch -3 heraus. Ich kann überhaupt nicht nachvollziehen warum das nicht funktioniert. Bitte um eine schnelle Antwort |
AW: Problem mit Multiplikation
Quelltext?
|
AW: Problem mit Multiplikation
Herzlich Willkommen im Forum!
Aber das... Zitat:
Hetzen is hier nich.:-D |
AW: Problem mit Multiplikation
Naja Quellcode wird jetzt auch nicht viel ändern weil Ball.YSpeed an einem anderem Punkt nur auf -1 gesetzt wird. Wenn ich z.b. folgendes if ausführe wird Ball.YSpeed auf 1 gesetzt weil es ja -1 ist. Diese Anweisung funktioniert ohne Probleme. Warum aber eine simple Multiplikation mit -1 nicht funktioniert?
if Ball.YSpeed = -1 then begin Ball.YSpeed := 1; end; fYSpeed ist als single deklariert, falls es vlt. daran liegt: fYSpeed : Single; Im Endeffekt will ich nur einen Vorzeichenumkehr machen, die halt mit *-1. Habe nun auch schon andere Varianten ausprobiert: Ball.YSpeed := 0-Ball.YSpeed; funktioniert auch nicht und YSpeed ist immer noch negativ. |
AW: Problem mit Multiplikation
Zitat:
|
AW: Problem mit Multiplikation
Immer diese Balls. Das Buch ist (sorry) kakke. Mach aus dem Single ein integer. Dann klappt auch die Abfrage.
|
AW: Problem mit Multiplikation
Momentchen, du hast ein "fYSpeed", benutzt in deinem Code aber immer nur "Ball.YSpeed". Wo kommt jetzt dieses fYSpeed ins Spiel?
|
AW: Problem mit Multiplikation
@Bjoerk
Weiß zwar nicht von welchem Buch du redest aber der Quellcode ist nur von mir selbst^^. Liegt es am Single das es nicht funktioniert, weil ich nämlich einen Float Wert bräuchte, deswegen ist es mit Integer nicht möglich. @Medium Ball.fYSpeed und fYSpeed sind dasselbe, war nur zu faul Ball. zu schreiben, sorry falls dich das verwirrt hat. |
AW: Problem mit Multiplikation
Du hattest jedoch "Ball.YSpeed", nicht "Ball.fYSpeed" geschrieben. Solche Kleinigkeiten sind verflucht wichtig. Nicht nur im Code selbst, sondern auch, wenn man darüber spricht/schreibt. Das Beste ist es, wenn du einfach direkt die jeweiligen Stellen in Delphi markiertst und in deinen Beitrag kopierst. Spart die die lästige Schreibarbeit, und deine potenziellen Helfer haben eine Chance tatsächlich hilfreich zu werden.
So wie es jetzt alles da steht, gibt es überhaupt keinen Grund, dass die Vorzeicheumkehrung mittels "*-1" nicht gehen sollte. Und ich kann aus eigener Erfahrung für eine Palette an Delphi-Versionen bestätigen, dass es das stets problemlos konnte. (Es wäre sicherlich auch schon ein wenig aufgefallen wenn nicht.) Also muss an deinem restlichen Code etwas sein, was hier in die Suppe spuckt. (Ich habe ja vorsichtig eine Verquickung von Properties mit Records unter Verdacht, aber ohne deinen tatsächlichen Code gibt es einfach keine Grundlage hier weiter zu machen.) |
AW: Problem mit Multiplikation
So, habe dann die ganzen wichtigen Bereiche in dem Ball vorkommt kopiert
die Klasse: unit uBall; interface type TBall = Class private fXSpeed : Single; fYSpeed : Single; public Constructor Create(xspeed, yspeed : Single); property YSpeed: Single read fYSpeed write fYSpeed; property XSpeed: Single read fXSpeed write fXSpeed; implementation constructor TBall.Create(xspeed, yspeed : Single); begin self.fXSpeed := xspeed; self.fYSpeed := yspeed; end; end; hier wird der ball erzeugt: Ball: TBall; TBall.Create(0,-1) und hier die betreffende methode die nicht funktioniert, in dem fall war Edge=1: procedure TBrick.onCollision(Edge : Integer; Ball : TBall); begin case Edge of 1: Ball.YSpeed := Ball.YSpeed * -1; 2: Ball.YSpeed := Ball.YSpeed * -1; 3: Ball.XSpeed := Ball.XSpeed * -1; 4: Ball.XSpeed := Ball.XSpeed * -1; end; end; Der Auruf ist: Brick.OnCollision(1,Ball); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz