Java code zu: werfen?
Ich muss ein Spiel programmieren indem ich ein Spielfeld habe (mit 2 Spielern) mit Murmeln und ich muss die Murmeln in ein Loch transportieren, die Murmeln sollen sozusagen Random irgendwo hin gewürfelt werden bis sie in das Loch sind.
Kann mir jemand helfen solch ein Code zu schreiben? Mache es bei NetBeans.
Danke im vorraus.
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.
Kannst du das näher ausführen (über die Fläche randomisieren)?
Ja, den Modulo-Operator (%) gibt es in Java auch.
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.
Warum muss es eine Operation sein? Nutze halt erst die Division und dann Modulo. Die Ergebnisse kannst Du dann zwei verschiedenen Variablen zuweisen.
Gruß
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.)
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ß
So sieht es grad aus und müsste das Feld "Werfen" programmieren

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ß
Man kann natürlich auch über die Fläche randomisieren und danach eine Restdivision ausführen (Kennt Java eien Ganzzahldivision mit Rest?).