Pour programmer un jeu de tire, la solution la plus simple ( mais pas forcement la meilleur ) est de tout le temps travailler avec des tableaux d'une manière indépendante.
C'est a dire que chaque action à l'écran (tire, ennemis, tire de l'ennemis,etc...) aura sa propre coordonner + donner d'action
L'animation de l'ennemi, tu la prédefini toi même dans en tableau, par exemple, si tu sais que ton jeu va tourner à 60fps ou 30fps, tu prédéfines des coordonnées X,Y en tenant compte que 30 ou 60 données = 1 seconde d'animation à l'écran.
Monstre1_x[10,11,12,13,14,15,16,17,18,19,20,...];
Monstre1_y[11,12,13,14,15,16,17,18,19,20,21,...];
Le tableau peut être long mais l'avantage c'est que tu peux faire bouger ton monstre comme tu veux, courbé, en diagonal, en spiral,...
Après forcement, il y a d'autre procédé plus intéressant, mais déjà comme ca, c'est un début.
Pour le tire, c'est toujours avec un tableau sauf que la, tu dois savoir dire si le tire est activé ou pas.
byte tir_max=20;
bool tir_actif[tire_max];
int tir_x[tire_max];
int tir_y[tire_max];
Des que tu bouges ton vaisseau, quand tu appuis sur un bouton, tu inscris dans une boucle que tu auras crée dans ce style là:
// activer le tire
for ( int i = 0; i < tire_max; i++)
{
if (tir_actif[z]==false) { tir_actif[z]=true; i=tir_max; } // active un tir libre et quitte la boucle
}
dès que ton tir quit l'écran tu désactives le tir_actif du tir en question.
C'est un peu brouillon mais j'éspère que cela t'aidera