Problème d'affichage continu
Bonjour à tous amis développeurs!! :D
Dans le but de réaliser un snake, je souhaite afficher une clôture pour délimiter le terrain. A l'intérieur de ce terrain se trouve mon snake qui se balade.
Le problème est que j'affiche puis j'efface en continu. Du coup ma clôture grésille. :(
Je me demandais donc s'il n'y avait pas moyen d'éliminer ce vieil effet (par exemple en figeant la clôture et en superposant le snake) sans bibliothèque graphique.
merci
Problème d'affichage continu
Si si je t'assure que mon problème est bien résolvable en c mais je ne sais pas exactement comment. J'aimerai pouvoir superposer mes tableaux mais je ne sais pas comment faire. Pour plus de précisions voici mon code
il s'agit d'un seul tableau (pour l'instant) à deux dimensions avec une clôture en code ascii:
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 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
#include "snake.h"
int main()
{
int i;
int j;
int posit_y=19;//vertical
int posit_x=30;//horizontal
char direction='d';
char touche='f';
char tete=16;
char ring[40][60];
for (i=0; i<40; i++)
{
for (j=0; j<60; j++)
{
ring[i][j]=' ';
}
}
//clôture
for(i=1;i<59;i++)
{
ring[0][i]=-51;
ring[39][i]=-51;
}
for(j=1;j<39;j++)
{
ring[j][0]=-70;
ring[j][59]=-70;
// angles
ring[39][0]=-56;
ring[0][0]=-55;
ring[0][59]=-69;
ring[39][59]=-68;
}
while (touche!=27)// si l'utilisateur enfonce la touche echap
{
//placement
ring[posit_y][posit_x]=tete;
system("CLS");
//affichage du tableau
printf("\n\n\n\n\t");
for (i=0; i<40; i++)
{
for (j=0; j<60; j++)
{
printf ("%c",ring [i][j]);
}
printf("\n\t");
}
//effacement
ring[posit_y][posit_x]=15;
if(kbhit())
{
touche=getch();
switch(touche)
{
case 'f':
if(direction!='g')
{
direction='d';
}
break;
case 'd':
if(direction!='h')
{
direction='b';
}
break;
case 's':
if(direction!='d')
{
direction='g';
}
break;
case 'e':
if(direction!='b')
{
direction='h';
}
break;
}
}
switch(direction)
{
case 'd': // de gauche à droite
posit_x++;
tete=16;
break;
case 'b': //de haut en bas
posit_y++;
tete=31;
break;
case 'g': //de droite à gauche
posit_x--;
tete=17;
break;
case 'h': //de bas en haut
posit_y--;
tete=30;
break;
}
// réapparition de l'autre coté de l'écran
if(posit_x>58)
{
posit_x=1;
}
else if(posit_x<1)
{
posit_x=58;
}
if(posit_y>38)
{
posit_y=1;
}
else if(posit_y<1)
{
posit_y=38;
}
}
system("PAUSE");
return 0;
} |
Problème d'affichage continu
Bien merci beaucoup... j'en ai pour un petit moment, je vais méditer là dessus.