Hi,
Wir sollen als Hausarbeit in "Strukturiertes Problemlösen" mit Java ein kleines Spiel programmieren.
Ich habe vor ein trashiges "Jump'n'Run"-Game zu machen. Nun bin ich bei dessen Visualisierung
auf ein kleines Problem gestoßen. Ich möchte nach der Betätigung der "W"-Taste einen Sprung darstellen lassen. Mit dem KeyListener funktioniert soweit alles. Es dreht sich wie gesagt nur um die Visualisierung. In Echtzeit wird der Sprung logischerweiße viel zu schnell berechnet und gezeichnet. Somit sieht man nur eine Verschiebung des Bildes auf der X-Achse.
Nun habe ich folgendermaßen versucht das ganze etwas zu verlangsamen, um die Sprungparabel sichtbar zu machen:
public void keyTyped(KeyEvent k)
{
//Variablen
char cKEY = k.getKeyChar();
int i = 0;
int in = 0;
long lTime = 0;
//Delay-Timer
Date timer = new Date();
switch(cKEY)
{
case 'W':
case 'w': if(this.iY != 0)
{
while(i < 50)
{
lTime = timer.getTime();
if( i < 25)
{
this.iY = this.iY + 1;
}
else
{
this.iY = this.iY - 1;
}
this.iX = this.iX + 1;
Bild.setBounds(iX,iY,401,600);
while(true)
{
long lTime2 = timer.getTime();
if(lTime2 == (lTime+50))
{
i++;
break;
}
}
}
i = 0;
}
break;
}
}
Nur ist danach die Applikation nicht mehr ansprechbar und ich muss sie terminieren.
Kann mir jemand diesen "Freeze" und die Umgehung dieses erklären und/oder mir einen anderen Lösungsvorschlag geben?.
Vielen Dank im Vorraus!
MfG headaxX
Wir sollen als Hausarbeit in "Strukturiertes Problemlösen" mit Java ein kleines Spiel programmieren.
Ich habe vor ein trashiges "Jump'n'Run"-Game zu machen. Nun bin ich bei dessen Visualisierung
auf ein kleines Problem gestoßen. Ich möchte nach der Betätigung der "W"-Taste einen Sprung darstellen lassen. Mit dem KeyListener funktioniert soweit alles. Es dreht sich wie gesagt nur um die Visualisierung. In Echtzeit wird der Sprung logischerweiße viel zu schnell berechnet und gezeichnet. Somit sieht man nur eine Verschiebung des Bildes auf der X-Achse.
Nun habe ich folgendermaßen versucht das ganze etwas zu verlangsamen, um die Sprungparabel sichtbar zu machen:
public void keyTyped(KeyEvent k)
{
//Variablen
char cKEY = k.getKeyChar();
int i = 0;
int in = 0;
long lTime = 0;
//Delay-Timer
Date timer = new Date();
switch(cKEY)
{
case 'W':
case 'w': if(this.iY != 0)
{
while(i < 50)
{
lTime = timer.getTime();
if( i < 25)
{
this.iY = this.iY + 1;
}
else
{
this.iY = this.iY - 1;
}
this.iX = this.iX + 1;
Bild.setBounds(iX,iY,401,600);
while(true)
{
long lTime2 = timer.getTime();
if(lTime2 == (lTime+50))
{
i++;
break;
}
}
}
i = 0;
}
break;
}
}
Nur ist danach die Applikation nicht mehr ansprechbar und ich muss sie terminieren.
Kann mir jemand diesen "Freeze" und die Umgehung dieses erklären und/oder mir einen anderen Lösungsvorschlag geben?.
Vielen Dank im Vorraus!
MfG headaxX