Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich versuche gerade ein Spiel (Tank Wars) zu programmieren.
Dabei habe ich ein Problem.
Wie kann ich den Ball in einer Kurver fliegen lassen(ich bilde mir ein das man dazu Winkelfunktionen brauchtt zB sin oder cos)
Hat wer eine Ahnung!
Hier mal ein Programmteil wo der Ball gerade aus fliegt
@Override
public void run() {
for (int i = 0; i < 600; i++) {
try {
Thread.sleep(20);
} catch (InterruptedException ex) {
Logger.getLogger(tankwar.class.getName()).log(Level.SEVERE, null, ex);
}
shotX -= 2;
g.drawImage(shot, shotX, shotY, 8, 8, io);
}
Im "Programmieren" gibts alles was du programmierst ...
Sieh dir einfach mal die Definition von Beschleunigung an... ist ja die Veränderung der Geschwindigkeit. Geschwindigkeit ist die Veränderung des Weges mit der Zeit, also s / t.
Anders - Beschleunigung ist s / t^2.
Ab hier hast du eine einfache Formel mit der du alles mögliche beschleunigen kannst in deinem Programm
Aber der Ball fliegt nur in die Luft(Gerade Linie) und kommt nicht mehr hinunter.
Was könnte der Fehler sein? Da hat mir ja ein Lehrer die Formel gezeigt:
y(x)= (tan(beta))*x -((g*x²)/(2v_0² * cos²(beta))
Wie bekomme die Formel in Java rein? also einfach abschreiben geht ja nicht. Bitte um Hilfe
also bei mir tut sich da durchaus was, aus deinem Code ist nicht zu erkennen warum y gleich bleiben sollte
bei + andererseits oder wenn y negativ ist und wie angenommen eine int-Variable, dann würde y gleichbleiben,
denn nach jeder Berechnung wird auf int gerundet,
allerdings hast du ja wahrscheinlich nicht mal int-Variablen als kleine Erklärung, wenn du extra auf int castest
------
unabhängig vom konkreten y ist die Berechnung ziemlich lausig,
Math.sin(Math.toRadians(45)) ist die ganze Zeit dasselbe, mehr oder weniger zufällig für 45 Grad sogar dasselbe wie der cos an dieser Stelle,
0.707, die Wurzel aus 1/2,
du ziehst 800x einen konstanten Wert ab, das ist natürlich linear, nicht sehr spannend
> Wie bekomme die Formel in Java rein?
ok, hast du selber erkannt..,
cos(x) schreibst du doch auch nicht einfach so rein, sondern komplizierter als Java-Code, bisschen kennst du das anscheinend also,
das konstante 45 als x ist mau, da brauchst du einen besseren Wert,
fange mit x = 0 an und erhöhe diesen in der Schleife, um wieviel kann man ausprobieren, z.B. zunächst 1 Grad,
wobei, das x mag shotX sein, ist nicht so einfach,
ich müsste jetzt ein Stück Papier herausholen und die Formel usw. erst nachschlagen, bist du schon soweit?
solange du nicht auf Papier skizzieren kannst, was als Ablauf geplant ist und vor allem dann auch mathematisch einige Punkte exemplarisch ausrechnen kannst, solange musst du in Java gar nicht erst anfangen,
du brauchst auf Papier die Koordinaten, einen gewissen Zeitversatz der doch sicher eine Rolle spielt, ein neues x und ein neues y usw.
freilich kannst du hier auch fragen wie das mathematisch zu handhaben ist, aber dann wollen wir mal klarstellen dass das mit Java vorerst wenig zu tun hat..
kannst du irgendwas an Informationen/ Hintergrund weiter beitragen oder sollen sich die Antworter den Rest selber zusammensuchen?
ich persönlich überlege mir das noch sehr genau, vorerst skeptisch