Eat game - affrontez vos amis

Description

Un petit jeu qui consiste à manger le plus vite que possible des chiffres avant son adversaire.
Il y a 2 joueurs et chacun peut utiliser une attaque qui bloc pendant 5s les mouvements de l'ennemi.
Une partie dure 2 m.

Source / Exemple :


_____________________________________

Main.ccp
_____________________________________

#include <iostream>
#include <time.h>
#include <windows.h>
#include "include/Map.h"
#include "include/Perso.h"
#include "include/Perso_2.h"

using namespace std;

int main()
{

   //Présentation
    cout << "Hello world!" << endl;
    cout<<"Bienvenue Dans Eat GAME !!!! "<<endl<<"Manger les 1 et ton score augmentera"<<endl<< "Manger les 8 et tu pourras blocker ton adversaire pendant 5 seconde !"<<endl;
    cout<<"Le joueur Y utilise les touches directionnelles pour se deplacer"<<endl<<" et la barre d'espace pour attaquer !!"<<endl;
    cout<<"Le joueur X utilise Z, S, Q, D pour se deplacer et A pour attaquer !!!"<<endl;
   system("PAUSE");
   //variable pour l'ajouter objet chaque 5s
   long seconde1970(0);
   //le temps de jeu
   long secjeu(0);
    Map RPG;
    Perso Y('Y',10,10);
    Perso_2 X('X',11,11);
    //ajouter perso dans le tableau dans l'objet rpg de type map
   X.AjouterPerso(RPG);
   Y.AjouterPerso(RPG);

//afficher la map
RPG.Afficher();
//le temps a comparer pour ajouter des objet
seconde1970=time(NULL);
//le temps a comparer pour sortir du while donc fin du jeu
secjeu=time(NULL);
while (true)
{
//après 5 secondes on ajoute un 1 ou un 8 dans le tableau
   if ((seconde1970+5)==time(NULL))
   {
      RPG.AjouterObjet();
      seconde1970=time(NULL);
   }
//deplacer dans la map les 2 perso ,le paramètre de droite est le perso a attaquer
   X.Deplacer(RPG,Y);
   Y.Deplacer(RPG,X);
   //après 2m de jeu on fini le jeu et on sort de la boucle
if ((secjeu+120)==time(NULL))
{
   system("cls");
    break;
}
}
//
if (X.GetScore()<Y.GetScore())
cout<<"Bravo Y tu as gagne !!!!!  !!!! !!!!"<<endl;
else if (X.GetScore()>Y.GetScore())
cout<<"Bravo X tu as gagne !!!!!  !!!! !!!!"<<endl;
else
cout<<"Egalite !!!!!  !!!! !!!!"<<endl;
Sleep(4000);
cout<<"FFFFFFFF"<<endl;
cout<<"FFFFFFFF"<<endl;
cout<<"FFFF"<<endl;
cout<<"FFFFFFFF"<<endl;
cout<<"FFFFFFFF"<<endl;
cout<<"FFFF"<<endl;
cout<<"FFFF"<<endl;
cout<<"FFFF"<<endl;

Sleep(500);
system("cls");
cout<<"FFFFFFFF    IIIIII"<<endl;
cout<<"FFFFFFFF    IIIIII"<<endl;
cout<<"FFFF         IIII"<<endl;
cout<<"FFFFFFFF     IIII"<<endl;
cout<<"FFFFFFFF     IIII"<<endl;
cout<<"FFFF         IIII"<<endl;
cout<<"FFFF        IIIIII"<<endl;
cout<<"FFFF        IIIIII"<<endl;

Sleep(500);
system("cls");
cout<<"FFFFFFFF    IIIIII    NNNNN       NNNN"<<endl;
cout<<"FFFFFFFF    IIIIII    NNNNNN      NNNN"<<endl;
cout<<"FFFF         IIII     NNNNNNN     NNNN"<<endl;
cout<<"FFFFFFFF     IIII     NNNN NNN    NNNN"<<endl;
cout<<"FFFFFFFF     IIII     NNNN  NNN   NNNN"<<endl;
cout<<"FFFF         IIII     NNNN   NNN  NNNN"<<endl;
cout<<"FFFF        IIIIII    NNNN    NNNNNNNN"<<endl;
cout<<"FFFF        IIIIII    NNNN     NNNNNNN"<<endl;
Sleep(5000);
system("PAUSE");
   return 0;
}

_____________________________________

Perso.h
_____________________________________

#ifndef PERSO_H
#define PERSO_H
#define lol 20
#include <windows.h>
#include <winuser.h>
#include "Map.h"

class Perso
{
    public:
        Perso();
        Perso(char nom,int X=0,int Y=0);
        //retourner abscisse
        int GetX();
        //retourner ordonnée
        int GetY();
        //retourner la lettre qui correspond a son nom
        char GetNom();
        //Afficher l'etat du perso ,m_actif = il peut ce déplacer ou pas
        bool Getactif();
        //afficher score
        int GetScore();
        //retourner la valeur de m_attaque
        bool Getattaque();
        //Mofifier l'etat , blocker ou en mouvement
       void Setactif(bool valeur);
       //Ajouter un perso dans la map
         void AjouterPerso(Map &A);
         //deplacer un perso dans le tableau
      int Deplacer(Map &A,Perso &X);
      //super attaque elle block le perso adverse
      void Attaquer(Perso &A);

        virtual ~Perso();
    protected:
    int m_X;
    int m_Y;
    char m_nom;
    bool m_actif;
    bool m_attaque;
    int m_score;
    long m_tempB;

        private:

};
//pour afficher en bas de la map le nom le score et l'attaque
void EtatPerso(Perso &A,Perso &B);
#endif // PERSO_H

_____________________________________

Perso.ccp
_____________________________________

#include "../include/Perso.h"

using namespace std;
Perso::Perso():m_nom('X'),m_X(0),m_Y(0),m_actif(true),m_attaque(false),m_score(0),m_tempB(0)
{

}
Perso::Perso(char nom,int X,int Y):m_nom(nom),m_X(X),m_Y(Y),m_actif(true),m_attaque(false),m_score(0),m_tempB(0)
{

}
int Perso::GetX()
{
    return m_X;
}
int Perso::GetY()
{
    return m_Y;
}
char Perso::GetNom()
{
    return m_nom;
}
bool Perso::Getactif()
{
    return m_actif;
}
int Perso::GetScore()
{
    return m_score;
}
bool Perso::Getattaque()
{
    return m_attaque;
}
void Perso::Setactif(bool valeur)
{
    m_actif=valeur;
}
 void Perso::AjouterPerso(Map &A)
 {
   A.SetTerrain(m_nom,m_X,m_Y);

 }
int Perso::Deplacer(Map &A,Perso &X)
{
    //si m_actif n'est pas = a true alors il peut pas bouger
    if (m_actif==true)
    {
    if (GetAsyncKeyState(VK_UP))
    {
        //si la case en haut du perso = a un . alors on echange les 2 objet (. et perso) on affiche la map et l'etat du perso (nom,score,et attaque)
        if (A.GetTerrain(m_X-1,m_Y)=='.')
        {
        A.Echange(m_X,m_Y,m_X--,m_Y);
       A.Afficher();
       EtatPerso(*this,X);
        }
       //si la case en haut du perso = a un 1 alors on modifie la case 1 en un . on ajoute 1 au score et afficher l'etat
        else if (A.GetTerrain(m_X-1,m_Y)=='1')
        {
            A.SetTerrain('.',m_X-1,m_Y);
        m_score++;
        A.Afficher();
        EtatPerso(*this,X);
        }
        //si la case en haut du perso = a un 8 alors on modifie la case 8 en un . on ajoute 1 au score ,on modifie la variable attaque et on afficher l'etat
        else if (A.GetTerrain(m_X-1,m_Y)=='8')
        {
            A.SetTerrain('.',m_X-1,m_Y);
            m_score++;
            m_attaque=true;
            A.Afficher();
            EtatPerso(*this,X);
        }
    }
    else if (GetAsyncKeyState(VK_DOWN))
    {
        if (A.GetTerrain(m_X+1,m_Y)=='.')
        {
     A.Echange(m_X,m_Y,m_X++,m_Y);
   A.Afficher();

   EtatPerso(*this,X);
        }
        else if (A.GetTerrain(m_X+1,m_Y)=='1')
        {
          A.SetTerrain('.',m_X+1,m_Y);
           m_score++;
        A.Afficher();
        EtatPerso(*this,X);
        }
         else if (A.GetTerrain(m_X+1,m_Y)=='8')
        {
            A.SetTerrain('.',m_X+1,m_Y);
            m_score++;
            m_attaque=true;
            A.Afficher();
            EtatPerso(*this,X);
        }
    }
     else if (GetAsyncKeyState(VK_LEFT))
    {
        if (A.GetTerrain(m_X,m_Y-1)=='.')
        {
     A.Echange(m_X,m_Y,m_X,m_Y--);
   A.Afficher();
   EtatPerso(*this,X);
        }
        else if (A.GetTerrain(m_X,m_Y-1)=='1')
        {
           A.SetTerrain('.',m_X,m_Y-1);
           m_score++;
           A.Afficher();
           EtatPerso(*this,X);
        }
         else if (A.GetTerrain(m_X,m_Y-1)=='8')
        {
            A.SetTerrain('.',m_X,m_Y-1);
            m_score++;
            m_attaque=true;
            A.Afficher();
            EtatPerso(*this,X);
        }
    }
     else if (GetAsyncKeyState(VK_RIGHT))
    {
        if (A.GetTerrain(m_X,m_Y+1)=='.')
        {
     A.Echange(m_X,m_Y,m_X,m_Y++);
   A.Afficher();
   EtatPerso(*this,X);
        }
        else if (A.GetTerrain(m_X,m_Y+1)=='1')
        {
          A.SetTerrain('.',m_X,m_Y+1);
          m_score++;
        A.Afficher();
        EtatPerso(*this,X);
        }
         else if (A.GetTerrain(m_X,m_Y+1)=='8')
        {
            A.SetTerrain('.',m_X,m_Y+1);
            m_score++;
            m_attaque=true;
            A.Afficher();
            EtatPerso(*this,X);
        }
    }
    //le perso attaque son adversaire pour le blocker pendant 5 s
        else if (GetAsyncKeyState(VK_SPACE))
    {

        if (m_attaque==true)
        {

            m_attaque=false;
         this->Attaquer(X);
         m_tempB=time(NULL);
        }
    }
    }
    //après 5s on rappel la methode attaque pour activer les mouvement de l'autre perso
    if ((m_tempB+5)==time(NULL))
    {
       this->Attaquer(X);
    }

}
void Perso::Attaquer(Perso &A)
{
if (A.Getactif()==true)
A.Setactif(false);
else
A.Setactif(true);
}

Perso::~Perso()
{
    //dtor
}
//afficher l'etat des perso nom score et attaque
void EtatPerso(Perso &A,Perso &B)
{
    cout<<"nom :"<<A.GetNom()<<" score :"<<A.GetScore()<<" attaque "<<A.Getattaque()<<endl;
     cout<<"nom :"<<B.GetNom()<<" score :"<<B.GetScore()<<" attaque "<<B.Getattaque()<<endl;
}

_____________________________________

Perso_2.h
_____________________________________

#ifndef PERSO_2_H
#define PERSO_2_H
#include "Perso.h"

class Perso_2:public Perso
{
    public:
        Perso_2();
        Perso_2(char nom,int X,int Y);
        int Deplacer(Map &A,Perso &X);
        virtual ~Perso_2();
    protected:
    private:
};

#endif // PERSO_2_H

_____________________________________

Perso_2.ccp
_____________________________________

#include "../include/Perso_2.h"

Perso_2::Perso_2():Perso()
{
    //ctor
}
Perso_2::Perso_2(char nom,int X,int Y):Perso(nom,X,Y)
{

}
int Perso_2::Deplacer(Map &A,Perso &X)
{
    if (m_actif==true)
    {
    if (GetAsyncKeyState('Z'))
    {
        if (A.GetTerrain(m_X-1,m_Y)=='.')
        {
        A.Echange(m_X,m_Y,m_X--,m_Y);
       A.Afficher();
       EtatPerso(X,*this);
        }
        else if (A.GetTerrain(m_X-1,m_Y)=='1')
        {
            A.SetTerrain('.',m_X-1,m_Y);
        m_score++;
        A.Afficher();
        EtatPerso(X,*this);
        }
        else if (A.GetTerrain(m_X-1,m_Y)=='8')
        {
            A.SetTerrain('.',m_X-1,m_Y);
            m_score++;
            m_attaque=true;
            A.Afficher();
            EtatPerso(X,*this);
        }
    }
    else if (GetAsyncKeyState('S'))
    {
        if (A.GetTerrain(m_X+1,m_Y)=='.')
        {
     A.Echange(m_X,m_Y,m_X++,m_Y);
   A.Afficher();
   EtatPerso(X,*this);
        }
        else if (A.GetTerrain(m_X+1,m_Y)=='1')
        {
          A.SetTerrain('.',m_X+1,m_Y);
           m_score++;
        A.Afficher();
        EtatPerso(X,*this);
        }
         else if (A.GetTerrain(m_X+1,m_Y)=='8')
        {
            A.SetTerrain('.',m_X+1,m_Y);
            m_score++;
            m_attaque=true;
            A.Afficher();
            EtatPerso(X,*this);
        }
    }
     else if (GetAsyncKeyState('Q'))
    {
        if (A.GetTerrain(m_X,m_Y-1)=='.')
        {
     A.Echange(m_X,m_Y,m_X,m_Y--);
   A.Afficher();
   EtatPerso(X,*this);
        }
        else if (A.GetTerrain(m_X,m_Y-1)=='1')
        {
           A.SetTerrain('.',m_X,m_Y-1);
           m_score++;
           A.Afficher();
           EtatPerso(X,*this);
        }
         else if (A.GetTerrain(m_X,m_Y-1)=='8')
        {
            A.SetTerrain('.',m_X,m_Y-1);
            m_score++;
            m_attaque=true;
            A.Afficher();
            EtatPerso(X,*this);
        }
    }
     else if (GetAsyncKeyState('D'))
    {
        if (A.GetTerrain(m_X,m_Y+1)=='.')
        {
     A.Echange(m_X,m_Y,m_X,m_Y++);
   A.Afficher();
   EtatPerso(X,*this);
        }
        else if (A.GetTerrain(m_X,m_Y+1)=='1')
        {
          A.SetTerrain('.',m_X,m_Y+1);
          m_score++;
        A.Afficher();
        EtatPerso(X,*this);
        }
         else if (A.GetTerrain(m_X,m_Y+1)=='8')
        {
            A.SetTerrain('.',m_X,m_Y+1);
            m_score++;
            m_attaque=true;
            A.Afficher();
            EtatPerso(X,*this);
        }
    }
        else if (GetAsyncKeyState('A'))
    {

        if (m_attaque==true)
        {
            m_attaque=false;
         this->Attaquer(X);
         m_tempB=time(NULL);
        }
    }
    }
    if ((m_tempB+5)==time(NULL))
    {
       this->Attaquer(X);
    }
}
Perso_2::~Perso_2()
{
    //dtor
}

_____________________________________

Map.h
_____________________________________

#ifndef MAP_H
#define MAP_H
#include <iostream>
#include <windows.h>
#include <time.h>
#define lol 20

class Map
{
    public:
        Map();
        //modifier terrain a une case
        void SetTerrain(char no,int X,int Y);
        //Afficher une case
        char GetTerrain(int X,int Y);
        //echanger 2 element dans le tableau
        bool Echange(int Xa,int Ya,int Xn,int Yn);
        //afficher la map
        void Afficher();
        //ajouter un objet dans la map a chaque execution il ajoute 1 element en plus
        void AjouterObjet();
        virtual ~Map();
    protected:
    char m_terrain[lol][lol];
    int m_nbObjet;
    private:
};

#endif // MAP_H

_____________________________________

Map.ccp
_____________________________________

#include "../include/Map.h"
using namespace std;
Map::Map()
{
    int i(0),j(0);
    for (i=0;i<lol;i++)
    {
        for (j=0;j<lol;j++)
        {
            m_terrain[i][j]='.';
        }
    }
    m_nbObjet=0;
srand(time(NULL));
}
////modifier terrain a une case
void Map::SetTerrain(char no,int X,int Y)
{
   m_terrain[X][Y]=no;
}
char Map::GetTerrain(int X,int Y)
{
    return m_terrain[X][Y];
}
bool Map::Echange(int Xa,int Ya,int Xb,int Yb)
{
   char stock;
    stock=m_terrain[Xa][Ya];
    m_terrain[Xa][Ya]=m_terrain[Xb][Yb];
    m_terrain[Xb][Yb]=stock;
    return true;
}
void Map::Afficher()
{
      int i(0),j(0);
      system("cls");
    for (i=0;i<lol;i++)
    {
        cout<<endl;
        for (j=0;j<lol;j++)
        {
           cout<<m_terrain[i][j]<<" ";
        }
    }
    cout<<endl<<endl;
}
void Map::AjouterObjet()
{
    //cette condition permet de ne pas executer indéfiniment les objet dans la map
    if (m_nbObjet<=12)
    {
    int X;
    int Y;
    //ajouter un 1 ou un 8
    int alea(0);
    for (int i(0);i<=m_nbObjet;i++)
    {
   do {

    X=(rand()%lol)-1;
    Y=(rand()%lol)-1;
   } while (m_terrain[X][Y] != '.');
   alea=rand()%10;
    if (alea<=7)
    {
        m_terrain[X][Y]='1';
    }
    else
    {
       m_terrain[X][Y]='8';
    }
    }

m_nbObjet++;
    }
}
Map::~Map()
{
    //dtor
}

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.