136 lines
3.5 KiB
Plaintext
136 lines
3.5 KiB
Plaintext
/*
|
|
|
|
----Lokale Variablen----
|
|
|
|
1. Wie lange ist eine Variable gültig, die innerhalb einer Funktion deklariert wurde?
|
|
|
|
- bis zum Ende des Programms
|
|
- bis zum Ende des nächsten Durchlaufs der draw-Funktion
|
|
X bis zum Ende der Funktion
|
|
|
|
2. Wie wird der Bereich bezeichnet, in dem eine Variable gültig ist und verwendet werden kann?
|
|
|
|
Scope
|
|
|
|
3. Was genau passiert, wenn sich zwei Variablen überschatten? Worauf muss man achten, wenn man Überschattung vermeiden möchte?
|
|
|
|
Bei "variable shadowing" wird der Wert einer globalen Variable im Scope der Funktion der lokalen Variable "überschattet".
|
|
Wenn man vorher also eine globale Variable (x = 5) setzt, diese in der Funktion setX() als lokale Variable neu Deklariert und Initialisiert (x = 3) ,
|
|
Überschattet der Wert der Lokalen Variable (x = 3) für dessen Scope die globale Variable. Geht die lokale Variable "out of scope", dann
|
|
gilt wieder der Wert der globalen Variable.
|
|
|
|
Um dies zu verhindern sollte man nie den selben Namen für eine Variable verwenden und bei Zuweisungen darauf achten keinen Datentyp dem
|
|
Namen voranzusetzen.
|
|
|
|
*/
|
|
|
|
|
|
|
|
// Aufgabe 1
|
|
void zwillinge()
|
|
{
|
|
// Clear Background to prevent shadows
|
|
background(40, 40, 40, 256);
|
|
|
|
//First circle
|
|
fill(0, 50, 256);
|
|
circle(mouseX, mouseY, 100);
|
|
|
|
// Second circle
|
|
// project mouse pos between 0 and 1. Take inverse to get the point symmetric postion
|
|
PVector fitMouse = new PVector((float) mouseX / (float) width, (float) mouseY / (float) height);
|
|
PVector twinPos = new PVector((1.0f - fitMouse.x) * width, (1.0f - fitMouse.y) * height);
|
|
|
|
fill(256, 50, 0);
|
|
circle(twinPos.x, twinPos.y, 100);
|
|
|
|
|
|
//println(fitMouseX + ", " + inverseMouseX );
|
|
}
|
|
|
|
void drillinge()
|
|
{
|
|
// Clear Background to prevent shadows
|
|
background(40, 40, 40, 256);
|
|
|
|
|
|
line(0, 0, mouseX, mouseY);
|
|
|
|
circle(mouseX, mouseY, 10);
|
|
circle(mouseX * .5, mouseY * .5, 10);
|
|
}
|
|
|
|
/*
|
|
----Systemvariablen----
|
|
|
|
1. Was sind Systemvariablen?
|
|
|
|
Systemvariablen sind variablen die bereitgestellt werden um diese zu verwenden. Beispielsweise die Mausposition oder die Fenstergröße
|
|
|
|
2. Was passiert, wenn du eine Variable anlegst, die den selben Namen wie eine Systemvariable hat? Tip: Probiere es mal aus ...
|
|
|
|
Die Systemvariable wird von dem selbst gesetzten Wert überschrieben.
|
|
|
|
3. Welche 2 Dinge sollte man im Bezug auf Systemvariablen niemals machen? Warum?
|
|
|
|
- Den Systemvariablen einen neuen Wert zuweisen
|
|
- Eigenen Variablen den selben Namen geben
|
|
*/
|
|
|
|
void zeichenTicker()
|
|
{
|
|
// Clear Background to prevent shadows
|
|
background(40, 40, 40, 256);
|
|
|
|
textSize(50);
|
|
text(key, width / 2, height / 2);
|
|
}
|
|
|
|
void mitte()
|
|
{
|
|
// Beim übertragen richtige Fenstergröße (111 x 77) in die main (setup) Methode eintragen und surface.setResizable(true) setzen
|
|
background(40, 40, 40, 256);
|
|
circle(width/2, height/2,50);
|
|
|
|
}
|
|
|
|
float second;
|
|
float offset = 0;
|
|
|
|
void zähler()
|
|
{
|
|
background(40, 40, 40, 256);
|
|
//fill(0,0,0,1);
|
|
second = constrain(((float) frameCount / (float) frameRate) - offset, 0 , 1000);
|
|
|
|
if(mousePressed == true)
|
|
{
|
|
offset = second + offset ;
|
|
}
|
|
|
|
println(offset + " " + mousePressed);
|
|
textSize(50);
|
|
text(second, width / 2 -50, height/2);
|
|
}
|
|
|
|
void setup()
|
|
{
|
|
size(800, 600);
|
|
frameRate(144);
|
|
//surface.setResizable(true);
|
|
}
|
|
void draw()
|
|
{
|
|
|
|
// ----lokale Variablen----
|
|
// zwillinge();
|
|
drillinge();
|
|
|
|
// ----Systemvariablen----
|
|
//zeichenTicker();
|
|
//mitte();
|
|
// zähler();
|
|
|
|
}
|
|
|