Random Punkte erstellen mit der Random klasse

XWing

Mitglied
hi ich hab das problem das ich keine ahnung habe wie ich random punkte erstellen lassen soll und zwar sollen dazu nur so viele punkte erstellt werden wie der user eingegeben hat
 
also meine frage ist es wie ich es schaffen kann das sich random punkte erstellen wenn der user eine zahl eingibt und sich so viele punkte erstellen wieder der user eingegeben hat
 
sie sollen auf einem kordinaten system erscheinen das
for (int y = 0; y < 30; y++) {
for (int x = 0; x < 100; x++) {
so groß ist. und das "Spielfeld" wird in punkten ausgedruckt.Die punkte sollen später gegner sein (die gegner sollen als g oder einen anderen buchstaben angezeigt werden) aber als erstes brauch ich
System.out.println("Mit wie vielen gegner wollen sie spielen?(Max 5)");
value1 = scan.nextInt();
} else if (value1 <= 5) {
//setze soviele punkte auf einen random ort wie angegeben
ein else if das dafür sorgt das so viele gegner "gespawnt werden" wie der user oder player eingegeben hat
 
Also du benötigst einen zufälligen x- und y-Wert, jeweils in einem bestimmten Wertebereich. Für x von 0 bis 30 und für y von 0 bis 100. Dafür schlage ich folgende Methode vor:
Java:
public int getRandomNumber(int min, int max) {
    return (int) ((Math.random() * (max - min)) + min);
}
Java:
int x = getRandomNumber(0, 30);
int y = getRandomNumber(0, 100);
 
soll ich das dann ein einer extra methode rein machen oder kann ich das return auch einf in dem unteren else if rein schreiben so wie ich´s da jetzt rein geschrieben habe?
if (value1 > 5) {
System.out.println("Maximal 5 erlaubt");
System.out.println("Mit wie vielen gegner wollen sie spielen?(Max 5)");
value1 = scan.nextInt();
} else if (value1 <= 5) {
return (int) ((Math.random() * (max - min)) + min);
}
und wie macht man das das man dem system sagt das die bedingung true ist wenn ein zahl von 1 bis x eingegeben wurde?
 
Soll ich das dann ein einer extra methode rein machen oder kann ich das return auch einfach in dem unteren else if rein schreiben so wie ich es da jetzt rein geschrieben habe?
Und wie macht man das das man dem system sagt das die bedingung true ist wenn ein zahl von 1 bis x eingegeben wurde?
Code:
if (value1 > 5) {

   System.out.println("Maximal 5 erlaubt");

   System.out.println("Mit wie vielen gegner wollen sie spielen?(Max 5)");

   value1 = scan.nextInt();

} else if (value1 <= 5) {

   return (int) ((Math.random() * (max - min)) + min);

   }
Ist es so besser?
 
Naja, du sollst das, von mir aus, nicht machen. Du willst etwas erreichen.
Wenn du mit return nur einen Wert zurückgibst aber für x und y eigentlich 2 Werte benötigst, dann wird es nicht funktionieren.
 
kann man dann einfach 2 rein machen sie so definieren das ein random x und ein anderer denn wert y ausgibt? Oder geht das nicht?
Java:
int randomnumber1;

int randomnumber2;


if (value1 > 5) {


   System.out.println("Maximal 5 erlaubt");


   System.out.println("Mit wie vielen gegner wollen sie spielen?(Max 5)");


   value1 = scan.nextInt();


} else if (value1 <= 5) {


   return (randomnumber1) ((Math.random() * (max - min)) + min);

   return (randomnumber2) ((Math.random() * (max - min)) + min);

   }
 
kann man dann einfach 2 rein machen sie so definieren das ein random x und ein anderer denn wert y ausgibt? Oder geht das nicht?
Java:
int randomnumber1;

int randomnumber2;


if (value1 > 5) {


   System.out.println("Maximal 5 erlaubt");


   System.out.println("Mit wie vielen gegner wollen sie spielen?(Max 5)");


   value1 = scan.nextInt();


} else if (value1 <= 5) {


   return (randomnumber1) ((Math.random() * (max - min)) + min);

   return (randomnumber2) ((Math.random() * (max - min)) + min);

   }
Ich vermute an dieser Stelle willst du gar keinen Zufallswert mit return zurückgeben. Du willst vermutlich die Zahl, die der Spieler eingetippt hat, um die Anzahl der Gegner festzulegen, also: value1
Das zeigt das nächste Problem: value1 ist kein vernünftiger Variablenname, du weiß schon nach wenigen Zeilen Code nicht mehr was er bedeutet. Wie wäre es statt value1 mit enemyCount. So sieht man die Bedeutung auf den ersten Blick.
 
hi ich hab das problem das ich keine ahnung habe wie ich random punkte erstellen lassen soll und zwar sollen dazu nur so viele punkte erstellt werden wie der user eingegeben hat
Vielleicht mal ein Vorschlag, wie man so eine Aufgabe lösen könnte.

Du möchtest Punkte erstellen. Die Position einen Punktes benötigt bei 2D einen Wert für die x- und Einen für die y-Koordinate. Damit wissen wir schon mal, dass wir zwei Werte benötigen.

Die Punkte sollen zufällige Positionen haben, die beiden Werte sollen also zufällig erzeugt werden. Dafür gibt es mehrere Möglichkeiten, z. B. mit Math.random() oder mit Random.nextInt(). Math.random() liefert einen zufälligen double-Wert zwischen 0 und 1. Da deine Zufallszahlen in einem bestimmten Bereich liegen sollen, musst du da evtl. noch etwas rechnen: Math.random() * (max - min)) + min. Die Formel kannst du dir ja mal mit ein paar Werten ausrechnen und nachvollziehen.

Jetzt weißt du wie du eine Zufallszahl erzeugen kannst. Du benötigst zwei davon, um einen Punkt zu erhalten.

Jetzt musst du das einfach entsprechend der gewünschten Anzahl von Punkte wiederholen.
 
Dann darf ich meinen Senf wieder dazu geben?

Der erste wichtige Punkt ist, dass man den Algorithmus im Detail verstanden hat: Was muss wann gemacht werden? Dazu schreibt man sich das am Besten auf. Und dann spielt man es zumindest in Gedanken durch. Wenn man Probleme hat, es im Kopf durchzuspielen, dann nutzt man Stift und Papier!

Das ist das A und o einer jeden Softwareenwicklung. Ohne geht es nicht! Ansonsten kommt nur Chaos bei raus - weil einfach zu viel durcheinander geworfen wird (wie die Codebrocken zeigen!).

wie ich random punkte erstellen lassen soll und zwar sollen dazu nur so viele punkte erstellt werden wie der user eingegeben hat
Das kann man also schon etwas beschreiben:
  • Von User Erfragen, wie viele Punkte erstellt werden sollen.
  • Gewünschte Anzahl Punkte erzeugen.

Wie man da evtl. erkennen kann: Da gibt es eine Anzahl Punkte, die eingegeben wird und dann später verwendet wird - das kann man also ggf. schon etwas formalisieren:

  • AnzahlPunkte := Von User erfragen, wie viele Punkte erstellt werden sollen.
  • AnzahlPunkte Punkte erzeugen

Damit hat man einen Algorithmus, den man jetzt 1:1 umsetzen kann. Das beschriebene wäre also einfach etwas wie:
Java:
public static void main(String[] args) {
    int anzahlPunkte = erfrageAnzahlPunkte();
    erzeugePunkte(anzahlPunkte);
}

Einfach und übersichtlich (Mit den Punkten passiert nichts weiter. Aber das liegt ja nur daran, dass deine erste Beschreibung genommen wurde. Das sollte schon gleich richtig formuliert werden!). Jetzt muss man aber natürlich schauen: Was muss in den Methoden rein? Das muss man dann wieder als erstes Beschreiben.

Aus dem Code habe ich gesehen: Es gibt Bedingungen für die Anzahl der Punkte. Und wenn die Anzahl ungültig ist, dann soll wiederholt werden.

Damit hat man etwas wie:
- Starte:
---> AnzahlPunkte = Frage nach Anzahl Punkte.
---> Ist Anzahl Punkte ok, dann gib diese zurück
---> Gib Fehlermeldung aus
---> Fange von "Starte:" wieder an.

Das lässt sich dann wieder 1:1 übersetzen.

Du solltest also genau nachdenken, was genau gemacht werden soll.

Das ist der universelle Ansatz. Damit kannst Du jeden Algorithmus schreiben!
 
Wow komplizierter als ich dachte aber vielen vielen dank für die ganze hilfe und optionen die ich machen kann und wie ich solche probleme angehen kann in der Zukunft 🙂. Habt mir sehr geholfen danke.
 

Zurück
Oben