Hi, ist meine erste Frage hier und ich hoffe dass es die richtige Kategorie ist. Auf jedenfall programmiere ich aktuell ein Videospiel (ein Space Shooter), wo ich vor kurzem programmiert habe, dass man die gegnerischen Raumschiffe abschießen kann. Dazu habe ich 2 gif Animationen hinzugefügt damit man das erkennen kann. Bei der Gif, wo der Gegner explodieren soll, klappt alles, aber die Schüsse vom Raumschiff, welches ebenfalls eine gif Animation haben, klappt es nicht und die Schüsse bleiben unsichtbar. Um euch eine Vorstellung zu geben hier ein Clip
Wie ihr auf dem Clip seht sieht man nicht wie da geschossen wird. Hab schon alles versucht hat aber nichts gebracht und ich bin am verzweifeln ._. Könnte mir also jemand sagen woran es eventuell lag?
Hier die Codes die relevant sind:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Die Klasse die für die Funktonalität der Schüsse Verantwortlich sind:
package pack1;
import java.util.Timer;
import java.util.TimerTask;
public class Cannon_Shots {
Timer shots_timer;
private int temp;
public Cannon_Shots() {
shots_timer = new Timer();
shots_timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
if (Variables.shot_status == true) {
Variables.shotY -= 7;
}
for (int i = 0; i <= 11; i++) {
if (Variables.shotX >= Variables.enemyX -25 && Variables.shotX <= Variables.enemyX + 93
&& Variables.shotY >= Variables.enemyY -90 && Variables.shotY <= Variables.enemyY + 55 ) {
Variables.got_shot = true;
Variables.shot_status = false;
Variables.shotX = Variables.screenwidth + 240;
Variables.shotY = Variables.screenheight + 240;
Variables.enemy_positionX = Variables.enemyX -10;
Variables.enemy_positionY = Variables.enemyY +50;
Variables.enemyY -= 3600;
}
}
if (Variables.shotY <= 0) {
Variables.shot_status = false;
Variables.shotX = Variables.screenwidth + 240;
Variables.shotY = Variables.screenheight + 240;
}
if (Variables.got_shot == true ) {
if (temp < 37) {
temp ++;
}
else if (temp == 37) {
Variables.got_shot = false;
Variables.gexplosion.flush();
temp = 0;
}
}
}
} , 0 , 8);
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Das Label, dass die Schüsse zeichnet:
// Cannon Shot generation
if (Variables.shot_status == true) {
graph.drawImage (Variables.gshot, Variables.shotX , Variables.shotY , 20 , 40 , null );
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Der Code der die Gif Datei lädt und paar Variabeln:
static boolean shot_status = false;
static boolean got_shot = false;
static Image gexplosion;
// Cannon shots load images
gshot = Toolkit.getDefaultToolkit().createImage("Textures/cannon_shot.gif");
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Und der Keylistener, damit man wenn man SPACE drückt schießen kann, aber glaube nicht dass es an dem liegt:
// Shot laser bolt
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
if (Variables.shot_status == false && Variables.ammo > 0) {
Variables.shot_status = true;
Variables.ammo --;
Variables.shotX = Variables.X + 27;
Variables.shotY = Variables.Y - 108;
wäre echt lieb wenn jemand helfen würde ich saß daran schon 3 Wochen und wäre echt frustrierend wenn ich jetzt nicht weiter komme
Wie ihr auf dem Clip seht sieht man nicht wie da geschossen wird. Hab schon alles versucht hat aber nichts gebracht und ich bin am verzweifeln ._. Könnte mir also jemand sagen woran es eventuell lag?
Hier die Codes die relevant sind:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Die Klasse die für die Funktonalität der Schüsse Verantwortlich sind:
package pack1;
import java.util.Timer;
import java.util.TimerTask;
public class Cannon_Shots {
Timer shots_timer;
private int temp;
public Cannon_Shots() {
shots_timer = new Timer();
shots_timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
if (Variables.shot_status == true) {
Variables.shotY -= 7;
}
for (int i = 0; i <= 11; i++) {
if (Variables.shotX >= Variables.enemyX -25 && Variables.shotX <= Variables.enemyX + 93
&& Variables.shotY >= Variables.enemyY -90 && Variables.shotY <= Variables.enemyY + 55 ) {
Variables.got_shot = true;
Variables.shot_status = false;
Variables.shotX = Variables.screenwidth + 240;
Variables.shotY = Variables.screenheight + 240;
Variables.enemy_positionX = Variables.enemyX -10;
Variables.enemy_positionY = Variables.enemyY +50;
Variables.enemyY -= 3600;
}
}
if (Variables.shotY <= 0) {
Variables.shot_status = false;
Variables.shotX = Variables.screenwidth + 240;
Variables.shotY = Variables.screenheight + 240;
}
if (Variables.got_shot == true ) {
if (temp < 37) {
temp ++;
}
else if (temp == 37) {
Variables.got_shot = false;
Variables.gexplosion.flush();
temp = 0;
}
}
}
} , 0 , 8);
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Das Label, dass die Schüsse zeichnet:
// Cannon Shot generation
if (Variables.shot_status == true) {
graph.drawImage (Variables.gshot, Variables.shotX , Variables.shotY , 20 , 40 , null );
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Der Code der die Gif Datei lädt und paar Variabeln:
static boolean shot_status = false;
static boolean got_shot = false;
static Image gexplosion;
// Cannon shots load images
gshot = Toolkit.getDefaultToolkit().createImage("Textures/cannon_shot.gif");
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Und der Keylistener, damit man wenn man SPACE drückt schießen kann, aber glaube nicht dass es an dem liegt:
// Shot laser bolt
if (e.getKeyCode() == KeyEvent.VK_SPACE) {
if (Variables.shot_status == false && Variables.ammo > 0) {
Variables.shot_status = true;
Variables.ammo --;
Variables.shotX = Variables.X + 27;
Variables.shotY = Variables.Y - 108;
wäre echt lieb wenn jemand helfen würde ich saß daran schon 3 Wochen und wäre echt frustrierend wenn ich jetzt nicht weiter komme