begin process at 2012 05 30 09:56:49
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Snake tsssssssssss aidez moiiiiiiii


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Snake tsssssssssss aidez moiiiiiiii

vendredi 20 juin 2003 à 17:46:12 | Snake tsssssssssss aidez moiiiiiiii

AmK


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 !

#include <stdio.h>
#include <econio.h>



void Affichage_Snake1();
void Affichage_Snake2();
void Affichage_Snake3();
void Affichage_Snake4();
void Avancer_Snake();

int Snake_X[80];
int Snake_Y[24];
int xs=23,ys=9;



void Affichage_Snake1() // Fonction qui va Afficher la tete du snake seulement
{
clrscr();
gotoxy(Snake_X[1],Snake_Y[1]);
printf("*");
}

void Affichage_Snake2() // Fonction qui va Afficher le reste du corp du snake !
{

gotoxy(Snake_X[2],Snake_Y[2]);
printf("#");

}

void Affichage_Snake3()
{
gotoxy(Snake_X[3],Snake_Y[3]);
printf("#");
}

void Affichage_Snake4()
{
gotoxy(Snake_X[4],Snake_Y[4]);
printf("#");
}

void Avancer_Snake() // Fonction qui va faire Avancer le Snake
{


switch(getch ())
{

case 'z':

Snake_X[1]=xs; // Le premier élément (la tete)
Snake_Y[1]=ys-1;
Affichage_Snake1();
ys=ys-1;

Snake_X[2]=Snake_X[1];//Le 2eme élément
Affichage_Snake2();

Snake_X[3]=Snake_X[2];//Le 3ème élément
Affichage_Snake3();

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
vendredi 20 juin 2003 à 18:09:09 | Re : Snake tsssssssssss aidez moiiiiiiii

JCDjcd

Qu'est qui ne marche pas ??

(pourquoi tu est oblige d'appuyer deux fois sur une touche ... he oui tu fais deux 'getch', un dans le main, et autre dans 'Avancer_Snake' ? )




-------------------------------
Réponse au message :
-------------------------------

>
> 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 !
>
> #include <stdio.h>
> #include <econio.h>
>
>
>
> void Affichage_Snake1();
> void Affichage_Snake2();
> void Affichage_Snake3();
> void Affichage_Snake4();
> void Avancer_Snake();
>
> int Snake_X[80];
> int Snake_Y[24];
> int xs=23,ys=9;
>
>
>
> void Affichage_Snake1() // Fonction qui va Afficher la tete du snake seulement
> {
> clrscr();
> gotoxy(Snake_X[1],Snake_Y[1]);
> printf("*");
> }
>
> void Affichage_Snake2() // Fonction qui va Afficher le reste du corp du snake !
> {
>
> gotoxy(Snake_X[2],Snake_Y[2]);
> printf("#");
>
> }
>
> void Affichage_Snake3()
> {
> gotoxy(Snake_X[3],Snake_Y[3]);
> printf("#");
> }
>
> void Affichage_Snake4()
> {
> gotoxy(Snake_X[4],Snake_Y[4]);
> printf("#");
> }
>
> void Avancer_Snake() // Fonction qui va faire Avancer le Snake
> {
>
>
> switch(getch ())
> {
>
> case 'z':
>
> Snake_X[1]=xs; // Le premier élément (la tete)
> Snake_Y[1]=ys-1;
> Affichage_Snake1();
> ys=ys-1;
>
> Snake_X[2]=Snake_X[1];//Le 2eme élément
> Affichage_Snake2();
>
> Snake_X[3]=Snake_X[2];//Le 3ème élément
> Affichage_Snake3();
>
> 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
>
vendredi 20 juin 2003 à 18:22:46 | Re : Snake tsssssssssss aidez moiiiiiiii

AmK

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
vendredi 20 juin 2003 à 20:05:31 | Re : Snake tsssssssssss aidez moiiiiiiii

aardman

Membre Club
Salut,
je pense que c'est ta boucle for (aussi simple soit elle) qui merde.

for(i=1;i<TAILLE_SERPENT;i++)
{
tab_X[i]=tab_X[i-1];
tab_Y[i]=tab_Y[i-1];
}

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...

for(i=TAILLE_SERPENT; i>1 ;i--)
{
tab_X[i]=tab_X[i-1];
tab_Y[i]=tab_Y[i-1];
}

dsl moi je peux pas compiler (g des probs avec gotoxy).
dis moi si ca marche.

-------------------------------
Réponse au message :
-------------------------------

>
> 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 !
>
> #include <stdio.h>
> #include <econio.h>
>
>
>
> void Affichage_Snake1();
> void Affichage_Snake2();
> void Affichage_Snake3();
> void Affichage_Snake4();
> void Avancer_Snake();
>
> int Snake_X[80];
> int Snake_Y[24];
> int xs=23,ys=9;
>
>
>
> void Affichage_Snake1() // Fonction qui va Afficher la tete du snake seulement
> {
> clrscr();
> gotoxy(Snake_X[1],Snake_Y[1]);
> printf("*");
> }
>
> void Affichage_Snake2() // Fonction qui va Afficher le reste du corp du snake !
> {
>
> gotoxy(Snake_X[2],Snake_Y[2]);
> printf("#");
>
> }
>
> void Affichage_Snake3()
> {
> gotoxy(Snake_X[3],Snake_Y[3]);
> printf("#");
> }
>
> void Affichage_Snake4()
> {
> gotoxy(Snake_X[4],Snake_Y[4]);
> printf("#");
> }
>
> void Avancer_Snake() // Fonction qui va faire Avancer le Snake
> {
>
>
> switch(getch ())
> {
>
> case 'z':
>
> Snake_X[1]=xs; // Le premier élément (la tete)
> Snake_Y[1]=ys-1;
> Affichage_Snake1();
> ys=ys-1;
>
> Snake_X[2]=Snake_X[1];//Le 2eme élément
> Affichage_Snake2();
>
> Snake_X[3]=Snake_X[2];//Le 3ème élément
> Affichage_Snake3();
>
> 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
>
vendredi 20 juin 2003 à 21:01:51 | Re : Snake tsssssssssss aidez moiiiiiiii

JediMaster

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+;)
-------------------------------
Réponse au message :
-------------------------------

>
> 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 !
>
> #include <stdio.h>
> #include <econio.h>
>
>
>
> void Affichage_Snake1();
> void Affichage_Snake2();
> void Affichage_Snake3();
> void Affichage_Snake4();
> void Avancer_Snake();
>
> int Snake_X[80];
> int Snake_Y[24];
> int xs=23,ys=9;
>
>
>
> void Affichage_Snake1() // Fonction qui va Afficher la tete du snake seulement
> {
> clrscr();
> gotoxy(Snake_X[1],Snake_Y[1]);
> printf("*");
> }
>
> void Affichage_Snake2() // Fonction qui va Afficher le reste du corp du snake !
> {
>
> gotoxy(Snake_X[2],Snake_Y[2]);
> printf("#");
>
> }
>
> void Affichage_Snake3()
> {
> gotoxy(Snake_X[3],Snake_Y[3]);
> printf("#");
> }
>
> void Affichage_Snake4()
> {
> gotoxy(Snake_X[4],Snake_Y[4]);
> printf("#");
> }
>
> void Avancer_Snake() // Fonction qui va faire Avancer le Snake
> {
>
>
> switch(getch ())
> {
>
> case 'z':
>
> Snake_X[1]=xs; // Le premier élément (la tete)
> Snake_Y[1]=ys-1;
> Affichage_Snake1();
> ys=ys-1;
>
> Snake_X[2]=Snake_X[1];//Le 2eme élément
> Affichage_Snake2();
>
> Snake_X[3]=Snake_X[2];//Le 3ème élément
> Affichage_Snake3();
>
> 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
>
vendredi 20 juin 2003 à 21:40:31 | Re : Snake tsssssssssss aidez moiiiiiiii

JCDjcd

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 ?)




-------------------------------
Réponse au message :
-------------------------------

> 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
samedi 21 juin 2003 à 12:43:04 | Re : Snake tsssssssssss aidez moiiiiiiii

AmK

hmmmm merci jedimaster et aardman et jdcjdc je crois que je vais pouvoir m'en sortir ...


Cette discussion est classée dans : int, tete, affichage, void, snake


Répondre à ce message

Sujets en rapport avec ce message

[C et Ncurses] Déplacement de curseur et Insertion de texte [ par gulix ] Dans le cadre d'un projet, je dois développer un éditeur de texte de type Vi. Pour cela, j'utilise la bibliothèque ncurses. J'arrive ainsi à gérer san Affichage 0 et 1... [ par extremOne ] Bonjour à tous, voilà je débute un peu en langage C..Je me casse un peu la tete pour réaliser le jeu de la vie de Conway! J'ai fait des tas de recherc Langage C : Puissance 4 [ par breakeur59150 ] Bonjour à tous,j'ai une ou deux question à vous poser, je suis en train de faire le jeu puissance 4 en langage c sous borland C, C'est un projet que l un pti prob ... :s help [ par meksoft002 ] Bonjour, c'est ma première participation en vue que vous pourrez resoudre mon problème ..voila...je vouderais mettre en oeuvre un tableau d'objets "pe class matrice [ par ciaonataha ] J'ai ecrit le programme classe matrice...mais j'ai les error comme:"matrice.cpp:269: error: no match for 'operator=' in 'b = matrice::Mat_decomposer(a Afficher unTriangle de Pascal en language C [ par shaqe80 ] shaqe80,s'il vous y aurait il quelqu'un de bienveillant pour m'aider à rabibocher ce programme?#include #include #define PMAX 13 Algorithme de tri en c++, mais ... [ par mohboa ] les derniers jour j'ai travail sur un projet de tri par decalage dans un tableau et j'ai reussi d'ecrir un code sans errore en dev c++  mai il ma donn aide en c/c++ gestion classe [ par moussadjijunior ] Bonjour à tous J'oses croire que vous allez tous bien et que vos familles ne manque de rien.Je viens aujourd'hui auprés de vous car j'ai u probleme av chaine de caractere [ par superstarz ] Bonjour, Je suis débutant en C++, et je seche sur un TP concernant les chaines de caractère.Les érreurs qui surviennent lors de la compilation sont le Aide, résolution d'un taquin [ par Micha1177 ] Bonjour, Dans le cadre d'un projet, je doit élaborer une grille de taquin résoluble, et pouvoir effectuer le déplacement des cases, et ensuite concev


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales