Hallo Communitiy
Ich hatte mir vorgenommen zum Einstieg in Java ein einfaches Dart-Spiel zu programmieren.
Zu Beginn des Spiels soll der Pfeil am linken Bildschirmran gerade herunterfallen. Wird die Tastatur einmal gedrückt, so bleibt er auf seiner aktuellen Höhe und fängt an sich zu drehen. Beim zweiten mal wird auch seine Ausrichtung fixiert.
Der betreffende Programmcode ist folgender:
[Java]public void Pfeilwurf()
{
Oberflaeche();
BST.bewegeBis(200,50);
//Fallen
for(int x = 10; x <= 500; x = x+1)
{
ZeichnePfeil(50,x);
UH.warte(50);
BST.hoch();
BST.bewegeBis(45,x-10);
BST.setzeFarbe(Farbe.WEISS);
BST.setzeFuellmuster(Muster.GEFUELLT);
BST.zeichneRechteck(40,30);
if(x == 500)
{
x = 10;
}
if(TST.wurdeGedrueckt())
{
BSTReset();
ZeichnePfeil(50,x);
TST.weiter();
break;
}
}
//Drehen
double vpd = BST.vPosition();
int vp = (int)vpd;
UH.warte(1000);
boolean beenden = false;
for(int x = 30; x >= -30; x--)
{
BST.dreheBis(x);
ZeichnePfeil(50,vp);
UH.warte(10);
BST.bewegeBis(45,vp-50);
BST.setzeFarbe(Farbe.WEISS);
BST.setzeFuellmuster(Muster.GEFUELLT);
BST.zeichneRechteck(40,100);
if(x == -30)
{
for(x = -30; x <= 30; x++)
{
BST.dreheBis(x);
ZeichnePfeil(50,vp);
UH.warte(10);
BST.bewegeBis(45,vp-50);
BST.setzeFarbe(Farbe.WEISS);
BST.setzeFuellmuster(Muster.GEFUELLT);
BST.zeichneRechteck(40,100);
if(TST.wurdeGedrueckt())
{
beenden = true;
TST.weiter();
break;
}
}
}
if(TST.wurdeGedrueckt())
{
beenden = true;
TST.weiter();
}
if(beenden = true)
{
BST.dreheBis(x);
ZeichnePfeil(50,vp);
break;
}
}
}
[/code]
Das Problem liegt meiner Meinung nach an der Funktion Tastatur.weiter(). Denn sobald die Tastatur das erste Mal gedrückt wurde hält der Pfeil an (was er ja auch soll), aber bleibt auch in seiner Ausrichtung fixiert (30° schräg nach oben).
Was habe ich falsch gemacht?
Ich hatte mir vorgenommen zum Einstieg in Java ein einfaches Dart-Spiel zu programmieren.
Zu Beginn des Spiels soll der Pfeil am linken Bildschirmran gerade herunterfallen. Wird die Tastatur einmal gedrückt, so bleibt er auf seiner aktuellen Höhe und fängt an sich zu drehen. Beim zweiten mal wird auch seine Ausrichtung fixiert.
Der betreffende Programmcode ist folgender:
[Java]public void Pfeilwurf()
{
Oberflaeche();
BST.bewegeBis(200,50);
//Fallen
for(int x = 10; x <= 500; x = x+1)
{
ZeichnePfeil(50,x);
UH.warte(50);
BST.hoch();
BST.bewegeBis(45,x-10);
BST.setzeFarbe(Farbe.WEISS);
BST.setzeFuellmuster(Muster.GEFUELLT);
BST.zeichneRechteck(40,30);
if(x == 500)
{
x = 10;
}
if(TST.wurdeGedrueckt())
{
BSTReset();
ZeichnePfeil(50,x);
TST.weiter();
break;
}
}
//Drehen
double vpd = BST.vPosition();
int vp = (int)vpd;
UH.warte(1000);
boolean beenden = false;
for(int x = 30; x >= -30; x--)
{
BST.dreheBis(x);
ZeichnePfeil(50,vp);
UH.warte(10);
BST.bewegeBis(45,vp-50);
BST.setzeFarbe(Farbe.WEISS);
BST.setzeFuellmuster(Muster.GEFUELLT);
BST.zeichneRechteck(40,100);
if(x == -30)
{
for(x = -30; x <= 30; x++)
{
BST.dreheBis(x);
ZeichnePfeil(50,vp);
UH.warte(10);
BST.bewegeBis(45,vp-50);
BST.setzeFarbe(Farbe.WEISS);
BST.setzeFuellmuster(Muster.GEFUELLT);
BST.zeichneRechteck(40,100);
if(TST.wurdeGedrueckt())
{
beenden = true;
TST.weiter();
break;
}
}
}
if(TST.wurdeGedrueckt())
{
beenden = true;
TST.weiter();
}
if(beenden = true)
{
BST.dreheBis(x);
ZeichnePfeil(50,vp);
break;
}
}
}
[/code]
Das Problem liegt meiner Meinung nach an der Funktion Tastatur.weiter(). Denn sobald die Tastatur das erste Mal gedrückt wurde hält der Pfeil an (was er ja auch soll), aber bleibt auch in seiner Ausrichtung fixiert (30° schräg nach oben).
Was habe ich falsch gemacht?
Zuletzt bearbeitet von einem Moderator: