Matix snake un jeu de serpent en bgi (tourbo c++)

Soyez le premier à donner votre avis sur cette source.

Vue 5 398 fois - Téléchargée 564 fois

Description

c'est un jeu de serpent utilise la lib bgi "graphics.h"

Source / Exemple :


//------------------------------------------------------------------------//
// avant d'executer ce code source il faut dabord preparer votre          //
//compilateur borland turbo c++ V(3.0).                                   //                //
//1er etappe: changer la direction de bin a bgi et cela en clicant sur   //
//File/Change dir... ensuit remplacer la direction c:\tc\bin        //
//par c:\tc\bgi                                                           //
//2eme etappe clicker sur Option/linker choisiser librries et      //
//fonalement cocher graphics library et clicker sur ok                    //
//------------------------------------------------------------------------//

//------------------les includes----------------------------//

#include <graphics.h>
#include <dos.h>
#include <process.h>

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
//----------------------------------------------------------//

#define LIML 10
#define LIMR 630
#define LIMD 400
#define LIMU 10
#define JUMP 10

//-----------------------------------------------------------//

//--------------------les protype des fonctions--------------//
void cadre();
void initsnake();
void move();
int clash();
int snake_egs_clash();
void random_egs();
void score_grph();
void hit_score_grph();
void memo_hit_score();
void game_over();
void madeby();
void intro();
int menu();
void croche_l(int,int,int);
void croche_r(int,int,int);
void menu_lvl();
void menu_obstacl();
void init_obs();
void affich_obs();
void menu_lighblits();
//-----------------------------------------------------------//

//------------les variables globales-------------------------//

int queue;    //-------------la queue---------------//
long int score=0,hit_score=1500;
int level=4;
char *name;
int bonus;  // bonus=level*10
int obsta=0;
int lighblit=0;
//-----------------------------------------------------------//

typedef struct snake
	 {
	   int c;    //-------------les colonnes-------------//
	   int l;    //-------------les lines---------------//

	 };
snake egs,s[((LIMR-LIML)/10)*((LIMD-LIMU)/10)];//--s[((630-10)/10)*((400-10)/10)]=s[2418] / 2418 est le nb des cases--//
snake obstacl[11];

//---------l'initialisation de hit score------------//
void inithitscore()
    {

      long int h_scr_tmp=0;
     FILE *file_h_scr;

     file_h_scr=fopen("hitscore.txt","r");
     //fseek(file_h_scr,0L, SEEK_SET);
     fscanf(file_h_scr,"%ld",&h_scr_tmp);
     if(h_scr_tmp>hit_score)hit_score=h_scr_tmp;
    }

 int main(void) //---------la fonction principale----------------//
      {
//--------------------l'initialisation du systeme graphique---------//

    /* request auto detection */
   int gdriver = DETECT, gmode, errorcode;
   /* initialize graphics and local variables */

   initgraph(&gdriver, &gmode, "");

    /* read result of initialization */
     errorcode = graphresult();
     /* an error occurred */
     if (errorcode != grOk)
	 {
	  printf("Graphics error: %s\n", grapherrormsg(errorcode));
	  printf("Press any key to halt:");
	  getch();

	 exit(1);    /* terminate with an error code */
	 }
int choix;

intro();

do {
   randomize(); // Macro initialisant le g,n,rateur de nombres al,atoires.//
   cleardevice();
  choix=menu();

   if(choix==0)
     {
   score=0;
   queue=5;
   bonus=level*10;
   inithitscore();
   cadre();
   initsnake();
   move();
   game_over();
     }
    if(choix==3)menu_lvl();
    if(choix==2)menu_obstacl();
    if(choix==1)menu_lighblits();
   }
  while(choix!=4);

madeby();

return 0;
}

//--------la fonction qui desine le cadre----------//
void cadre()
     {
	  cleardevice();
	  setfillstyle(1,1);//---definir la couleur et le type des bares---//

	 bar(0,0,LIML,getmaxy());//----la line verticale a gauche--//
	 bar(0,0,getmaxx(),LIMU); //---la line horisentale en haut--//
	 bar(0,getmaxy()-10,getmaxx(),getmaxy());//--la line horisentale en bas--//
	 bar(LIMR,0,getmaxx(),getmaxy());//--la line verticale a droite
	 bar(LIML,LIMD,LIMR,LIMD+10);//--la line horisentale dans le cadre--//

      //-------griage pour l'aide-----------------//
	 //---------les lines verticaux

      for(int i=LIML;i<=LIMR;i+=JUMP)
       {
       setcolor(10);//---definr la couleur de la line---//
       line(i,LIMU,i,LIMD);

       }

	 //--------les lines horisentaux---------//
       for(i=LIMU;i<=LIMD;i+=JUMP)
       {
       setcolor(10);//---definr la couleur de la line---//
       line(LIML,i,LIMR,i);

       }
	    setcolor(14);
	    settextstyle(1, HORIZ_DIR,2);
	    /* output a message */
	    outtextxy(40, 430,"SCORE:");

	    settextstyle(1, HORIZ_DIR,2);
	    /* output a message */
	    outtextxy(400, 430,"HIT SCORE:");
	    score_grph();
	    hit_score_grph();
	   // getch();
	   // exit(1);

	  init_obs();
	  affich_obs();

     }

 //--------l'initialisation du serpent pour la 1er fois----------//
     void initsnake()
	    {

		   for(int i=queue,init=9;i>=0;i--,init++)
		    {
		    s[i].c=init;
		    s[i].l=10;
		    }

		    /*
		     setfillstyle(1,6);
		   bar((s[0].c*JUMP)+LIML+1,(s[0].l*JUMP)+LIML+1,(s[0].c*JUMP)+LIML+9,(s[0].l*JUMP)+LIML+9);

  • /
} void init_obs() { int drapo; randomize(); for(int i=0;i<obsta;i++) { do { drapo=0; obstacl[i].c=random((LIMR-LIML)/JUMP); //---random les colnnes --// obstacl[i].l=random((LIMD-LIMU)/JUMP); //--random les lines----// // for( int j=0;j<queue;j++) // { // if((obstacl[i].c==s[i].c) && (obstacl[i].l==s[i].l)) drapo=1; // } // } while(drapo==1); // } } void affich_obs() { for(int i=0;i<obsta;i++) { setfillstyle(1,4); bar((obstacl[i].c*JUMP)+LIML+1,(obstacl[i].l*JUMP)+LIML+1,(obstacl[i].c*JUMP)+LIML+9,(obstacl[i].l*JUMP)+LIML+9); } } void move() { char save=77,key; int cpt=0; //----------dessiner le serpent pour la 1er fois----------// for(int i=queue;i>=0;i--) { setfillstyle(1,6); bar((s[i].c*JUMP)+LIML+1,(s[i].l*JUMP)+LIML+1,(s[i].c*JUMP)+LIML+9,(s[i].l*JUMP)+LIML+9); } random_egs(); getch();//----une pause avant de commencer a jouer-------// do { if(kbhit())//-------si une touche a ete frapper----------// { key=getch();//----recuperer la touche tappe------// if(key==0) { key=getch(); //----on accepte la touche que si elle est eguale 8,4,6 ou 5 ----// // if((key==75)||(key==72 )||(key==80)||(key==77)) if((save==77)&&(key==75))save=77; // else{ // if((save==75)&&(key==77))save=75; // si la touche appuyer et le contraire de else{ // sens de mouvement de serpent il ne l'accepte pas if((save==72 )&&(key==80))save=72 ; // else{ // if((save==80)&&(key==72 ))save=80;// else{ // save=key; } } } } } } if(++cpt>70) { random_egs(); cpt=0; } //---------effacer le dernier caro-------------// setfillstyle(0,4); bar((s[queue].c*JUMP)+LIML+1,(s[queue].l*JUMP)+LIML+1,(s[queue].c*JUMP)+LIML+9,(s[queue].l*JUMP)+LIML+9); for(int i=queue;i>0;i--) // { // s[i].c=s[i-1].c; //------decalage------// s[i].l=s[i-1].l; // } // switch(save){ case 75 : s[0].c--;break; case 77 : s[0].c++;break; case 72 : s[0].l--;break; case 80 : s[0].l++;break; } if(lighblit==0) //// { // dans le cas ou if(s[0].c<=LIML/JUMP-2)s[0].c=LIMR/JUMP-2; // l'utilisateur n 'a else{ // pas choisi les hits if(s[0].c>=LIMR/JUMP-1)s[0].c=LIML/JUMP-1; // else{ // if(s[0].l<=LIMU/JUMP-2)s[0].l=LIMD/JUMP-2; // else{ // if(s[0].l>=LIMD/JUMP-1)s[0].l=LIMU/JUMP-1; // } //// } } } if(snake_egs_clash()==1) { random_egs(); cpt=0; score+=1*bonus; score_grph(); queue+=2; } //----------afficher la tete du snake----------// setfillstyle(1,6); bar((s[0].c*JUMP)+LIML+1,(s[0].l*JUMP)+LIML+1,(s[0].c*JUMP)+LIML+9,(s[0].l*JUMP)+LIML+9); delay(100-level*10);//---------un retard en fonction de niveau choisi-----------// } while((key!=27)&&(clash()==0)); //----- 27 c'est la touche ESC (ou ESCAPE)-----// //memo_hit_score(); } int clash() //---les collistion de snake avec le cadre ou avec la queue---------// { //--LIMU=10,LIML=10 //LIMR=630,LIMD=400 et JUMP=10 => 630/10=la case 63 pour les colonnes et 400/10=la case //40 pour les lines et les -1 c'est pour les deux bar a gauche et en haut =>la case 61 pour //les c et la case 38 pour les l--// if(lighblit==1) { if(s[0].c>=LIMR/JUMP-1 || s[0].c<LIML/JUMP-1 || s[0].l>=LIMD/JUMP-1 || s[0].l<LIMU/JUMP-1) return 1; } int i=queue; while(i>0) { if((s[i].l==s[0].l) && (s[i].c==s[0].c))//--si la tete de snake a touche une case de sa queue--// return -1; i--; } if(obsta>0) { for(int j=0;j<obsta;j++) { if((s[0].c==obstacl[j].c)&&(s[0].l==obstacl[j].l))return 1; } } return 0; //--si il n y a pas de collision--// } //------------la rencontre de snake avec l'oeuf---------------// int snake_egs_clash() { if((s[0].c==egs.c) && (s[0].l==egs.l))return 1;//--si la line et la colonne de la tete de snake sont egaux a ceux de l'oeuf--// return 0; } //-----la le repostionement aleatoirement de l'oeuf--------// void random_egs() { // randomize(); // Macro initialisant le g,n,rateur de nombres al,atoires.// int drapo; //--une variable drapeaux--// //-------------------effacer l'oeuf-------------------// setcolor(0); setfillstyle(1,0); fillellipse((egs.c*JUMP)+LIML+5,(egs.l*JUMP)+LIML+5,4,4); //--------------------------------------------------------// do { drapo=0; egs.c=random((LIMR-LIML)/JUMP); //---random les colnnes --// egs.l=random((LIMD-LIMU)/JUMP); //--random les lines----// // for(int i=0;i<queue;i++) // si la nouvel position de l'oeuf { // egale le serpent alors il met if((egs.c==s[i].c) && (egs.l==s[i].l)) // la variable drapo a 1 si non drapo=1; // il la lesse a 0 } // for(int j=0;j<obsta && drapo == 0;j++) { if((egs.c==obstacl[j].c) && (egs.l==obstacl[j].l)) drapo=1; } }while(drapo==1); // //-----------le dessin de l'oeuf---------// setcolor(13); setfillstyle(1,13); fillellipse((egs.c*JUMP)+LIML+5,(egs.l*JUMP)+LIML+5,4,4); } //--------------l'afichage du score----------// void score_grph() { char chaine_score[20]; setfillstyle(1,0); bar(110,430,220,450); ltoa(score,chaine_score,10);//-----convertir un entier long "score" a une chaine de caractere "chaine"------/ setcolor(14); settextstyle(1, HORIZ_DIR,2); /* output a message */ outtextxy(180, 430,chaine_score); //------afficher un texte en mode graphic----/ if(score>hit_score) { hit_score=score; hit_score_grph(); } } //------------l'affichage du hit score-----------// void hit_score_grph() { char chaine_h_score[20]; setfillstyle(1,0); bar(510,430,600,450); ltoa(hit_score,chaine_h_score,10);//-----convertir un entier long "score" a une chaine de caractere "chaine"------/ setcolor(14); settextstyle(1, HORIZ_DIR,2); /* output a message */ outtextxy(560, 430,chaine_h_score); //------afficher un texte en mode graphic----/ } //------------sauvegard du hit score----------// void memo_hit_score() { FILE *file_h_scr; char ch[20]; file_h_scr=fopen("hitscore.txt","w"); //-------ouvrir le fichier hitscore.txt-------// gotoxy(39,10);//-------// gets(name); fprintf(file_h_scr,"%ld",hit_score);//------imprimer le hit score sur ficher---// } //---------------come son nom l'indique--------------// void game_over() { char *gameover[]={"G","A","M","E"," ","O","V","E","R"}; char *hitscore[]={"H","I","T"," ","S","C","O","R","E"}; char *yourname[]={"e","n","t","e","r"," ","y","o","u","r"," ","n","a","m","e",":"}; char *congra[]={"c","o","n","g","r","a","t","u","l","a","t","i","o","n"," ",name}; char *lose[]={"h","a"," ","h","a"," ","h","a"," ","y","o","u"," ","l","o","s","e"}; char *try_again[]={"t","r","y"," ","a","g","a","i","n",".",".","."}; delay(100); //--------effacement lont d la grille---------// setcolor(0); for(int i=LIMU;i<=(LIMD-LIMU)/2+10;i++) { line(LIML,i,LIMR,i); line(LIML,LIMD-i+10,LIMR,LIMD-i+10); delay(15); } int j; setcolor(10); settextstyle(11,HORIZ_DIR,0); //----- affichage de game over de maniere a ce qu'il donne l'impression d'il est ecrit par un ordi-----// for(i=235,j=0;i<365;i+=15,j++) { outtextxy(i,200,gameover[j]); delay(100); } delay(100); setcolor(0); settextstyle(11,HORIZ_DIR,0); for(i=235,j=0;i<365;i+=15,j++) { outtextxy(i,200,gameover[j]); delay(100); } ///---------------------------------------------------------------// if(score>=hit_score)//-----si le joueur d'epace le hit score-------// { delay(100); setcolor(10); settextstyle(1,HORIZ_DIR,3); //-----aficher hit score en haut de l'ecrant en donnant l'impression d'il est ecrit avec un ordi---------// for(i=235,j=0;i<235+9*15;i+=15,j++) { outtextxy(i,50,hitscore[j]); delay(100); } delay(100); setcolor(10); settextstyle(2,HORIZ_DIR,4); //-----------invier le joueur a entere son nom en donnant...-------// for(i=150,j=0;i<150+16*10;i+=10,j++) { outtextxy(i,145,yourname[j]); delay(100); } memo_hit_score(); //---------------bla bla blabla bla blabla---------------------// for(i=150,j=0;i<150+16*10;i+=10,j++) { outtextxy(i,200,congra[j]); delay(100); } } else //------------si le joueur ne depace pas le hit score----------// { delay(100); setcolor(10); settextstyle(2,HORIZ_DIR,4); //---------bla blablabla bla blala-----------------------// for(i=200,j=0;i<200+17*10;i+=10,j++) { outtextxy(i,150,lose[j]); delay(100); } delay(100); //---------bla blablabla bla blala-----------------------// for(i=200,j=0;i<200+12*10;i+=10,j++) { outtextxy(i,200,try_again[j]); delay(100); } } //madeby(); } //--------affichage de qlq choses personnels------------// void madeby() { char *made[]={"m","a","d","e"," ","b","y"," ","o","u","s","m","o","<"," ","o","u","s","s","a","m","a"," ","i","n"," ","2","0","0","3","-","2","0","0","4"}; char *www[]={"f","o","x","m","j","a","y","@","y","a","h","o","o",".","f","r"}; int j; //--------effacement lont d la grille---------// setcolor(0); for( int i=LIML+100;i<=(LIMR-LIML)/2+10;i++) { line(i,LIMU,i,LIMD); line(LIMR-i+10,LIMU,LIMR-i+10,LIMD); delay(5); } setcolor(10); settextstyle(3,HORIZ_DIR,2); //--------affichage de qlq choses personnels------------// for(i=50,j=0;i<50+35*15;i+=15,j++) { outtextxy(i,200,made[j]); delay(100); } delay(100); settextstyle(3,HORIZ_DIR,1); for(i=155,j=0;i<155+16*15;i+=15,j++) { outtextxy(i,250,www[j]); delay(100); } //------------------------------------------------------// getch(); } //---------------comme son nom l'indique---------------// void intro() { char* welcome[]={"W","E","L","C","O","M","E"}; char* to[]={"T","O",":"}; char* matrix[]={"T","H","E"," ","M","A","T","R","I","X"," ","S","N","A","K","E"}; char* loading[]={"l","o","a","d","i","n","g",".",".","."}; int tabcolor[]={10,0}; delay(2000); //getch(); setcolor(10); settextstyle(12,HORIZ_DIR,1); //-------affichier "welcome" de fa?on a blabla bla bla---------// for(int i=250,j=0;(i<250+7*15);i+=15,j++) { outtextxy(i,100,welcome[j]); delay(100); } delay(100); //-------affichier "to" de fa?on a blabla bla bla---------// for( i=280,j=0;i<280+3*15;i+=15,j++) { outtextxy(i,120,to[j]); delay(100); } delay(100); //-----dessinier un rectangle au milieu de l'ecran-------------// for(i=200;i<240;i++) { setcolor(0); line(100,400-i+1,500,400-i+1); line(100,i-1,500,i-1); setcolor(4); line(100,400-i,500,400-i); line(100,i,500,i); line(100,400-i,100,i); line(500,400-i,500,i); delay(20); } //-------afficher "the matrix snake" de fa?on a ce que bla bla blabla----// setcolor(10); settextstyle(8,HORIZ_DIR,4); for(i=130,j=0;i<130+16*20;i+=20,j++) { outtextxy(i,175,matrix[j]); delay(100); } delay(10); //-----effacer "the matrix snake" de fa?on a ce que bla bla blabla bla----// setcolor(0); settextstyle(8,HORIZ_DIR,4); for(i=130,j=0;i<130+16*20;i+=20,j++) { outtextxy(i,175,matrix[j]); delay(100); } delay(10); //---------------------------------------------------------------// //afficheer et effacer "the matrix snake" de maniere successive // // en dimunion l'inteval de temps entre ces deux action. // //le vecteur tabcolor contien deux valeur:t[0]=0(c'est la couleur// //noire) et t[1]=10(c'est la couleur verte). // //rappel mathematique : X modulo Y : X % Y : le reste de la // //division de X/Y, exp1: X % 9 donnera une valeur entre // //0 et 10. exp2 : X % 2 donnera soit 0 soit 1 ==>t[0]=0 & t[1]=10// //---------------------------------------------------------------// // for(i=1;i<9;i++) // { // setcolor(tabcolor[i%2]); //</<//</<// settextstyle(8,HORIZ_DIR,4); outtextxy(130,175,"THE MATRIX SNAKE"); delay(400/i); } delay(10); //-----afficher "loading..." de fa?on a ce que bla bla blabla bla----// setcolor(10); settextstyle(12,HORIZ_DIR,1); for(i=170,j=0;i<170+10*10;i+=10,j++) { outtextxy(i,330,loading[j]); delay(100); } //---dessiner un petit rectangle en bas de l'ecran(comme une bar de telechargement---------// setcolor(1); line(170,350,400,350); line(170,360,400,360); line(170,350,170,360); line(400,350,400,360); int cpt=0; for(i=171;i<400;i++) { setcolor(6); line(i,351,i,359); delay(20); if(cpt>=10){setcolor(4);i++;line(i,351,i,359);cpt=0;} cpt++; } //getch(); } int menu() { char* play[]={"S","T","A","R","T"," ","G","A","M","E"}; char* lighbrits[]={"L","A","B","Y","R","I","N","T","H","E"}; char* obstacl[]={"O","B","S","T","A","C","L","E","S"}; char* lvl[]={"L","E","V","E","L"}; char* exit[]={"E","X","I","T"}; int j; //-------la chaine "menu" ce deplace de droit au centre de l'ecrant--// settextstyle(8,HORIZ_DIR,3); for(int i=600;i>250;i-=10) { setcolor(0); outtextxy(i+10,50,"MENU"); setcolor(1); outtextxy(i,50,"MENU"); delay(10); } //---------affichage d un recangle--------// for( i=200;i<301;i++) { setcolor(0); line(190,400-i+1,400,400-i+1); line(190,i-1,400,i-1); setcolor(4); line(190,400-i,400,400-i); line(190,i,400,i); line(190,400-i,190,i); line(400,400-i,400,i); delay(5); } //-----afficher "start game" de fa?on a ce que blabla bla bla---------// setcolor(10); settextstyle(8,HORIZ_DIR,2); for(i=225,j=0;i<225+10*15;i+=15,j++) { outtextxy(i,130,play[j]); delay(50); } //delay(100); for(i=220,j=0;i<220+11*15;i+=15,j++) { outtextxy(i,160,lighbrits[j]); delay(50); } //delay(100); //-----afficher "obstacles" de fa?on a ce que blabla bla bla---------// for(i=230,j=0;i<230+9*15;i+=15,j++) { outtextxy(i,190,obstacl[j]); delay(50); } // delay(100); //-----afficher "level" de fa?on a ce que blabla bla bla---------// for(i=260,j=0;i<260+5*15;i+=15,j++) { outtextxy(i,220,lvl[j]); delay(100); } //delay(100); //-----afficher "exit" de fa?on a ce que blabla bla bla---------// for(i=265,j=0;i<265+4*15;i+=15,j++) { outtextxy(i,250,exit[j]); delay(50); } //-----les crocher de selection viennent des 2 coter de l'ecrant vere le centre---// for(i=0;i<=200;i+=10) { croche_l(i-10,130,0); croche_r(590-i+10,130,0); croche_l(i,130,4); croche_r(590-i,130,4); delay(10); } //----------reaffichage du rectangle-----------// line(190,100,400,100); line(190,300,400,300); line(190,100,190,300); line(400,100,400,300); //---------------------------------------------// char key; int choix=0; do{ if(kbhit()) { key=getch(); croche_l(200,130+30*choix,0); croche_r(390,130+30*choix,0); switch(key) { case 72 :if(choix>0)choix--;break; case 80 :if(choix<4)choix++;break; } croche_l(200,130+30*choix,4); croche_r(390,130+30*choix,4); } }while(key!=13); return choix; } //---------- afficher des croches--------------// void croche_l(int x,int y,int c) { setcolor(c); line(x,y,x,y+30); line(x,y,x+10,y); line(x,y+30,x+10,y+30); } void croche_r(int x,int y,int c) { setcolor(c); line(x,y,x,y+30); line(x,y,x-10,y); line(x,y+30,x-10,y+30); } //----------nb d' obstacles-------------// void menu_obstacl() { char* c123[]={"0","1","2","3","4","5","6","7","8","9","10"}; int j; char key; cleardevice(); //-------la chaine "level" ce deplace de droit au centre de l'ecrant--// settextstyle(8,HORIZ_DIR,3); for(int i=600;i>230;i-=10) { setcolor(0); outtextxy(i+10,50,"OBSTACLES"); setcolor(1); outtextxy(i,50,"OBSTACLES"); delay(10); } //------afficher 0 1 2 3 4 5 6 7 8 9 10 verticalement-------// delay(100); setcolor(10); for(i=100,j=0;i<100+11*30;i+=30,j++) { outtextxy(290,i,c123[j]); delay(100); } for(i=0;i<=260;i+=10) { croche_l(i-10,100+30*obsta,0); croche_r(590-i+10,100+30*obsta,0); croche_l(i,100+30*obsta,4); croche_r(590-i,100+30*obsta,4); delay(10); } do{ if(kbhit()) { key=getch(); croche_l(260,100+30*obsta,0); croche_r(330,100+30*obsta,0); switch(key) { case 72 :if(obsta>0)obsta--;break; case 80 :if(obsta<10)obsta++;break; } croche_l(260,100+30*obsta,4); croche_r(330,100+30*obsta,4); } }while(key!=13); } void menu_lvl() { char* c123[]={"1","2","3","4","5","6","7"}; int j; char key; cleardevice(); //-------la chaine "level" ce deplace de droit au centre de l'ecrant--// settextstyle(8,HORIZ_DIR,3); for(int i=600;i>250;i-=10) { setcolor(0); outtextxy(i+10,50,"LEVEL"); setcolor(1); outtextxy(i,50,"LEVEL"); delay(10); } //------afficher 1 2 3 4 5 6 7 verticalement-------// delay(100); setcolor(10); for(i=130,j=0;i<130+7*30;i+=30,j++) { outtextxy(290,i,c123[j]); delay(100); } for(i=0;i<=260;i+=10) { croche_l(i-10,100+30*level,0); croche_r(590-i+10,100+30*level,0); croche_l(i,100+30*level,4); croche_r(590-i,100+30*level,4); delay(10); } do{ if(kbhit()) { key=getch(); croche_l(260,100+30*level,0); croche_r(330,100+30*level,0); switch(key) { case 72 :if(level>1)level--;break; case 80 :if(level<7)level++;break; } croche_l(260,100+30*level,4); croche_r(330,100+30*level,4); } }while(key!=13); } void menu_lighblits() { char* yes[]={"Y","E","S"}; char* no[]={"N","O"}; int j; char key; cleardevice(); //-------la chaine "level" ce deplace de droit au centre de l'ecrant--// settextstyle(8,HORIZ_DIR,3); for(int i=600;i>225;i-=10) { setcolor(0); outtextxy(i+10,50,"LABYRINTHE"); setcolor(1); outtextxy(i,50,"LABYRINTHE"); delay(10); } //------afficher verticalement-------// delay(100); setcolor(10); for(i=295,j=0;i<295+2*30;i+=30,j++) { outtextxy(i,150,no[j]); delay(100); } for(i=280,j=0;i<280+3*30;i+=30,j++) { outtextxy(i,180,yes[j]); delay(100); } for(i=0;i<=260;i+=10) { croche_l(i-10,150+30*lighblit,0); croche_r(630-i+10,150+30*lighblit,0); croche_l(i,150+30*lighblit,4); croche_r(630-i,150+30*lighblit,4); delay(10); } do{ if(kbhit()) { key=getch(); croche_l(260,150+30*lighblit,0); croche_r(370,150+30*lighblit,0); switch(key) { case 72 :if(lighblit>0)lighblit--;break; case 80 :if(lighblit<1)lighblit++;break; } croche_l(260,150+30*lighblit,4); croche_r(370,150+30*lighblit,4); } }while(key!=13); }

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
52
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
7 mai 2004

D'accord navec eldered !
sinon à quoi ça a servi de ziper , sdi tu dois tout mettre sur la page de presentaion
Messages postés
231
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
22 avril 2007

Salut !

J'aime assez ton jeu. Le menu est bien pensé et c'est rapide ! Par contre essaie de dispatcher ton code dans plusieur fichiers, se sera plus lisible !

++ et vive graphics.h lol !
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
3
ce qui serait bien maintenant c'est de creer un fonction menu plus general, ou tu lui donne tous les choix en argument, et elle te retoune l'article choisie... en fait il serait bien de factoriser ton code.

Heu juste un question : pourquoi faire des tableau de textes a une seul caratere ??
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
3
lorsque l'on rentre dans un mur, il y a une carre qui se colorie sur les bords, il faut tester si on a perdu avant d'afrficher, et afficher que s'il l'on a pas perdu !
sinon, tres bon jeu, avec menu sympa (il faudrait cependant qu'il soit plus rapide), et des options pas mals.

bravo !
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
9
salut, tu aurrais du mettre le code source dans le zip et ptete aussi une petite capture que l'on voit avant de telecharger a quoi ca va ressembler !!!

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.