Un jeu genre pong [dev-c++]

Soyez le premier à donner votre avis sur cette source.

Vue 5 648 fois - Téléchargée 452 fois

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

Ajouter un commentaire

Commentaires

mastave
Messages postés
53
Date d'inscription
samedi 24 novembre 2001
Statut
Membre
Dernière intervention
25 janvier 2003
-
punaise, mais décidément t'es trop un boss!
T'es un pro du mode texte!
BrizBout
Messages postés
1
Date d'inscription
vendredi 20 octobre 2000
Statut
Membre
Dernière intervention
4 septembre 2002
-
conio.c ?
TheLudo2013
Messages postés
77
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
18 octobre 2007
-
Du jamais vu ! Tu pourra pas dire que tu l'as pas cheché : Un pong en mode texte... Il y en a vraiment qui devrait rester au lit le matin !!!! Même en gdi ca clignoterais pas autant !!! Pourquoi faire beau quand on peut faire moche !!! DirectDraw ca a pas été inventé pour les... En plus ton prog il rame ! LOL c'est un comble !!!!!
mnjagg
Messages postés
34
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
5 mai 2004
-
C TRO GENIAL !!!! Mé kommen ta fé pr ce ca klignot si peu ? packe chui entrain de faire un mini-pong mé i clignot à donf !

Qqn peu m'aider ?

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.