Java code zu: werfen?

2 Antworten

Wenn ein Wurf eine zufällige Platzierung bewirken soll, benötigst du zwei Zufallszahlen. Eine für x und eine für y.

Zuerst müsstest du die Grenzen abstecken, in denen ein Wurf liegen darf. Das ist natürlich die Größe deines Panels / Frames / .... Mit einberechnen solltest du zudem noch die Höhe/Breite der Kugeln.

Eine Zufallszahl zwischen zwei Zahlen berechnet sich aus:

Min + (int)(Math.random() * ((Max - Min) + 1))

Zum Generieren von Zufallszahlen gibt es unterschiedliche Klassen in Java. Math, Random oder ThreadLocalRandom.


KarlRanseierIII  11.11.2018, 17:54

Man kann natürlich auch über die Fläche randomisieren und danach eine Restdivision ausführen (Kennt Java eien Ganzzahldivision mit Rest?).

0
regex9  11.11.2018, 18:16
@KarlRanseierIII

Kannst du das näher ausführen (über die Fläche randomisieren)?

Ja, den Modulo-Operator (%) gibt es in Java auch.

0
KarlRanseierIII  11.11.2018, 18:50
@regex9

Ne, den meine ich nicht, ich meine die Abbildung der CPU-Funktion, die das Divisionsergebnis zusammen mit dem Remainder zurückgibt als eine einzelne OP/Funktion.

0
AldoradoXYZ  11.11.2018, 20:37
@KarlRanseierIII

Warum muss es eine Operation sein? Nutze halt erst die Division und dann Modulo. Die Ergebnisse kannst Du dann zwei verschiedenen Variablen zuweisen.

Gruß

0
KarlRanseierIII  11.11.2018, 20:46
@AldoradoXYZ

Schon klar, daß das geht. Mir ging es eher darum:

Wenn eine CPU bei der Ganzzahldivision ohnehin der Remainder (zwangsläufig) mitermittelt, warum dann zwei OPs ausführen?

Man müßte sich dann darauf verlassen, daß Compiler/VM in der Lage sind, die Operationen zu korrelieren und korrekt abzubilden, oder ich müßte darauf vertrauen, daß der Microcode+CPU-Cache dafür sorgen, daß nicht neu berechnet wird.

(Letztlich bedingen beide Operationen, daß das jeweils andere Ergebnis ohnehin mit anfällt.)

0
AldoradoXYZ  11.11.2018, 20:55
@KarlRanseierIII

Ist das dein Ernst?

Der Nutzer soll hier einen Button drücken und Du überlegst, wie man da eine Operation einsparen kann? Zumal da natürlich noch weit mehr Overhead anfällt.

Wenn man es so genau nimmt, dann sollte man vielleicht auf Assembler umsteigen. Eine Hochsprache bietet viele Vorteile, aber die müssen mit Nachteilen "erkauft" werden.

Gruß

0

Bild zum Beitrag

So sieht es grad aus und müsste das Feld "Werfen" programmieren

 - (programmieren, Informatik, Java)

AldoradoXYZ  11.11.2018, 15:38

github.com kannst Du deinen Code hochladen und wir können am Projekt "mitarbeiten".

Ansonsten stelle ich mir eine Methode vor, die die Position der Kugel zufällig setzt.

public void setRandomPosition() {
   this.x = (Math.random() * (gameField.getWidth() - 2 * this.getWidth()))+this.getWidth();
   this.y = (Math.random() * (gameField.getHeight() - 2 * this.getHeight()))+this.getHeight();    
}

Gruß

1