Dartspiel mit Zufallsmod BlueJ

Hallo habe ein Dartspiel in BlueJ gemacht, nun möchte ich, dass der fall durch zufall hoch und runter geht. Das bekomm ich aber einfach nicht hin. Keine ahnung wieso. Ich geb mal das scribt durch:

public class Dart1
{
// Objekte
Bildschirm derBildschirm;
Stift meinStift;
Maus dieMaus;
double yPos;
double xPos;
double Zufallstahl;

// Konstruktor
public Dart1()
{
derBildschirm = new Bildschirm(600,400);
meinStift = new Stift();
dieMaus = new Maus();
yPos = 300 ;
xPos = 100 ;
}

// Dienste
public void fuehreAus()
{
// Aktionsteil
//Dartscheibe zeichnen
meinStift.bewegeBis(500,200);
meinStift.zeichneKreis(100);
meinStift.zeichneKreis(80);
meinStift.zeichneKreis(60);
meinStift.zeichneKreis(40);

//Pfeil zeichnen
do
{ meinStift.radiere();
meinStift.bewegeBis(xPos,yPos);
meinStift.runter();
meinStift.zeichneKreis(3);
meinStift.bewegeUm(-50);
xPos = xPos + Math.Random(); //

Hallo,

Was genau passiert denn?? Ich kenne mich mit BlueJ nicht aus. Normalerweise liefert Math.Random() aber eine Zufallszahl zwischen 0 und 1. Also erstmal bewegst Du damit dann nur in eine Richtung (Da Du immer nur dazu addierst…) und zum zweiten ist die Zahl zu klein (Anfangswerte waren bei Dir im dreistelligen Bereich). Ich würde eher eine Fallunterscheidung durchführen: (wert = Math.Random())

  • Bei wert 0.5 : - 100 * (1 - wert)
    Auf diese Weise gehst Du mit 50% W’Keit nach oben bzw. unten und zwar um max. 50 Einheiten.

Mfg

Hat einer von euch eine Ahnung was ich da falsch gemacht habe?

Hallo,

eine Methode Math.Random() kenne ich nicht, nur Math.random(). Und diese liefert einen Wert 0.0

Hi das Math.Random() liefert eine Zahl zwischen 0.0 und 1.0 Du muss dir also Grenzen überlegen. Wenn du zB in einem Bereich um 100 Pixel einen Zufallswert wünscht muss du xpos = xpos + (Math.Random() * 100) machen.

Das mit den größen passt wohl und dass die Dartscheibe ein wenig löchrig wird, kann ich auch verkraften. Mein Problem besteht darin, dass er einfach keine Zufallszahl zwischen 0 und 1 erzeugen will.

Hallo, trostpreis,

sorry, aber damit kenne ich mich leider nicht aus.

Gruß,
Franz

Hallo,

Math.random() gibt einen double Wert zwischen 0.0 und 1.0 zurück.

Benutze stattdessen

java.util.Random:




import java.util.Random;
...
Random randomGenerator = new Random();
for (int i = 0; i 

Weitere Informationen zu Random findest du unter:
http://download.oracle.com/javase/1.4.2/docs/api/java/util/Random.html

oder
http://www.iks.hs-merseburg.de/~uschroet/Literatur/Java\_Lit/JAVA\_Insel/javainsel\_05\_006.htm#mj0c76844d2533621d5d2e1d9fd42b7b1c