Soyez le premier à donner votre avis sur cette source.
Snippet vu 3 661 fois - Téléchargée 36 fois
//************************************************// //Le pitit Serpent v 1.0 // //************************************************// //les includes //#include <stdlib.h> //vous en aurez peut etre besoin de pour srand() et rand() #include <stdio.h> //pour printf() #include <econio.h> //setcursortype(), clrscr(), textbackground(), gotoxy() #include <time.h> //pour time() //Les defines (ex: quand le prog voit murs il le remplace par 43) #define debutx 1 #define finx 20 #define debuty 1 #define finy 20 #define murs 43 #define colorpomme 4 //les fonctions void terrain(void); void jeu(void); void menu(void); void init_vars_type1(void); void init_vars_type2(void); int aleatoire(int nbre,int valmin,int valmax); void pomme(void); void init_ecran(void); void options(void); //les variables du jeu int ecran[finx][finy] = {0}; int serpent[2][400] = {0}; int B=19; int A=0; int x=10; int y=5; char touche=NULL; int D=1; int E=0; int tete=1; int colortete=12; int corps=42; int colorcorps=14; int pommex=5; int pommey=5; int score=0; int vitesse=120; bool Directionx=1; bool Directiony=0; //variables utilisees pour la boucle for int i=0; int j=0; int colonnex=0; int ligney=0; int main() { setcursortype(NOCURSOR); //on suprime le cuseur srand((unsigned)time( NULL)); //initialisation de la fonction srand menu(); //demarage au menu return 0; } //******************************************************************/ void init_ecran(void) { for(i=0;i<finx;i++) { for(j=0;j<finy;j++) { ecran[i][j]=0; //on remplit le tableau ecran de 0 } } clrscr(); //on efface l ecran } //******************************************************************/ void init_vars_type1(void) //variables a initialiser avant chaque partie { B=19; A=0; x=10; y=5; D=1; E=0; Directionx=1; Directiony=0; pommex=5; pommey=5; score=0; } //******************************************************************/ void init_vars_type2(void) //variables de la fonction option { vitesse=120; colorcorps=14; colortete=12; corps=42; tete=1; } //******************************************************************/ void menu(void) { clrscr(); int flechey=10; //position de la fleche => textbackground(RED); gotoxy(31,1); printf("-------"); gotoxy(31,3); printf("-------"); gotoxy(31,2); printf("|"); gotoxy(37,2); printf("|"); textbackground(GREEN); gotoxy(32,2); printf("Snake"); gotoxy(50,5); printf("by Myror"); gotoxy(3,7); printf("Choisisser avec les touches '8'et'5':"); textbackground(WHITE); gotoxy(12,10); printf("Jouer"); gotoxy(12,11); printf("Regles du jeu"); gotoxy(12,12); printf("Options"); gotoxy(12,13); printf("Quitter"); while(true) { gotoxy(9,flechey); printf("=>"); touche=getch(); switch(touche) { case'5': //on descent => gotoxy(9,flechey); printf(" "); //on efface la => precedente flechey++; if(flechey==14) flechey=10; break; case'8': //on monte => gotoxy(9,flechey); printf(" "); flechey--; if(flechey==9) flechey=13; break; case 13: switch(flechey) { case 10: //on initialise avant de commencer une partie init_ecran(); terrain(); init_vars_type1(); jeu(); break; case 11: clrscr(); printf("\nLes regles du jeu pour ce serpent sont les memes que pour le serpent\n\n des portables. Le but est de saisir les pommes et autres bonus sur le terrain\n\n Les fleches de direction sont:\n\n 4->droite\n 6->gauche\n 5->bas\n 8->haut\n\n dans le jeu vous pouvez appuyer a tout moment sur 'q' pour quitter.\n\n\n\n\n\n\t\t\tveuillez saisir une touche pour retourner au menu"); getch(); menu(); break; case 12: options(); break; case 13: break; } case 'q': gotoxy(54,23); exit(1); break; } } } //******************************************************************/ void terrain(void) //on dessine les 4 mur du terrain { clrscr(); for(i=1;i<=finx;i++) { ecran[i-1][debuty-1]=0; gotoxy(i,debuty); printf("%c",murs); } for(i=1;i<=finx;i++) { ecran[i-1][finy-1]=0; gotoxy(i,finy); printf("%c",murs); } for(i=1;i<=finy;i++) { ecran[debutx-1][i-1]=0; gotoxy(debutx,i); printf("%c",murs); } for(i=1;i<=finy;i++) { ecran[finx-1][i]=0; gotoxy(finx,i); printf("%c",murs); } } //*********************************************************************/ void jeu(void) { int mouvement=0; //variable d initialistion while(true) { do { Sleep(vitesse); mouvement++; x+=D; y+=E; //Si le serpent arrive sur un bords le faire reaparaitre de l'autre cote if(x==finx) x=debutx+1; else if(x==debutx) x=finx-1; else if(y==debuty) y=finy-1; else if(y==finy) y=debuty+1; if(ecran[x][y]==1) //si le serpent se mords la queue le jeu est perdu { gotoxy(10,0); printf("perdu"); getch(); menu(); } else if(ecran[x][y]==2 || mouvement==1) //si le serpent mange une pomme ou si c est le premier mouvement { if(mouvement>1) //seulement si le serpent a mange la pomme { if(A==0) A=399; else A--; //il grandit score++; //le score augmente d un point } pomme(); //on cree une pomme } gotoxy(40,5); textbackground(LIGHTBLUE); printf("Ton score: %d",score); //on affiche le score //on affiche le serpent serpent[0][B]=x; serpent[1][B]=y; ecran[serpent[0][B]][serpent[1][B]] = 1; gotoxy(serpent[0][B],serpent[1][B]); textbackground(colortete); printf("%c",tete); gotoxy(serpent[0][B-1],serpent[1][B-1]); textbackground(colorcorps); printf("%c",corps); B++; if(B==399) B=0; ecran[serpent[0][A]][serpent[1][A]] = 0; gotoxy(serpent[0][A],serpent[1][A]); printf(" "); A++; if(A==399) A=0; }while(!kbhit()); //si une touche est pressee touche=getch(); switch(touche) { case'8': if(Directiony!=1) //Directionx et Directiony sert a ce que le joueur ne perde pas //betement en appuyant par exemple sur 'bas' alors que le serpent monte { D=0; E=-1; Directionx=0; Directiony=1; } break; case'5': if(Directiony!=1) { D=0; E=1; Directionx=0; Directiony=1; } break; case'6': if(Directionx!=1) { D=1; E=0; Directionx=1; Directiony=0; } break; case'4': if(Directionx!=1) { D=-1; E=0; Directionx=1; Directiony=0; } break; case'q': gotoxy(0,0); exit(1); } } } //***********************************************************************/ int aleatoire(int nbre,int valmin,int valmax) { valmax-=valmin; nbre=rand()%(valmax); //on met dans nbre un nombre entre 0 et valmax nbre+=valmin; return nbre; //on retourne nbre compris entre valmin et valmax } //***********************************************************************/ void pomme(void) { while(ecran[pommex][pommey]!=0) { pommex=aleatoire(pommex,debutx+1,finx-1); pommey=aleatoire(pommey,debuty+1,finy-1); } ecran[pommex][pommey]=2; //on met '2' dans le tableau ecran au coordonnees de la pomme gotoxy(pommex,pommey); textbackground(colorpomme); printf("%c",149); //on desssine la pomme } //************************************************************************/ void options(void) { int nbreplot=0; int colorplot[7]={4,15,15,15,15,15,15}; int colorniveau[10]={15,0,0,0,0,0,0,0,0,0}; clrscr(); textbackground(RED); gotoxy(31,1); printf("---------"); gotoxy(31,3); printf("---------"); gotoxy(31,2); printf("|"); gotoxy(39,2); printf("|"); textbackground(GREEN); gotoxy(32,2); printf("Options"); gotoxy(5,5); printf("'4' et '6' pour modifier"); gotoxy(5,6); printf("'8' et'5' pour passer a l'option suivante"); textbackground(WHITE); gotoxy(5,9); printf("forme de la tete:"); gotoxy(5,10); printf("forme du corps:"); gotoxy(5,11); printf("couleur de la tete:"); gotoxy(5,12); printf("couleur du corps:"); gotoxy(5,18); printf("niveau de difficulte:"); while(true) { //on dessine a l ecran toutes les options avec des variables pour la couleur et la forme //contrairement a ce que l on peut croire tout les caracterres sont dessines mais si on //les voient pas c'est qu'ils sont en noirs (par exemple pour la vitesse) textbackground(colortete); gotoxy(24,9); printf("%c",tete); textbackground(colorplot[0]); gotoxy(23,9); printf("%c",17); gotoxy(25,9); printf("%c",16); textbackground(colorcorps); gotoxy(22,10); printf("%c",corps); textbackground(colorplot[1]); gotoxy(21,10); printf("%c",17); gotoxy(23,10); printf("%c",16); textbackground(colortete); gotoxy(26,11); printf("%c",219); textbackground(colorplot[2]); gotoxy(25,11); printf("%c",17); gotoxy(27,11); printf("%c",16); textbackground(colorcorps); gotoxy(24,12); printf("%c",219); textbackground(colorplot[3]); gotoxy(23,12); printf("%c",17); gotoxy(25,12); printf("%c",16); textbackground(colorniveau[0]); gotoxy(29,18); printf("%c",220); textbackground(colorniveau[1]); gotoxy(30,18); printf("%c",219); textbackground(colorniveau[2]); gotoxy(31,18); printf("%c",219); gotoxy(31,17); printf("%c",220); textbackground(colorniveau[3]); gotoxy(32,18); printf("%c",219); gotoxy(32,17); printf("%c",219); textbackground(colorniveau[4]); gotoxy(33,18); printf("%c",219); gotoxy(33,17); printf("%c",219); gotoxy(33,16); printf("%c",220); textbackground(colorniveau[5]); gotoxy(34,18); printf("%c",219); gotoxy(34,17); printf("%c",219); gotoxy(34,16); printf("%c",219); textbackground(colorniveau[6]); gotoxy(35,18); printf("%c",219); gotoxy(35,17); printf("%c",219); gotoxy(35,16); printf("%c",219); gotoxy(35,15); printf("%c",220); textbackground(colorniveau[7]); gotoxy(36,18); printf("%c",219); gotoxy(36,17); printf("%c",219); gotoxy(36,16); printf("%c",219); gotoxy(36,15); printf("%c",219); textbackground(colorniveau[8]); gotoxy(37,18); printf("%c",219); gotoxy(37,17); printf("%c",219); gotoxy(37,16); printf("%c",219); gotoxy(37,15); printf("%c",219); gotoxy(37,14); printf("%c",220); textbackground(colorniveau[9]); gotoxy(38,18); printf("%c",219); gotoxy(38,17); printf("%c",219); gotoxy(38,16); printf("%c",219); gotoxy(38,15); printf("%c",219); gotoxy(38,14); printf("%c",219); textbackground(colorplot[4]); gotoxy(28,18); printf("%c",17); gotoxy(39,18); printf("%c",16); textbackground(colorplot[5]); gotoxy(5,20); printf("valeurs par defauts"); textbackground(colorplot[6]); gotoxy(60,23); printf("enregistrer"); touche=getch(); switch(touche) { case'5': //les plots descendent colorplot[nbreplot]=WHITE; //les plots < > precedent redevienne blanc nbreplot+=1; if(nbreplot==6+1) nbreplot=0; colorplot[nbreplot]=RED; //les plot de selections devienne rouge break; case'8': //les plots montent colorplot[nbreplot]=WHITE; nbreplot-=1; if(nbreplot==0-1) nbreplot=6; colorplot[nbreplot]=RED; break; case'6': if(nbreplot==0) { tete+=1; if(tete==7) //les caracteres 7,8,9,10,26,27,32,255 ne vont pas pour la tete tete=11; else if(tete==26) tete=28; else if(tete==32) tete=33; else if(tete==255) tete=1; break; } else if(nbreplot==1) { corps+=1; if(corps==7) //les caracteres 7,8,9,10,26,27,32,255 ne vont pas pour le corps corps=11; else if(corps==26) corps=28; else if(corps==32) corps=33; else if(corps==255) corps=1; break; } else if(nbreplot==2) { colortete+=1; //le choix de la couleur de la tete if(colortete==16) colortete=1; break; } else if(nbreplot==3) { colorcorps+=1; ////le choix de la couleur de le corps if(colorcorps==16) colorcorps=1; break; } else if(nbreplot==4) { if(vitesse>30) //le changement de couleur en fonction de la vitesse vitesse-=10; if(vitesse<=120) colorniveau[0]=WHITE; else colorniveau[0]=BLACK; if(vitesse<=110) colorniveau[1]=WHITE; else colorniveau[1]=BLACK; if(vitesse<=100) colorniveau[2]=WHITE; else colorniveau[2]=BLACK; if(vitesse<=90) colorniveau[3]=WHITE; else colorniveau[3]=BLACK; if(vitesse<=80) colorniveau[4]=YELLOW; else colorniveau[4]=BLACK; if(vitesse<=70) colorniveau[5]=YELLOW; else colorniveau[5]=BLACK; if(vitesse<=60) colorniveau[6]=YELLOW; else colorniveau[6]=BLACK; if(vitesse<=50) colorniveau[7]=LIGHTRED; else colorniveau[7]=BLACK; if(vitesse<=40) colorniveau[8]=LIGHTRED; else colorniveau[8]=BLACK; if(vitesse<=30) colorniveau[9]=RED; else colorniveau[9]=BLACK; } break; case'4': //meme chose que quand on appui sur '6' suaf dans l'autre sens if(nbreplot==0) { tete-=1; if(tete==10) tete=6; else if(tete==27) tete=25; else if(tete==32) tete=31; else if(tete==1) tete=254; break; } else if(nbreplot==1) { corps-=1; if(corps==10) corps=6; else if(corps==27) corps=25; else if(corps==32) corps=31; else if(corps==1) corps=254; break; } else if(nbreplot==2) { colortete-=1; if(colortete==0) colortete=15; break; } else if(nbreplot==3) { colorcorps-=1; if(colorcorps==0) colorcorps=15; break; } else if(nbreplot==4) { if(vitesse<120) vitesse+=10; if(vitesse>120) colorniveau[0]=BLACK; else if(vitesse>110) colorniveau[1]=BLACK; else if(vitesse>100) colorniveau[2]=BLACK; else if(vitesse>90) colorniveau[3]=BLACK; else if(vitesse>80) colorniveau[4]=BLACK; else if(vitesse>70) colorniveau[5]=BLACK; else if(vitesse>60) colorniveau[6]=BLACK; else if(vitesse>50) colorniveau[7]=BLACK; else if(vitesse>40) colorniveau[8]=BLACK; else if(vitesse>30) colorniveau[9]=BLACK; } break; case 13: if(nbreplot==5) { init_vars_type2(); if(vitesse<=120) //quand on initialise les variables la vitesse s initialise tout de suite(pas si on enleve la suite) colorniveau[0]=WHITE; else colorniveau[0]=BLACK; if(vitesse<=110) colorniveau[1]=WHITE; else colorniveau[1]=BLACK; if(vitesse<=100) colorniveau[2]=WHITE; else colorniveau[2]=BLACK; if(vitesse<=90) colorniveau[3]=WHITE; else colorniveau[3]=BLACK; if(vitesse<=80) colorniveau[4]=YELLOW; else colorniveau[4]=BLACK; if(vitesse<=70) colorniveau[5]=YELLOW; else colorniveau[5]=BLACK; if(vitesse<=60) colorniveau[6]=YELLOW; else colorniveau[6]=BLACK; if(vitesse<=50) colorniveau[7]=LIGHTRED; else colorniveau[7]=BLACK; if(vitesse<=40) colorniveau[8]=LIGHTRED; else colorniveau[8]=BLACK; if(vitesse<=30) colorniveau[9]=RED; else colorniveau[9]=BLACK; break; } else if(nbreplot==6) { menu(); } break; } } }
28 août 2003 à 14:05
Tu peux pas m'envoyer le header a adeon@9online.fr ?
Je t'en suppli! Ca fai des semaines que je cherche comment me servir de gotoxy() et je n'y arrive pas, soit sympa!
3 janv. 2003 à 17:31
Merci d'une quelque reponse...
21 déc. 2002 à 10:31
mon code c'est du C++. Je l'ai compiler avec VC 6.0. Chez moi mon code marche meme avec setcursortype(NOCURSOR);. Moi par contre j'utilise pas conio.h ou conio car il marce pas avec VC 6.0. J'utilise econio.h qui est son adaptation en ANSI.
Moi aussi je pense que les fleches serait mieux que 5 et 8 mais mon compilateur les accepte pas.
Je comprend pas pk tu veux retourner un return a la fin d'une fonction void. Parce que justement ces types de fonctions ne retourne rien(pas comme int fonction(void) qui retourne un int).
Et sinon tu le trouve bien mon piti jeu???
17 déc. 2002 à 20:13
pour se déplacer
#define ENTER 13 // touches du clavier ENTREE
#define ESC 27 // ESC
#define LEFT 75 // fleche gauche
#define RIGHT 77 // fleche droite
#define UP 72 // fleche monter
#define DOWN 80 // fleche descendre
il y a une petite erreur de syntaxe
_setcursortype(_NOCURSOR); au lieu de setcursortype(NOCURSOR);
(conio.h ou conio.c) a moins ce que ce soit particulier à ton compilateur
17 déc. 2002 à 08:44
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.