Schreiben Sie ein Programm mit einem 100x100 Fenster mit einem Ball (Durchmesser 20) in einem Rechteck(Position20,10 - Breite 60, Höhe 80). Verwenden Sie noFill() für das Rechteck!
Animieren Sie den Ball so, dass er von den Wänden des gezeichneten Rechtecks abprallt. Startpunkt ist 50,50. Geschwindigkeit zufällig im Bereich -3 bis 3 in beide Richtungen. Verwenden Sie float für Position und Geschwindigkeit! Der Ball sollte das Rechteck nie verlassen. Achten Sie darauf, dass der Ball korrekt abprallt. d.h. er berührt die Seiten, aber übertritt sie nicht.
Now this is my unfinished code:
float x = 0;
float y = 0;
float speed = random(-3,3);
void setup ()
{
size(100, 100);
}
void draw()
{
background(0);
fill(255);
rect(20, 10, 60, 80);
ellipse(50+x,50+y,20,20);
x = x + speed ;
y = y + speed;
if(x >60 && x <40)
{
speed = -speed;
}
if(y >80 && x <20)
{
speed = -speed;
}
}
Now what I dont understand is the noFill() thing.
When I put it after or before the rect. I cant see anything.
There I need a solution.
And the If causes are wrong.
The ball is not gooing backwards.
Can someone give me a hint. Then I will try it again.
Schreiben Sie ein Programm mit einem 100x100 Fenster mit einem Ball (Durchmesser 20) in einem Rechteck(Position20,10 - Breite 60, Höhe 80). Verwenden Sie noFill() für das Rechteck!
Animieren Sie den Ball so, dass er von den Wänden des gezeichneten Rechtecks abprallt. Startpunkt ist 50,50. Geschwindigkeit zufällig im Bereich -3 bis 3 in beide Richtungen. Verwenden Sie float für Position und Geschwindigkeit! Der Ball sollte das Rechteck nie verlassen. Achten Sie darauf, dass der Ball korrekt abprallt. d.h. er berührt die Seiten, aber übertritt sie nicht.
Es sind eine ganze Reihe von Fehlern in deinem Code.
Du musst einfach mehr testen und mit mehr Ruhe überlegen. Du behelligst sonst das Forum mit jeder einzelnen Aufgabe. Eigentlich solltest du diese ganz alleine lösen können und nur in Ausnahmefällen eine Frage im Forum stellen.
Warum meinst du z.B., dass speed für x und y stets gleich sein sollte?
zum Thema noFill()
einfach mal in die reference schauen, da steht jeder Befehl erklärt.
noFill() stellt die Füllung für alle nachfolgenden Formen (Rechteck, Ellipse…) aus.
Dies bleibt erhalten, auch wenn draw() erneut startet (was 60x pro Sekunde passiert).