Hi kurze Frage zu folgenden Thema:
und bewegt werden konnen. Im Verlauf dieser Aufgabe werden Sie mehrere Sprite-Klassen anlegen:
Defender, Invader, Bullet und InvaderGroup.
1. Die gemeinsamen Eigenschaften der verschiedenen Sprites sollen in der Oberklasse Sprite zusammengefasst
werden. Erstellen Sie diese mit folgenden int-Attributen: x und y fur die Position
der linken oberen Ecke des Sprites, sowie width und height fur seine Groe. Diese sollen nicht
von auen sichtbar sein, damit ihnen keine ungultigen Werte zugewiesen werden konnen.
2. Um dennoch einen Zugri zu ermoglichen, legen Sie oentliche get- und set-Methoden fur die
vier Attribute an. Die set-Methoden fur die Groe sollen nur positive Werte akzeptieren, x und
y durfen auerdem den Wert 0 erhalten. Falls ein ungultiger Wert ubergeben wird, soll dieser
ignoriert werden.
3. Legen Sie einen oentlichen Konstruktor an, dem zwei Parameter vom Typ int fur Breite und
Hohe ubergeben werden. Setzen Sie die entsprechenden Attribute, falls die Werte akzeptabel
sind. x und y sollen den Standardwert 0 erhalten.
4. Im Konstruktor soll auerdem jedem Sprite eine eindeutige Seriennummer zugewiesen werden.
Klassenvariablen (
"
statische Attribute\) existieren unabhangig von den einzelnen Sprite-
Instanzen. Mit einer statischen int-Variablen in der Klasse Sprite lasst sich ein Zahler realisieren,
der die bisher angelegten Sprites mitzahlt. Erweitern Sie den Konstruktor entsprechend und
verwenden Sie den Zahler, um fur jedes Sprite eine eindeutige Nummer in einem privaten, unver
anderlichen Attribut id zu speichern. Da dieses Attribut nicht mehr verandert werden kann,
mussen Sie nur eine get-Methode dafur anlegen.
5. Besonders wichtig bei der Programmierung von Spielen ist die Uberprufung, ob zwei Sprites miteinander
kollidieren. In den meisten Fallen reicht es aus, zu uberprufen, ob sich die rechteckigen
Flachen der Sprites an einer Stelle uberschneiden. Dazu soll jedes Sprite eine oentliche Methode
boolean hit(int x, int y, int width, int height) erhalten, die uberpruft, ob ein Rechteck
der angegebenen Groe und Position mit dem aktuellen Sprite kollidiert und entsprechend
true (Kollision) oder false (keine Kollision) zuruckgibt.
1
Uberladen Sie diese Methode durch eine zweite, die als einzigen Parameter ein Sprite-Objekt
ubergeben bekommt und die gerade angelegte hit-Methode geeignet aufruft.
Also ich bekome das mit der hit Methode nicht hin. Vielleicht kann mir einer helfen.
Danke im Voraus!
und bewegt werden konnen. Im Verlauf dieser Aufgabe werden Sie mehrere Sprite-Klassen anlegen:
Defender, Invader, Bullet und InvaderGroup.
1. Die gemeinsamen Eigenschaften der verschiedenen Sprites sollen in der Oberklasse Sprite zusammengefasst
werden. Erstellen Sie diese mit folgenden int-Attributen: x und y fur die Position
der linken oberen Ecke des Sprites, sowie width und height fur seine Groe. Diese sollen nicht
von auen sichtbar sein, damit ihnen keine ungultigen Werte zugewiesen werden konnen.
2. Um dennoch einen Zugri zu ermoglichen, legen Sie oentliche get- und set-Methoden fur die
vier Attribute an. Die set-Methoden fur die Groe sollen nur positive Werte akzeptieren, x und
y durfen auerdem den Wert 0 erhalten. Falls ein ungultiger Wert ubergeben wird, soll dieser
ignoriert werden.
3. Legen Sie einen oentlichen Konstruktor an, dem zwei Parameter vom Typ int fur Breite und
Hohe ubergeben werden. Setzen Sie die entsprechenden Attribute, falls die Werte akzeptabel
sind. x und y sollen den Standardwert 0 erhalten.
4. Im Konstruktor soll auerdem jedem Sprite eine eindeutige Seriennummer zugewiesen werden.
Klassenvariablen (
"
statische Attribute\) existieren unabhangig von den einzelnen Sprite-
Instanzen. Mit einer statischen int-Variablen in der Klasse Sprite lasst sich ein Zahler realisieren,
der die bisher angelegten Sprites mitzahlt. Erweitern Sie den Konstruktor entsprechend und
verwenden Sie den Zahler, um fur jedes Sprite eine eindeutige Nummer in einem privaten, unver
anderlichen Attribut id zu speichern. Da dieses Attribut nicht mehr verandert werden kann,
mussen Sie nur eine get-Methode dafur anlegen.
5. Besonders wichtig bei der Programmierung von Spielen ist die Uberprufung, ob zwei Sprites miteinander
kollidieren. In den meisten Fallen reicht es aus, zu uberprufen, ob sich die rechteckigen
Flachen der Sprites an einer Stelle uberschneiden. Dazu soll jedes Sprite eine oentliche Methode
boolean hit(int x, int y, int width, int height) erhalten, die uberpruft, ob ein Rechteck
der angegebenen Groe und Position mit dem aktuellen Sprite kollidiert und entsprechend
true (Kollision) oder false (keine Kollision) zuruckgibt.
1
Uberladen Sie diese Methode durch eine zweite, die als einzigen Parameter ein Sprite-Objekt
ubergeben bekommt und die gerade angelegte hit-Methode geeignet aufruft.
Also ich bekome das mit der hit Methode nicht hin. Vielleicht kann mir einer helfen.
Danke im Voraus!
Java:
public class Sprite {
private int x;
private int y;
private int width;
private int height;
static int anzahlSprite = 0;
private int Id;
public int getX(){
return x;
}
public int getY(){
return y;
}
public int getWidth(){
return width;
}
public int getHeight(){
return height;
}
public void setX(int x){
if( x >= 0){
this.x = x;
}
}
public void setY(int y){
if( y >= 0){
this.y = y;
}
}
public void setWidth(int w){
if( w > 0){
this.width = w;
}
}
public void setHeight(int h){
if( h > 0){
this.height = h;
}
}
public Sprite(int w, int h){
this.x = 0;
this.y = 0;
if(w < 0 && h >0){
this.height = h;
this.width = w;
}
anzahlSprite ++;
this.Id = anzahlSprite;
}
public int getId(){
return Id;
}
public boolean hit(int x, int y, int width, int height){
if() //Hier komme ich leider nicht auf die Lösung
return false;
}
public boolean hit(Sprite a){
int ab = a.getX ();
int b = a.getY ();
int w = a.getWidth();
int h = a.getHeight ();
if(hit(ab,b,w,h) == true){
return true;
}
return false;
}
}