Déplacement d'un caractère
Bonjour,
Je fais un petit jeu en c mais je n'arrive pas à afficher un tir.
Je veux tirer, voir le déplacement du tir puis le réinitialiser.
Pour l'instant quand je tir, je crois que c'est tout de suite réinitialiser ou du moins, je ne vois pas le déplacement.
voici mon code :
pour l'affichage du terrain
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
void afficheTerain(WINDOW *win, Jeu *jeu)
{
int i,j;
wclear(win);
//on prend un vaisseau joueur
VaisseauJoueur *V = jeuGetVaissJ(jeu);
//on prend le terrain
Terrain *ter = jeuGetTerrain(jeu);
//on prend le tir
TirJoueur *TJ = jeuGetTirJ(jeu);
//affichage du terrain
for(i=0;i < ter->dimy ;i++)
{
for(j=0;j<ter->dimx ;j++)
{
mvwprintw(win,i,j,"%c",ter->tab[i][j]);
}
}
//on affiche un vaisseau joueur sur le terrain
mvwprintw( win, V->y, V->x, V->image);
//on affiche le tir devant le vaisseau, c'est son point de départ
mvwprintw( win, TJ->x, TJ->y, TJ->imageTir);
} |
pour ma boucle:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
void ncursBoucle(Jeu *jeu)
{
WINDOW *win;
int c;
int i, j;
int continue_boucle;
clock_t temps_actu, temps_prec=0;
initscr();
clear();
noecho();
cbreak();
win = newwin( 12, 70, 10, 5 );
keypad(win, TRUE);
halfdelay( 1 );
continue_boucle = 1;
do
{
afficheTerain(win , jeu);
c = wgetch(win);
//déplacement du vaisseau joueur
switch(c)
{
case KEY_LEFT:
jeu->jvaissJ.x-=2;
jeu->jtirJ.y-=2;
break;
case KEY_RIGHT:
jeu->jvaissJ.x+=2;
jeu->jtirJ.y+=2;
break;
case KEY_UP:
jeu->jvaissJ.y-=2;
jeu->jtirJ.x-=2;
break;
case KEY_DOWN:
jeu->jvaissJ.y++;
jeu->jtirJ.x++;
break;
case 32: /* ESPACE */
for(i=jeu->jtirJ.y; i<jeu->jter.dimx; i++)
{
jeu->jtirJ.y++;
}
//on réinitialise le tir
initTir( &(jeu->jtirJ), &(jeu->jvaissJ), &(jeu->jter));
break;
case 27: /* ECHAP */
continue_boucle = 0;
break;
}
} while (continue_boucle==1);
endwin();
} |
Si vous avez une idée de comment je pourrais faire, je suis preneur.
merci d'avance pour votre aide.