cs_AmK
Messages postés368Date d'inscriptionjeudi 13 mars 2003StatutMembreDernière intervention27 janvier 2010
-
20 juin 2003 à 17:46
cs_AmK
Messages postés368Date d'inscriptionjeudi 13 mars 2003StatutMembreDernière intervention27 janvier 2010
-
21 juin 2003 à 12:43
Salut ,
Je suis en train de coder un snake et la je crois avoir bien compris le principe de l'algo mais niveau code
ça foire je sais pas pourquoi voila le principe de l'algo que je vais utiliser :
je vais faire un tableau qui contient les coordonnées X de tous les points du serpent et un autre pour les coordonnées Y en partant de la tete du serpent jusqu'a la queue.
pour ce qui est du mouvement on bouge seulement la tete( la premiere case des deux tableaux) puis il faut partir de la deuxieme case jusqu'a la derniere et lui attribuer la précedente (une boucle for suffit)
ca donne qqch comme ca:
int i;
for(i=1;i<TAILLE_SERPENT;i++)
{
tab_X[i]=tab_X[i-1];
tab_Y[i]=tab_Y[i-1];
}
voila donc mais niveau code j'ai essayé mais ça bug !
Snake_X[4]=Snake_X[3];//Le 4ème élément
Affichage_Snake4();
// Affichage2 Affichage3 Affichage4 seront traités grace à une boucle for !
// Ici c'est juste pour comprendre le principe ...
break;
}
}
int main()
{
do
{
Avancer_Snake();
}
while(getch()!='p');
}
//FIN
je vous rassure les fonctions affichage serpent 2 3 4 je les ferai a l'aide d'une boucle enfin ..là c'est juste pour comprendre qu'est ce qui foire ...??
Si quelqu'un pourrait m'aider ça serait cool :) ..
Merci
cs_AmK
Messages postés368Date d'inscriptionjeudi 13 mars 2003StatutMembreDernière intervention27 janvier 20101 20 juin 2003 à 18:22
oui en effet pour ce qui concerne le fait que l'on est obligé de taper 2 fois mais ça c'est pas un problème c'est facile à arranger mon problème c'est que quand je compile le résultat n'est pas le résultat que j'avais souhaité parceque ça m'affiche 1 et etoile a la position 23 9 et un dieze a la position 23 1 !! alors que j'aurai espéré 4 etoiles l'une devant l'autre et que à mesure que l'on avance en haut ben ça fait l'effet d'un snake parceque je suis sur que mon algo est juste l'erreur se trouve dans le code ... compile et tu verras
Elle copie la valeur de tab_X[0] dans tab_X[1], la valeur de tab_X[1] dans tab_X[2] et ainsi de suite.
L'algo est bon, il faut decaler les coordonnées des points du corp du serpent d'un rang. Mais si tu pars de la tete.. ben elles auront toutes les meme coordonnées.
Si tu pars de la queue par contre, toutes les coordonnées seront bien décallées d'un rang...
cs_JediMaster
Messages postés91Date d'inscriptionlundi 19 mai 2003StatutMembreDernière intervention31 août 2004 20 juin 2003 à 21:01
salut
d'abors je crois que tu devrais écouter aardman ;)
en fait il te dit que tas boucle n'est pas dans le bon sens regarde:
for(i=1;i<TAILLE_SERPENT;i++)
{
tab_X[i]=tab_X[i-1];
tab_Y[i]=tab_Y[i-1];
}
donc
tab_X[1]=tab_X[1-1]; // 1-1=0
donc tab_X[1]=tab_X[0] //ok!
tab_X[2]=tab_X[1]; //et la regarde tab_X[1]=tab_X[0] donc tab_X[2]=tab_X[0] et ainsi de suite!!
bon ben j'ai bcq détaillé et donc je pense que t'as compris(je me trompe pas, j'en étais sur j'explique trop bien lol)
et sinon au lieu de faire:
int i;
for(i=1;i<TAILLE_SERPENT;i++)
{
tab_X[i]=tab_X[i-1];
tab_Y[i]=tab_Y[i-1];
}
fait(le int i)
for(int i=1;i<TAILLE_SERPENT;i++){
tab_X[i]=tab_X[i-1];
tab_Y[i]=tab_Y[i-1];
}
non seulement c'est plus prope mais t'a variable(locale) disparait apres la boucle (normal t'en a plus besoin)
enfin chais pas peu etre que tu la fait expres(je dis ca comme ca)
et aussi si t'as besoin d'aide j'avais fait un serpent a une epoque sous le nom de myror(facile ya qu'1 source)
et aussi j'avais decouvert a cette epoque que sous DOS si tu t'approche trop des bord ca bug.
et aussi(mon jour de bonté aujourd'hui) j'ai vu que tu voulais savoir comment mettre une icone perso une api. je sais faire que sous window(directX ou pas) quand crée la classe de la fenetre tu met:
wndClass.hIcon = LoadIcon( hInst, MAKEINTRESOURCE(IDI_NOMICON) );
je te donne pour le curseur pareil au lieu de IDC_ARROW(classique) tu met MAKEINTRESOURCE(IDI_NOMCURSEUR).
wndClass.hCursor = LoadCursor( NULL, IDC_ARROW );
par contre il faut les crée dans les ressouces de VC++
bon ben j'espere que ca t'aidera( ben dis donc j'avais besoin de parler!) ca m'autra fait bien plasir entout cas
sita une question n'esite pas
A+;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_JCDjcd
Messages postés1138Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention25 janvier 20094 20 juin 2003 à 21:40
Tu pourrais me passer tout le code, car ce que j'ai, moi ca marche pas, mais c'est logique.
Ca afficher "*###"
C'est normal puisque l'on demande d'afficher
"Afficher_Snake1"
"Afficher_Snake2"
"Afficher_Snake3"
"Afficher_Snake4"
Donc moi je ne vois pas ou est le probleme !
(pourquoi le tableau des Y n'est pas initialiser ?)