Hallo erstmal,
Ich habe eine Extraaufgabe vom Lehrer bekommen undzwar soll ich ein Kreis bei Berührung mit dem Frame abprallen lassen.
Die Methode dich ich geschrieben hab ist staendigeBewegung. Es funktioniert jedoch nicht mit dem Abprallen.. Kann mir da jemand helfen bzw. sagen was falsch ist?
Vielen Dank schonmal im Vorraus!
Mfg, xZitrus
Ich habe eine Extraaufgabe vom Lehrer bekommen undzwar soll ich ein Kreis bei Berührung mit dem Frame abprallen lassen.
Java:
import java.awt.*;
import java.awt.geom.*;
public class Kreis
{
private int diameter;
private int xPosition;
private int yPosition;
private String color;
private boolean isVisible;
Kreis()
{
// Weise den Attributen hier Werte zu.
xPosition = 250;
yPosition = 300;
color = "yellow";
isVisible = true;
diameter = 50;
draw();
}
public void setPosition(int newxPosition, int newY)
{
erase();
xPosition = newxPosition;
yPosition = newY;
draw();
}
public void moveHorizontal(int distance)
{
erase();
xPosition += distance;
draw();
}
public void moveVertical(int distance)
{
erase();
yPosition += distance;
draw();
}
public void staendigeBewegung(char x_richtung,char y_richtung )
{
int bewegung_x = 1;
int bewegung_y = 1;
while (true) {
if (xPosition >= 500 || xPosition <= 0)
{
bewegung_x = (bewegung_x) * -1;
}
if (yPosition >= 500 || yPosition <= 0)
{
bewegung_y = (bewegung_y) * -1;
}
if (x_richtung == '-') {
bewegung_x = (xPosition -= 1);
}
else if (x_richtung == '+') {
bewegung_x = (xPosition += 1);
}
else
{
System.out.println("Bitte wähle zwischen '+' und '-' !");
break;
}
if (y_richtung == '-') {
bewegung_y = yPosition -= 1;
}
else if (y_richtung == '+') {
bewegung_y = yPosition += 1;
}
else {
System.out.println("Bitte wähle zwischen '+' und '-' !");
break;
}
draw();
}
}
public void slowMoveHorizontal(int distance)
{
int delta;
if(distance < 0)
{
delta = -1;
distance = -distance;
}
else
{
delta = 1;
}
for(int i = 0; i < distance; i++)
{
xPosition += delta;
draw();
}
}
public void slowMoveVertical(int distance)
{
int delta;
if(distance < 0)
{
delta = -1;
distance = -distance;
}
else
{
delta = 1;
}
for(int i = 0; i < distance; i++)
{
yPosition += delta;
draw();
}
}
public void changeSize(int newDiameter)
{
erase();
diameter = newDiameter;
draw();
}
public void changeColor(String newColor)
{
color = newColor;
draw();
}
private void draw()
{
if(isVisible) {
Canvas canvas = Canvas.getCanvas();
canvas.draw(this, color, new Ellipse2D.Double(xPosition, yPosition,
diameter, diameter));
canvas.wait(10);
}
}
private void erase()
{
if(isVisible) {
Canvas canvas = Canvas.getCanvas();
canvas.erase(this);
}
}
}
Die Methode dich ich geschrieben hab ist staendigeBewegung. Es funktioniert jedoch nicht mit dem Abprallen.. Kann mir da jemand helfen bzw. sagen was falsch ist?
Vielen Dank schonmal im Vorraus!
Mfg, xZitrus
Zuletzt bearbeitet von einem Moderator: