class Oeffnung { //-------------------------------------------------------------------------------------------------- // Variabeln //-------------------------------------------------------------------------------------------------- float x1; // x-Wert links float x2; // x-Wert rechts float y1; // y-Wert oben float y2; // y-Wert unten //-------------------------------------------------------------------------------------------------- // Konstruktoren //-------------------------------------------------------------------------------------------------- Oeffnung (float l, float r, float o, float u) // Generierung mit Koordinaten { x1 = l; x2 = r; y1 = o; y2 = u; } Oeffnung () // Generierung zufŠllig { boolean gefunden = false; while (gefunden == false) { x1 = random (0, width); y1 = random (0, width); x2 = x1 + random (minB, maxB); y2 = y1 + random (minB, maxB); gefunden = testen (); } } //-------------------------------------------------------------------------------------------------- // Methoden //-------------------------------------------------------------------------------------------------- // zeichnet …ffnung und Rahmen void zeichnen () { fill (RahmenColor); // Fensterrahmen stroke(FensterStroke); strokeWeight(0.2); rectMode(CORNERS); rect (x1, y1, x2, y2); fill (FensterColor); // Fenster stroke(FensterStroke); strokeWeight(0.2); rectMode(CORNERS); rect (x1 + Rahmenbreite, y1 + Rahmenbreite, x2 - Rahmenbreite, y2 - Rahmenbreite); } //-------------------------------------------------------------------------------------------------- // źberschneidet sich die …ffnung mit einer anderen? (fźr die Generierung der …ffnungen) boolean testen () { boolean ok = true; // RŠnder if ( (x1 > minAbstand && x2 < width - minAbstand && y1 > minAbstand && y2 < height - minAbstand) == false ) { ok = false; } // andere …ffnungen if (ZaehlerOeffnungen != 0) { for (int i = 0; i < ZaehlerOeffnungen; i++) { float L = meineOeffnung [i].getGeometrie () [0]; float R = meineOeffnung [i].getGeometrie () [1]; float O = meineOeffnung [i].getGeometrie () [2]; float U = meineOeffnung [i].getGeometrie () [3]; if ( (x1 > R + minAbstand || x2 < L - minAbstand || y1 > U + minAbstand || y2 < O - minAbstand) == false ) { ok = false; } } } return ok; } //-------------------------------------------------------------------------------------------------- // gibt "Koordinaten" (links, rechts, oben, unten) der …ffnung in einem Array zurźck float [] getGeometrie () { float [] Geometrie = {x1, x2, y1, y2}; return Geometrie; } //-------------------------------------------------------------------------------------------------- }