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:
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);
}
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.
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.
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!).
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:
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.