Un jeu genre pong [dev-c++]

Description

voila un petit jeu dans le genre de pong, ou vous etes mort des que le temps est ecoule, et le temps augmente quand vous avez plus de points que l'ennemi et diminue quand vous en avez moins

Source / Exemple :


#include <stdio.h>
#include <conio.c>

#define    GAUCHE      75
#define    DROITE      77
#define    HAUT        72
#define    BAS         80
#define    ENTER       13
#define    ESCAPE      27
#define    JAUNE       14
#define    ROUGE       12
#define    VERT        10
#define    BLANC       15
#define    SORTIE       0
#define    NORMAL       1
#define    MENU         2

int hasard();

typedef struct
{
  int X;
  int Y;
  int A;
  int B;
} POS;

void main()
{
  POS   balle;
  int   increment;
  int   increment2;
  int   divers;
  int   joueur;
  int   compteur;
  int   ennemi;
  int   points;
  int   points2;
  int   direction;
  int   action=MENU;
  char  touche;

  while (action!=SORTIE)
  {
    if (action==MENU)
    {
      clrscr();
      gotoxy(1,1);
      textcolor(ROUGE);
      printf("\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\n");
      textcolor(JAUNE);
      printf("---PONG---\n");
      textcolor(ROUGE);
      printf("\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\n");
      textcolor(VERT);
      printf("\nLe but du jeu est d'essayer de faire passer la balle\n");
      printf("dans le camp ennemi et d'empecher l'ennemi d'envoyer la balle\n");
      printf("dans votre camp.\n");
      printf("A chaque fois que vous faites passer la balle dans le camp ennemi,\n");
      printf("vous gagnez 100 points, et tant que vous avez un nombre de points \n");
      printf("plus haut que l'ennemi le temps augmente, et quand vous avez \n");
      printf("moins de points que l'ennemi le temps diminue.\n");
      printf("Si le temps est completement \x82 \bcoul\x82 vous avez perdu.");
      getch();
      /*REINITIALISE TOUT*/
      clrscr();
      balle.X=3;
      balle.Y=3;
      joueur=1;
      ennemi=1;
      divers=1;
      compteur=0;
      points=0;
      points2=0;
      direction=7;
      gotoxy(1,24);
      textcolor(ROUGE);
      printf("\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4");
      printf("\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC2\xC4");
      printf("\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4");
      printf("\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4");
      printf("\xC4\xC4\xC4\xC4\xC4\xC4\xC2\xC4\xC4\xC4");
      printf("\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4");
      printf("\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4");
      printf("\xC4\xC2\xC4\xC4\xC4\xC4\xC4\xC4\xC4\xC4");
      action=NORMAL;
    }
    /*DESSINE LA BALLE*/
    gotoxy(balle.X,balle.Y);
    textcolor(VERT);
    printf("\x0F");
    /*EFFACE L'ANCIENNE POSITION DE LA BALLE*/
    gotoxy(balle.A,balle.B);
    printf(" ");
    balle.A=balle.X;
    balle.B=balle.Y;
    /*SI TOUCHE LE MUR GAUCHE OU DROIT*/
    if ((balle.X==80)||(balle.X==1))
    {
      switch (direction)
      {
        case 1:  direction=4;
                 divers=4;
                 break;
        case 2:  direction=3;
                 divers=4;
                 break;
        case 3:  direction=2;
                 divers=4;
                 break;
        case 4:  direction=1;
                 divers=4;
                 break;
        case 5:  direction=11;
                 divers=0;
                 break;
        case 6:  direction=12;
                 divers=0;
                 break;
        case 7:  direction=9;
                 divers=0;
                 break;
        case 8:  direction=10;
                 divers=0;
                 break;
        case 9:  direction=7;
                 divers=0;
                 break;
        case 10: direction=8;
                 divers=0;
                 break;
        case 11: direction=5;
                 divers=0;
                 break;
        case 12: direction=6;
                 divers=0;
                 break;
      }
    }
    /*SI TOUCHE LE MUR BAS OU HAUT*/
    if (balle.Y==1)
    {
      printf("\a");
      points=points+100;
      direction=7;
      balle.X=3;
      balle.Y=3;
    }
    if (balle.Y==23)
    {
      printf("\a");
      points2=points2+100;
      direction=7;
      balle.X=3;
      balle.Y=3;
    }
    if ((balle.Y==21)&&((balle.X==joueur)||(balle.X==joueur+1)||(balle.X==joueur+6)||(balle.X==joueur+7)))
    {
      switch (direction)
      {
        case 2:
        case 7:  direction=5;
                 divers=0;
                 points++;
                 break;
        case 8:  direction=6;
                 divers=0;
                 points++;
                 break;
        case 3:
        case 10: direction=12;
                 divers=0;
                 points++;
                 break;
        case 9:  direction=11;
                 divers=0;
                 points++;
                 break;
      }
    }
    if ((balle.Y==21)&&((balle.X==joueur+2)||(balle.X==joueur+3)||(balle.X==joueur+4)||(balle.X==joueur+5)))
    {
      switch (direction)
      {
        case 2:
        case 7:
        case 8:  direction=1;
                 divers=4;
                 points=points+5;
                 break;
        case 3:
        case 9:
        case 10: direction=4;
                 divers=4;
                 points=points+5;
                 break;
      }
    }
    if ((balle.Y==3)&&((balle.X==ennemi)||(balle.X==ennemi+1)||(balle.X==ennemi+6)||(balle.X==ennemi+7)))
    {
      switch (direction)
      {
        case 1:
        case 6:  direction=8;
                 divers=0;
                 points2++;
                 break;
        case 5:  direction=7;
                 divers=0;
                 points++;
                 break;
        case 4:
        case 11: direction=9;
                 divers=0;
                 points2++;
                 break;
        case 12: direction=10;
                 divers=0;
                 points2++;
                 break;
      }
    }
    if ((balle.Y==3)&&((balle.X==ennemi+2)||(balle.X==ennemi+3)||(balle.X==ennemi+4)||(balle.X==ennemi+5)))
    {
      switch (direction)
      {
        case 1:
        case 5:
        case 6:  direction=2;
                 divers=4;
                 points2=points2+5;
                 break;
        case 4:
        case 11:
        case 12: direction=3;
                 divers=4;
                 points2=points2+5;
                 break;
      }
    }
    /*CHANGE LA POSITION DE LA BALLE*/
    switch (direction)
    {
      case 1:  balle.X++;
               balle.Y--;
               break;
      case 2:  balle.X++;
               balle.Y++;
               break;
      case 3:  balle.X--;
               balle.Y++;
               break;
      case 4:  balle.X--;
               balle.Y--;
               break;
      case 5:  if (divers==0)
               {
                 balle.X++;
                 balle.Y--;
               }
               else if (divers<3) balle.Y--;
               break;
      case 6:  if (divers==0)
               {
                 balle.X++;
                 balle.Y--;
               }
               else if (divers<3) balle.X++;
               break;
      case 7:  if (divers==0)
               {
                 balle.X++;
                 balle.Y++;
               }
               else if (divers<3) balle.X++;
               break;
      case 8:  if (divers==0)
               {
                 balle.X++;
                 balle.Y++;
               }
               else if (divers<3) balle.Y++;
               break;
      case 9:  if (divers==0)
               {
                 balle.X--;
                 balle.Y++;
               }
               else if (divers<3) balle.Y++;
               break;
      case 10: if (divers==0)
               {
                 balle.X--;
                 balle.Y++;
               }
               else if (divers<3) balle.X--;
               break;
      case 11: if (divers==0)
               {
                 balle.X--;
                 balle.Y--;
               }
               else if (divers<3) balle.X--;
               break;
      case 12: if (divers==0)
               {
                 balle.X--;
                 balle.Y--;
               }
               else if (divers<3) balle.Y--;
               break;
    }
    /*DESSINE LA RAQUETTE DU JOUEUR*/
    gotoxy(1,21);
    for (increment=1 ; increment<=80 ; increment++) printf(" ");
    textcolor(JAUNE);
    if (joueur==1)
    {
      gotoxy(1,21);
      printf("\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB");
    }
    else
    {
      if (joueur==73)
      {
        gotoxy(73,21);
        printf("\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB");
      }
      else
      {
        gotoxy(joueur,21);
        printf("\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB");
      }
    }
    /*DESSINE LA RAQUETTE ENNEMIE*/
    gotoxy(1,3);
    for (increment=1 ; increment<=80 ; increment++) printf(" ");
    textcolor(JAUNE);
    if (ennemi==1)
    {
      gotoxy(1,3);
      printf("\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB");
    }
    else
    {
      if (ennemi==73)
      {
        gotoxy(73,3);
        printf("\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB");
      }
      else
      {
        gotoxy(ennemi,3);
        printf("\xDB\xDB\xDB\xDB\xDB\xDB\xDB\xDB");
      }
    }
    if (((balle.X<ennemi+3)&&(balle.X<ennemi-hasard()))&&(ennemi>4)) ennemi=ennemi-3;
    else if (((balle.X>ennemi+3)&&(balle.X>ennemi+hasard()))&&(ennemi<71)) ennemi=ennemi+3;

    while (kbhit())
    {
      touche=getch();
      switch (touche)
      {
        case GAUCHE:  joueur=joueur-3;
                      if (joueur<1) joueur=1;
                      break;
        case DROITE:  joueur=joueur+3;
                      if (joueur>73) joueur=73;
                      break;
        case ENTER:   gotoxy(74,25);
                      textcolor(BLANC);
                      printf("PAUSE");
                      touche=0;
                      while (touche!=ENTER) touche=getch();
                      gotoxy(74,25);
                      printf("     ");
                      break;
        case ESCAPE:  action=SORTIE;
                      break;
      }
    }
    sleep(35);
    if (direction>4) divers++;
    else divers=0;
    if (divers==3) divers=0;
    gotoxy(1,25);
    textcolor(BLANC);
    printf(" points : %6d  ",points);
    textcolor(ROUGE);
    printf("\xB3");
    textcolor(BLANC);
    printf("  points ennemis : %6d  ",points2);
    textcolor(ROUGE);
    printf("\xB3");
    textcolor(BLANC);
    printf("  temps restant : %6d",compteur);
    textcolor(ROUGE);
    printf("\xB3");
    if (points2>points) compteur--;
    else compteur++;
    if (compteur<0)
    {
      gotoxy(30,8);
      textcolor(ROUGE);
      printf("---GAME OVER---");
      textcolor(JAUNE);
      gotoxy(30,9);
      printf("Score : %7d");
      gotoxy(20,10);
      printf("Appuyez sur enter pour continuer");
      do
      {
        touche=getch();
      } while (touche!=ENTER);
      action=MENU;
    }
  }
}

int hasard()
{
  srand(time(NULL));
  return (rand() % 5);
}

Conclusion :


voila c tout je nai pas trouve de bug, l' "intelligence" artificielle n'est pas fantastique c'est tout

Codes Sources

A voir également

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.