Das Ziel der Aufgabe ist es 6 lkws zu erstellen, wo die rechten lkws sich um eine bestimmte Länge nacheinander bewegen sollen.
Ich habe nun ein Problem dabei diese lkws zu bewegen. Zum einen weiß ich nicht, wie ich es umsetzen soll, wann der lkw stoppen soll (eben nach der angegebenen Distanz. Mein anderes Problem ist, dass nicht alle Objekte zum Sprite hinzugefügt werden. Bei dem ersten Lkw bleibt z.B. der dritte Reifen stehen, während der LKW sich fortbewegt.
Das heißt konkret ich weiß nicht wie ich das mit dem Sprite machen soll. Und ich weiß nicht, wie ich das prüfen kann, wann der Lkw seine Distanz erreicht hat. Am besten soll der Lkw sich bis zum Ende der view bewegen. Ist vielleicht eine Möglichkeit zu überprüfen mit getXPosition ob diese der Länge der View entspricht. Würde mich über eine Antwort freuen.
Ich bin noch sehr frisch beim Programmieren. Deshalb hänge ich manchmal noch.
Hier mein Code:
[CODE lang="java" title="Konsole"]
/**
* Beschreiben Sie hier die Klasse Konsole.
*
* @author (Noah)
* @version (06.02.21)
*/
import sas.*;
import java.awt.Color;
public class Konsole
{
/**
* Konstruktor für Objekte der Klasse Konsole
*/
private View view;
private Lastwagen lkw0;
private Lastwagen lkw1;
private Lastwagen lkw2;
private Kipper lkw3;
private Lastwagen lkw4;
private Lastwagen lkw5;
Rectangle rechteck;
public Konsole()
{
View view = new View(800,600, "Lastkraftwagen");
lkw0 = new Lastwagen(20,100);
lkw1 = new Tieflader(190,100);
lkw2 = new Kipper(20,250);
lkw3 = new Kipper(190,250);
lkw4 = new Kastenwagen(20,400);
lkw5 = new KastenwagenMitBeschriftung(190,400,"Müller");
//fuehreAus();
//lkw3.kippen();
//lkw3.absenken();
}
/* public void fuehreAus(){
rechteck = new Rectangle (0, 0, 800,600);
rechteck.setTransparency(0);
while (!(lkw1.contains(rechteck))){
lkw1.bewege(330);
view.wait(100);
}
while (!(lkw3.contains(rechteck))){
lkw3.bewege(330);
view.wait(100);
}
while (!(lkw5.contains(rechteck))){
lkw5.bewege(330);
view.wait(100);
}
} */
}
[/CODE]
[CODE lang="java" title="Lastwagen"]
/**
* Beschreiben Sie hier die Klasse Lastwagen.
*
* @author (Noah)
* @version (06.02.21)
*/
import sas.*;
import java.awt.Color;
public class Lastwagen
{
/**
* Konstruktor für Objekte der Klasse Lastwagen
*/
View view;
Sprite lastwagen;
Rectangle rechteck1;
Rectangle rechteck2;
Rectangle fenster;
Circle rad1rand;
Circle rad1;
Circle rad2rand;
Circle rad2;
private double xPos;
private double yPos;
public Lastwagen(int pX, int pY)
{
xPos = pX;
yPos = pY;
lastwagen = new Sprite();
rechteck1 = new Rectangle (pX, pY,150, 15, Color.BLUE);
rechteck2 = new Rectangle (pX + 110, pY - 65, 40, 65, Color.BLUE);
fenster = new Rectangle (pX + 112, pY - 63, 36, 25, Color.WHITE);
rad1rand = new Circle (pX + 20, pY + 8, 7, Color.BLACK);
rad1 = new Circle (pX + 21, pY+ 9, 6, Color.WHITE);
rad2rand = new Circle (pX + 123, pY + 8, 7, Color.BLACK);
rad2 = new Circle (pX + 124, pY+ 9, 6, Color.WHITE);
lastwagen.add(rechteck1);
lastwagen.add(rechteck2);
lastwagen.add(fenster);
lastwagen.add(rad1rand);
lastwagen.add(rad2rand);
lastwagen.add(rad1);
lastwagen.add(rad2);
}
protected Sprite gibLKWGrafik() {
return lastwagen;
}
protected double gibXPosition() {
return xPos;
}
protected double gibYPosition() {
return yPos;
}
public void bewege (int distance) {
while (!(xPos == distance)) {
this.gibLKWGrafik().move (10);
xPos = xPos + 10;
}
}
}
[/CODE]
[CODE lang="java" title="Tieflader"]
/**
* Beschreiben Sie hier die Klasse Tieflader.
*
* @author (Noah)
* @version (06.02.21)
*/
import sas.*;
import java.awt.Color;
public class Tieflader extends Lastwagen
{
/**
* Konstruktor für Objekte der Klasse Tieflader
*/
public Tieflader(int pX, int pY)
{
super (pX, pY);
Sprite tieflader = new Sprite (this.gibLKWGrafik());
Circle rad3rand = new Circle (pX + 39, pY + 8, 7, Color.BLACK);
Circle rad3 = new Circle (pX + 40, pY+ 9, 6, Color.WHITE);
tieflader.add(rad3rand);
tieflader.add(rad3);
}
public void bewege (int distance) {
super.bewege(distance);
}
}
[/CODE]
[CODE lang="java" title="Kipper"]
/**
* Beschreiben Sie hier die Klasse Kipper.
*
* @author (Noah)
* @version (06.02.21)
*/
import sas.*;
import java.awt.Color;
public class Kipper extends Lastwagen
{
/**
* Konstruktor für Objekte der Klasse Kipper
*/
public Kipper(int pX, int pY)
{
super (pX, pY);
Sprite kipper = new Sprite (this.gibLKWGrafik());
Rectangle ladeflaeche = new Rectangle (pX, pY - 35, 109.5, 35, Color.GREEN);
kipper.add(ladeflaeche);
}
public void bewege (int distance) {
super.bewege(distance);
}
}
[/CODE]
[CODE lang="java" title="Kastenwagen"]
/**
* Beschreiben Sie hier die Klasse Kastenwagen.
*
* @author (Noah)
* @version (06.02.21)
*/
import sas.*;
import java.awt.Color;
public class Kastenwagen extends Lastwagen
{
/**
* Konstruktor für Objekte der Klasse Kastenwagen
*/
public Kastenwagen(int pX, int pY)
{
super (pX, pY);
Sprite kastenwagen = new Sprite (this.gibLKWGrafik());
Rectangle ladeflaeche1 = new Rectangle (pX, pY - 65, 109.5, 65, Color.RED);
kastenwagen.add(ladeflaeche1);
}
}
[/CODE]
[CODE lang="java" title="KastenwagenMitBeschriftung"]
/**
* Beschreiben Sie hier die Klasse KastenwagenMitBeschriftung.
*
* @author (Noah)
* @version (06.02.21)
*/
import sas.*;
import java.awt.Color;
public class KastenwagenMitBeschriftung extends Kastenwagen
{
/**
* Konstruktor für Objekte der Klasse KastenwagenMitBeschriftung
*/
public KastenwagenMitBeschriftung(int pX, int pY, String pSchrift)
{
super (pX, pY);
Text text = new Text (pX + 20, pY - 45, pSchrift, Color.YELLOW);
}
}
[/CODE]
Ich habe nun ein Problem dabei diese lkws zu bewegen. Zum einen weiß ich nicht, wie ich es umsetzen soll, wann der lkw stoppen soll (eben nach der angegebenen Distanz. Mein anderes Problem ist, dass nicht alle Objekte zum Sprite hinzugefügt werden. Bei dem ersten Lkw bleibt z.B. der dritte Reifen stehen, während der LKW sich fortbewegt.
Das heißt konkret ich weiß nicht wie ich das mit dem Sprite machen soll. Und ich weiß nicht, wie ich das prüfen kann, wann der Lkw seine Distanz erreicht hat. Am besten soll der Lkw sich bis zum Ende der view bewegen. Ist vielleicht eine Möglichkeit zu überprüfen mit getXPosition ob diese der Länge der View entspricht. Würde mich über eine Antwort freuen.
Ich bin noch sehr frisch beim Programmieren. Deshalb hänge ich manchmal noch.
Hier mein Code:
[CODE lang="java" title="Konsole"]
/**
* Beschreiben Sie hier die Klasse Konsole.
*
* @author (Noah)
* @version (06.02.21)
*/
import sas.*;
import java.awt.Color;
public class Konsole
{
/**
* Konstruktor für Objekte der Klasse Konsole
*/
private View view;
private Lastwagen lkw0;
private Lastwagen lkw1;
private Lastwagen lkw2;
private Kipper lkw3;
private Lastwagen lkw4;
private Lastwagen lkw5;
Rectangle rechteck;
public Konsole()
{
View view = new View(800,600, "Lastkraftwagen");
lkw0 = new Lastwagen(20,100);
lkw1 = new Tieflader(190,100);
lkw2 = new Kipper(20,250);
lkw3 = new Kipper(190,250);
lkw4 = new Kastenwagen(20,400);
lkw5 = new KastenwagenMitBeschriftung(190,400,"Müller");
//fuehreAus();
//lkw3.kippen();
//lkw3.absenken();
}
/* public void fuehreAus(){
rechteck = new Rectangle (0, 0, 800,600);
rechteck.setTransparency(0);
while (!(lkw1.contains(rechteck))){
lkw1.bewege(330);
view.wait(100);
}
while (!(lkw3.contains(rechteck))){
lkw3.bewege(330);
view.wait(100);
}
while (!(lkw5.contains(rechteck))){
lkw5.bewege(330);
view.wait(100);
}
} */
}
[/CODE]
[CODE lang="java" title="Lastwagen"]
/**
* Beschreiben Sie hier die Klasse Lastwagen.
*
* @author (Noah)
* @version (06.02.21)
*/
import sas.*;
import java.awt.Color;
public class Lastwagen
{
/**
* Konstruktor für Objekte der Klasse Lastwagen
*/
View view;
Sprite lastwagen;
Rectangle rechteck1;
Rectangle rechteck2;
Rectangle fenster;
Circle rad1rand;
Circle rad1;
Circle rad2rand;
Circle rad2;
private double xPos;
private double yPos;
public Lastwagen(int pX, int pY)
{
xPos = pX;
yPos = pY;
lastwagen = new Sprite();
rechteck1 = new Rectangle (pX, pY,150, 15, Color.BLUE);
rechteck2 = new Rectangle (pX + 110, pY - 65, 40, 65, Color.BLUE);
fenster = new Rectangle (pX + 112, pY - 63, 36, 25, Color.WHITE);
rad1rand = new Circle (pX + 20, pY + 8, 7, Color.BLACK);
rad1 = new Circle (pX + 21, pY+ 9, 6, Color.WHITE);
rad2rand = new Circle (pX + 123, pY + 8, 7, Color.BLACK);
rad2 = new Circle (pX + 124, pY+ 9, 6, Color.WHITE);
lastwagen.add(rechteck1);
lastwagen.add(rechteck2);
lastwagen.add(fenster);
lastwagen.add(rad1rand);
lastwagen.add(rad2rand);
lastwagen.add(rad1);
lastwagen.add(rad2);
}
protected Sprite gibLKWGrafik() {
return lastwagen;
}
protected double gibXPosition() {
return xPos;
}
protected double gibYPosition() {
return yPos;
}
public void bewege (int distance) {
while (!(xPos == distance)) {
this.gibLKWGrafik().move (10);
xPos = xPos + 10;
}
}
}
[/CODE]
[CODE lang="java" title="Tieflader"]
/**
* Beschreiben Sie hier die Klasse Tieflader.
*
* @author (Noah)
* @version (06.02.21)
*/
import sas.*;
import java.awt.Color;
public class Tieflader extends Lastwagen
{
/**
* Konstruktor für Objekte der Klasse Tieflader
*/
public Tieflader(int pX, int pY)
{
super (pX, pY);
Sprite tieflader = new Sprite (this.gibLKWGrafik());
Circle rad3rand = new Circle (pX + 39, pY + 8, 7, Color.BLACK);
Circle rad3 = new Circle (pX + 40, pY+ 9, 6, Color.WHITE);
tieflader.add(rad3rand);
tieflader.add(rad3);
}
public void bewege (int distance) {
super.bewege(distance);
}
}
[/CODE]
[CODE lang="java" title="Kipper"]
/**
* Beschreiben Sie hier die Klasse Kipper.
*
* @author (Noah)
* @version (06.02.21)
*/
import sas.*;
import java.awt.Color;
public class Kipper extends Lastwagen
{
/**
* Konstruktor für Objekte der Klasse Kipper
*/
public Kipper(int pX, int pY)
{
super (pX, pY);
Sprite kipper = new Sprite (this.gibLKWGrafik());
Rectangle ladeflaeche = new Rectangle (pX, pY - 35, 109.5, 35, Color.GREEN);
kipper.add(ladeflaeche);
}
public void bewege (int distance) {
super.bewege(distance);
}
}
[/CODE]
[CODE lang="java" title="Kastenwagen"]
/**
* Beschreiben Sie hier die Klasse Kastenwagen.
*
* @author (Noah)
* @version (06.02.21)
*/
import sas.*;
import java.awt.Color;
public class Kastenwagen extends Lastwagen
{
/**
* Konstruktor für Objekte der Klasse Kastenwagen
*/
public Kastenwagen(int pX, int pY)
{
super (pX, pY);
Sprite kastenwagen = new Sprite (this.gibLKWGrafik());
Rectangle ladeflaeche1 = new Rectangle (pX, pY - 65, 109.5, 65, Color.RED);
kastenwagen.add(ladeflaeche1);
}
}
[/CODE]
[CODE lang="java" title="KastenwagenMitBeschriftung"]
/**
* Beschreiben Sie hier die Klasse KastenwagenMitBeschriftung.
*
* @author (Noah)
* @version (06.02.21)
*/
import sas.*;
import java.awt.Color;
public class KastenwagenMitBeschriftung extends Kastenwagen
{
/**
* Konstruktor für Objekte der Klasse KastenwagenMitBeschriftung
*/
public KastenwagenMitBeschriftung(int pX, int pY, String pSchrift)
{
super (pX, pY);
Text text = new Text (pX + 20, pY - 45, pSchrift, Color.YELLOW);
}
}
[/CODE]