Hintergrundfarbe auslesen und zufällig bestimmen.

  • Antworten:30
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 18

29.08.2016 14:09:19 via Website

Hallo, ich versuche ein "Spiel" zu programmieren wo es 3 Buttons gibt(rot,grünn,blau) und ein Countdown und in den 30sek muss man so oft die richtigee Farbe(wie die Farbe des Hintergrundes) tippen wie möglich.Jemand ne Idee wie ich wenn ich zum beispiel den Button "grün" geklickt habe,auslesen kann ob die HIntergrund farbe auch grün ist?Und wie kann ich (wenn es richtig war) eine neue zufällige HIntergrundfarbe(rot ,grün oder blau) übernehmen?

  • Forum-Beiträge: 2.214

29.08.2016 14:27:23 via Website

Hallo Niesse.

du musst in deiner App die Hintergrundfarbe setzen und den gesetzten Wert behalten,
Stimmt der gemerkte Wert mit dem Gedrückten überein , dann hast du einen Treffer.

Ich möchte Dir anbei noch etwas zum Lesen geben :

http://openbook.rheinwerk-verlag.de/javainsel/

https://developer.android.com/training/index.html
http://www.tutorialspoint.com/android/

— geändert am 30.08.2016 09:14:02

Liebe Grüße - Stefan
[ App - Entwicklung ]

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.308

29.08.2016 14:27:41 via Website

Hallo Niessie,
Ich habe deinen Thread mal in den Entwicklerbereich verschoben, da passt er besser als bei den Snippets.

Ich neheme jetzt mal an du Programmierst in Java:

Countdown -> CowntdownTimer
Farbe des Hintergrunds ist einfach die Background Color, diese kannst du setzen oder auslesen.
Zufällige hintergrundfarbe geht mit z.b. erzeugung einer Zufallszahl und deren Verarbeitung.

Ansonsten sind das nurnoch ein paar if befehle etc.

Natürlich kannst du dir auch ein Datenmodell dahinter bauen, dann musst du nicht dauerhaft mit den Views arbeiten

LG Pascal //It's not a bug, it's a feature. :) ;)

  • Forum-Beiträge: 18

29.08.2016 14:56:53 via Website

Danke werde die lInks mal durchschauen,es könnte seien das wir sogar noch ein Java buch zuhause haben..

  • Forum-Beiträge: 18

29.08.2016 14:59:58 via Website

Ja in Java "mit" AndroidStudio.Wie ich die BackgroundColor setze weiß ich: layout(id vom RelativLayout).setBackgroundColor(Color.[Farbe]); Aber ich weiß nicht wie ich die über ein if befehl ausgelesen bekomme.Also if weiß ich aber welcher command? also z.b. layout.isbackgroundcolor... oder wie lautet der Befehl?

  • Forum-Beiträge: 18

29.08.2016 15:48:22 via Website

Ich glaub ich mach was falsch.. Sorry aber mit den Ifs bin ich noch nicht so..

 if (layout.getBackground() == Color.GREEN );
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.308

29.08.2016 16:04:23 via Website

Wie wärs denn so:

if(((ColorDrawable) button.getBackground()).getColor() == Color.GREEN)
{
-...
}
Aber anderer ansatz:
Wie wärs wenn du dir die aktuelle Farbe in einer Klasse speicherst, dann musst du nicht immer per get die Farbe laden

LG Pascal //It's not a bug, it's a feature. :) ;)

  • Forum-Beiträge: 18

29.08.2016 16:27:26 via Website

So,habe jetzt programmiert das der Countdown geht,wenn man auf Play drückt,der Play button verschwindet,die Spielflächen auftauchen,man dann 30sek. spielen kann und bei 0 wird der Play button sicht bar, und die Spielflächen verschwinden.

Was ich noch brauch:

Die Punkte anzeige. Und das mit dem Hintergrund.Mal ne kurze noch dümmere frage..muss ich bei ColorDrawable was eingeben?oder nur als class Importieren?

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.308

29.08.2016 16:35:35 via Website

Bei dem Cast nur die class importieren.
Wenn du aber die Farbe setzen willst, must du im Konstruktor schon die Color konstante übergeben.

LG Pascal //It's not a bug, it's a feature. :) ;)

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.308

29.08.2016 16:48:00 via App

Jupp ist es aber lassen wir den TE erstmal machen wie er denkt. Er hat ja mit ifs angefangen ;)

LG Pascal //It's not a bug, it's a feature. :) ;)

  • Forum-Beiträge: 18

29.08.2016 17:14:33 via Website

String random = new farbenArrayList.get(new Random().nextInt(farbenArrayList.size()));

AndroidStudio unterschreicht mir das mit dem kommentar ich darf get() nicht mit Int verbinden.Aber in einem Video ging das..Habe die farben in eine arraylist reingepackt und will dann immer zufällig eine raus nehmen.

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.308

29.08.2016 17:45:08 via App

wie ist die array list definiert?

LG Pascal //It's not a bug, it's a feature. :) ;)

  • Forum-Beiträge: 18

29.08.2016 17:47:01 via Website

farbenArrayList = new ArrayList<>();

und

ArrayList farbenArrayList;

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.308

29.08.2016 18:02:44 via App

Du musst ja nich den Typ angeben.
ArrayList farbenList = new ArrayList<>();

LG Pascal //It's not a bug, it's a feature. :) ;)

  • Forum-Beiträge: 18

29.08.2016 18:30:16 via Website

hm.. habe es mal mit einem Random Zahlen teil versucht und hat in einer extra App auch super funktioniert.Da wird ne Zahl von 1-3 generiert und dann wird die Zahl 1-3 durch einen String an die Farbe des Hintergrund gegeben.Aber da mekkert er rum(bei setBackgroundColor wo man die color definiert,

final String[] farben = {"RED" , "GREEN" , "BLUE"};

                                                 final int rando = (int) (Math.random() * 3);
                                                 layout.setBackgroundColor(Color.(farben[rando]));
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.308

29.08.2016 18:31:23 via App

Was ist denn da die Meldung?

LG Pascal //It's not a bug, it's a feature. :) ;)

  • Forum-Beiträge: 18

29.08.2016 18:35:08 via Website

cant resolve symbol "farben"

layout.setBackgroundColor(Color.farben[rando]);

Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 9.308

29.08.2016 18:41:08 via Website

Das geht ja auch so nicht ;)
Du kannst nicht auf eine variable per String zugreifen.

Das muss so ausshen:

final int[] farben = {Color.RED ,Color.GREEN ,Color.BLUE};

                                             final int rando = (int) (Math.random() * 3);
                                             layout.setBackgroundColor(farben[rando]);

Du musst aus den Farben direkt ein integer array machen, dann geht es

LG Pascal //It's not a bug, it's a feature. :) ;)