Art 4 Felder Matrix Memory

txtt

Neues Mitglied
Hallo,

ich bin neu hier und brauche wenn möglich eine schnelle Antwort. Folgendes Problem, im Praktikum hab ich heute die Aufgabe erhalten eine Quadrat in vier Teile aufzuteilen,

quasi so:
size(800, 800);
for (int y = 0; y < 800; y+= 400) {
for (int x = 0; x < 800; x+= 400) {
rect(x, y, 400, 400);
}
}

Nun soll ein zufälliges Quadrat rot aufblinken und dann wieder weiß werden, dann soll man das richtige anklicken, am besten mit Punktezähler...

Ich selbst habe überhaupt keine Ahnung von Java, in dem Fall Processing, habe heute erst mit Java angefangen und er hat mir und meinen Praktikumspartner bis morgen (05.02) um 12:00 Zeit gegeben.

Meine jämmerlichen Anfänge sind das hier:

size(800, 800);
for (int y = 0; y < 800; y+= 400) {
for (int x = 0; x < 800; x+= 400) {
rect(x, y, 400, 400);
}
}

int [ ] [ ] test =new int [ 2 ] [ 2 ] ;

Nun zur eigentlichen Frage, hat jemand eine Ahnung wie man das machen kann, ein gutes Tutorial oder überhaupt eine Idee? Ich bin mittlerweile überfordert und hab keine Ahnung mehr, der einzige schlaue Rat den es heute für mich gab, war Java lernt man nicht an einem Tag.🙁

Mit freundlichen Grüßen txtt
 
Also Java lernen an einem Tag wenn man keine andere Sprache kennt, ist kaum möglich.

Als erstes ist ja eine GUI gefordert. Swing oder JavaFX? Das solltest Du etwas kennen.

Dann könnte der erste Schritt sein, dass Du die Gui aufbaust. Das sollte sein, dass Du das existierende Fenster einfach mit 4 Panels füllst. (Also nix mit for schleifen!). Wenn du also einen Fensterbereich mit der Größe sizex, sizey hast, dann hast Du 4 JPanels, die halt die folgenden boundaries haben:
0,0,sizex/2, sizey/2
sizex/2, 0, sizex/2, sizey/2
0,sizey/2, sizex/2, sizey/2
sizex/2, sizey/2, sizex/2, sizey/2

Dann brauchst Du halt EventHandler für Clicks auf diese Panel.

Dann brauchst Du einen Timer oder so. An einem gewünschten Zeitpunkt, wird dann eine Zufallszahl (0-3) erzeugt und das entsprechende Panel (kann ja in einem Array gespeichert sein) in der Farbe angepasst. Das Panel merkst Du Dir natürlich.
Wenn da nun der User auf ein Panel klickt, dann wird:
- geprüft, ob auf das richtige Panel geklickt wurde.
- die Farbe zurück gesetzt
- die Variable, in der du das gesetzte Panel gemerkt wurde, wieder resettet. (So dass nur ein gültiger Click gehandhabt wird)

Das wäre dann wohl die Logik, die Du implementieren musst.

Aber jetzt nur noch ein halber Tag ohne Java KnowHow? Irgendwie kann ich mir nicht vorstellen, wie man ohne Java Grundlagen so eine Aufgabe bekommen kann.

Konrad
 
Ich möchte vorausschicken, dass ich die Codebeispiele nicht getestet habe, da ich hier kein Processing installiert habe.

Als erstes nummerierst du die 4 Teilquadrate durch:
0, 1,
2, 3

Nun berechnest du die die Position der linken oberen Eckpunkte dieser 4 Quadrate.
Der Koordinaten-Nullpunkt liegt in der linken oberen Ecke. Der x-Wert wächst von links nach rechts, der y-Wert von oben nach unten.

Der x-Wert ist entweder 0 (für Quadrat 0 und 2) oder 400 (für Quadrat 1 und 3).
Mathematisch kann man das so formulieren : ( Nr % 2 ) * 400 // % ist der Modulo-Operator: https://processing.org/reference/modulo.html
Der y-Wert ist entweder 0 (für Quadrat 0 und 1) oder 400 (für Quadrat 2 und 3).
Mathematisch kann man das so formulieren : ( Nr / 2 ) * 400 //

Der Code könnte dann so aussehen.

Java:
int seiteOriginal = 800;
int seiteNeu = seiteOriginal / 2;
int weiss= #FFFFFF;
int farbig = #FF0000;   // rot
 
void draw() {
  for (int i = 0; i<4; i++ ) {
    drawQuadrat (i, weiss);
  }
}
 
void drawQuadrat (int nummer, int farbe) {
  for (int i = 0; i<4; i++ ) {
    int x = (i % 2) * seiteNeu;
    int y = (i / 2) * seiteNeu;
    int x2 = x + seiteNeu;
    int y2 = y + seiteNeu;
   
    fill (farbe);
    rect (x, y, x2, y2);
    // folgende Zeile hilft beim Testen.
    println ("Quadrat an der Position x1=" + x + "; y1=" + y + "; x2=" + x2 + "; y2=" + (y+ seiteNeu) );
  }
}

Als nächstes brauchst du Zufallszahlen. Siehe dazu : https://processing.org/reference/random_.html

Weiterführende Literatur:
* https://www.processing.org/tutorials/
* https://processing.org/reference/
* http://funprogramming.org/
 

Neue Themen


Zurück
Oben