# Zufällige Farbe



## Shusi (2. Apr 2008)

Hiho ihrs !
Ich bin noch recht neu bei Java und habe ein wohl recht einfache Frage:

Also, ich bin grade dabei ein Spiel (sowas wie BreakOut) zu programmieren und will nun den Blöcken, die ich zerballern will eine zufällige Farbe verpassen. Allerdings nicht irgendeine, also nicht mit (R,G,B) sondern simpel mit Color.red z.B. 

hab dafür jetzt mal sowas gebastelt:


```
public zfarbe () {

    int m = (int) Math.random()*6;
    if(m==0){ Color Farbe = new Color(Color.red);   }
    if(m==1){ Color Farbe = new Color(Color.blue);   }
    if(m==2){ Color Farbe = new Color(Color.yellow);   }
    if(m==3){ Color Farbe = new Color(Color.pink);   }
    if(m==4){ Color Farbe = new Color(Color.green);   }
    if(m==5){ Color Farbe = new Color(Color.white);   }
    if(m==6){ Color Farbe = new Color(Color.turkey);   }
    return Farbe;
  }
```

allerdings meckert er, weil er ja nicht weiß, als was er "Farbe" zurückgeben soll...
nur weiß ich nicht, was das für eine Methode sein soll.. als int gehts nicht..
Wenn einer weiter weiß, bitte antworten 

PS: danke fürs lesen xD


----------



## Tobias (2. Apr 2008)

```
public zfarbe () {

    Color Farbe; // hier

    int m = (int) Math.random()*6;
    if(m==0){ Farbe = Color.red;   }
    if(m==1){ Farbe = Color.blue;   }
    if(m==2){ Farbe = Color.yellow;   }
    if(m==3){ Farbe = Color.pink;   }
    if(m==4){ Farbe = Color.green;   }
    if(m==5){ Farbe = Color.white;   }
    if(m==6){ Farbe = Color.turkey;   }
    return Farbe;
  }
```

Eine Variablendeklaration ist nur bis zu der geschweiften Klammer gültig, die den Block (in dem die Deklaration stattfand) abschließt.

Weitere Hinweise: 
- Variablen (Farbe) beginnen mit Kleinbuchstaben (farbe).
- Klassen beginnen mit Großbuchstaben (Color).
- Methodennamen sollten mit einem Verb beginnen (waehleFarbe()).
- Die Konstanten der Klasse Color sind bereits selbst Color-Objekte, weshalb new hier überflüssig ist.

mpG
Tobias

Edit: Möglicherweise meckert der Compiler jetzt, das Farbe nicht initialisiert sei (weil der nicht rafft, das eine der if-Abfragen auf jeden Fall true ist) - da hilft 


```
Color Farbe = null;
```

an der mit "hier" markierten Stelle.


----------



## tincup (3. Apr 2008)

Hm ne so kann das ja auch nicht hinhauen,

Ich gehen mal davon aus, dass  "zfarbe" keine Klasse sondern ein Methodenname sein soll. Da fehlt dann der Rückgabetyp, sonst kannst du "return" so nicht verwenden.

In etwa


> public Color zfarbe() {
> ...
> }



An Shusi; Unbedingt nochmal Grundlagen von Java durchlesen!

Achja und
	
	
	
	





```
int m = (int) Math.random()*6;
```
 gibt ne Zufallszahl zwischen 0 und 5 und nicht zwischen 0 und 6


----------



## Tobias (3. Apr 2008)

Den fehlenden Rückgabewert habe ich übersehen, das mit 0-5 statt 0-6 habe ich mir als Übung für den Fragesteller verkniffen  ...

mpG
Tobias


----------



## Verjigorm (3. Apr 2008)

statt der If's empfiehlt sich hier auch eine switch-Anweisung


----------



## Shusi (3. Apr 2008)

Danke euch ! Es geht jetzt 


```
public Color zufallfarbe () {
    Color farbe = null;
    int m = (int) Math.random()*7;
    if(m==0){ farbe = (Color.red);   }
    if(m==1){ farbe = (Color.blue);   }
    if(m==2){ farbe = (Color.yellow);   }
    if(m==3){ farbe = (Color.pink);   }
    if(m==4){ farbe = (Color.green);   }
    if(m==5){ farbe = (Color.white);   }
    if(m==6){ farbe = (Color.cyan);   }
    return farbe;
  }
```


----------

