コード例 #1
0
ファイル: grille.cpp プロジェクト: TinOo512/tower-defense
Coordonnees grille::getPos(Coordonnees _pos, int i)
{
	int refX;
	int refY;

	switch(i)
	{
	case 1:
		refX = 5;
		refY = 5;
		break;
	case 2:
		refX = 20;
		refY = 20;
		break;
	case 3:
		refX = 30;
		refY = 30;
		break;
	case 4:
		refX = 100;
		refY = 50;
	}

	int tmpX = refX;
	int tmpY = refY;
	
	while( _pos.getX() > tmpX + refX ) tmpX = tmpX + (refX*2);
	while( _pos.getY() > tmpY + refY ) tmpY = tmpY + (refY*2);

	return Coordonnees(tmpX,tmpY);
}
コード例 #2
0
ファイル: canon.cpp プロジェクト: TinOo512/tower-defense
void Canon::rotate(Coordonnees posSouris){
	const float Pi = 3.141592654f;

	float ab = std::abs(this->Sprite.GetPosition().x - posSouris.getX());
	float cb = std::abs(this->Sprite.GetPosition().y - posSouris.getY());
	float ac = std::sqrt(ab*ab + cb*cb);

	float angle = std::acos( ( ab*ab + ac*ac - cb*cb ) / ( 2*ab*ac ) );
	angle = angle / Pi * 180;

	if(posSouris.getX() < this->Sprite.GetPosition().x){
		if(posSouris.getY() < this->Sprite.GetPosition().y){
			//Haut Gauche
			this->Sprite.SetRotation(180-angle);
		}else{
			//Bas Gauche
			this->Sprite.SetRotation(180+angle);
		}
	}else{
		if(posSouris.getY() < this->Sprite.GetPosition().y){
			//Haut Droite
			this->Sprite.SetRotation(angle);
		}else{
			//Bas Droite
			this->Sprite.SetRotation(-angle);
		}
	}
}
コード例 #3
0
ファイル: grille.cpp プロジェクト: TinOo512/tower-defense
void grille::del(Coordonnees _pos)
{
	std::map<Coordonnees, Objet*>::iterator it = this->_Grille.find(_pos);
	
	if(it != this->_Grille.end()) this->_Grille.erase(it);

	if(this->listeCases[(_pos.getX()-5)/10][(_pos.getY()-5)/10] == 1) this->listeCases[(_pos.getX()-5)/10][(_pos.getY()-5)/10] = 0;
}
コード例 #4
0
ファイル: Plateau.cpp プロジェクト: statox/tic_tac_toe
void Plateau::marquer(Coordonnees c, Joueur* j){

    if (Getcase(c)==0 /*&& c est dans le plateau*/){
        plateau[c.Getlig()][c.Getcol()] = j->GetnumeroTour();
    }
    else
    {
        cout << "case invalide echec du tour" << endl;
    }
}
コード例 #5
0
ファイル: Plateau.cpp プロジェクト: statox/tic_tac_toe
Plateau::Plateau(string chemin)
{
    //chargement du fichier contenant le plateau
    ifstream source (chemin.c_str());

    int col=-1, lig=0;
    int tmp;

    // initialisation variables du plateau
    source >> tmp;
    SetnbColonnes(tmp);
    source >> tmp;
    SetnbLignes(tmp);
    source >> tmp;
    SetnbAlign(tmp);

    // reservation du plateau
    plateau = new int* [nbLignes];
    int i;
    for (i=0; i<nbLignes; i++)
        plateau[i] = new int [nbColonnes];

    // initialisation du plateau
    for (int i=0; i < nbLignes; i++)
        for (int j=0; j < nbColonnes; j++)
            plateau[i][j] = 0;

    // creation des masques du plateau
    creerMasques();

    // recuperation des valeurs depuis le fichier
    Coordonnees c;
    bool continuer=true;
    while(continuer){
        source >> tmp;
        col++;
        if (col==nbColonnes-1 && lig==nbLignes-1)
            continuer=false;

        if(col==nbColonnes){
            col=0;
            lig++;
        }
        c.Setcol(col);
        c.Setlig(lig);

//        cout << c << " " << tmp << endl;

        Setcase(c, tmp);
    }
}
コード例 #6
0
ファイル: canon.cpp プロジェクト: TinOo512/tower-defense
Canon::Canon(Coordonnees pos){
	this->Type = 4;
	this->ColorRed = false;

	imageManager *imageMur	= imageManager::getInstance();
	grille *Grille			= grille::getInstance();

	Grille->add(pos, this, 1);

	this->Sprite.SetImage(*imageMur->GetImage("images/canon.psd"));

	this->Sprite.SetCenter(5,5);
	this->Sprite.SetPosition(pos.getX(),pos.getY());
}
コード例 #7
0
ファイル: grille.cpp プロジェクト: TinOo512/tower-defense
bool  grille::add(Coordonnees _pos, Objet *_obj, int overType)
{
	if(!overType) _pos = this->getPos(_pos,_obj->getType());
	else		  _pos = this->getPos(_pos,overType);
	
	if(this->isFree(_pos,0))
	{
		this->_Grille[_pos] = _obj;
		if(_obj->getType() == 1) this->listeCases[(_pos.getX()-5)/10][(_pos.getY()-5)/10] = 1;
		return true;
	}
	
	return false;
}
コード例 #8
0
ファイル: Image.cpp プロジェクト: BG-Prod/Games
void Image::print(Image * buffer, Coordonnees where, Coordonnees from)
{
    SDL_Rect ou, dou;
    ou.x = where.x();
    ou.y = where.y();
    ou.w = where.w();
    ou.h = where.h();
    dou.x = from.x();
    dou.y = from.y();
    dou.w = from.w();
    dou.h = from.h();
    SDL_BlitSurface(image, &dou, buffer->image, &ou);
}
コード例 #9
0
ファイル: Image.cpp プロジェクト: BG-Prod/Games
void Image::print(Coordonnees where, Coordonnees from)
{
    SDL_Rect ou, dou;
    ou.x = where.x();
    ou.y = where.y();
    ou.w = where.w();
    ou.h = where.h();
    dou.x = from.x();
    dou.y = from.y();
    dou.w = from.w();
    dou.h = from.h();
    SDL_BlitSurface(image, &dou, SDL_GetVideoSurface(), &ou);
}
コード例 #10
0
ファイル: mur.cpp プロジェクト: TinOo512/tower-defense
void BlockMur::SetPosition(int x, int y)
{
	int tmpX = x; 
	int tmpY = y;
	Coordonnees pos;

	grille *Grille = grille::getInstance();
	carte *Carte	= carte::getInstance();

	// deplace les mur en fonction de la position precedente du mur 1
	for(int i=0;i<this->_nbMur;i++)
	{
		if(i > 0)
		{
			tmpX = this->_Mur[i]->getSprite().GetPosition().x - this->prevX + x;
			tmpY = this->_Mur[i]->getSprite().GetPosition().y - this->prevY + y;
		}

		pos.Set(tmpX,tmpY);
		
		this->_Mur[i]->SetPosition(tmpX,tmpY);
				
		if( ( Carte->getElement(pos) != 1 || !Grille->isFree(pos, 0) ) && !this->_Mur[i]->getColor() )
		{
			// position mur interdit, on color en rouge
			this->_Mur[i]->setColor(true);
		}
		else if(Carte->getElement(pos) == 1 && Grille->isFree(pos, 0) && this->_Mur[i]->getColor())
		{
			// position mur ok
			this->_Mur[i]->setColor(false);
		}

	}

	// Sauvegarde la nouvelle position du mur 1
	this->prevX = x;
	this->prevY = y;
}
コード例 #11
0
ファイル: mur.cpp プロジェクト: TinOo512/tower-defense
bool BlockMur::ToGrille(void)
{
	grille *Grille	= grille::getInstance();
	carte *Carte	= carte::getInstance();

	Coordonnees pos;
	int nbCheckOK = 0;
	int i=0;

	// on check si tous les mur sont dans une zone libre et sur la terre
	for(i=0;i<this->_nbMur;i++)
	{
		pos.Set(this->_Mur[i]->getSprite().GetPosition().x,this->_Mur[i]->getSprite().GetPosition().y);

		if(Carte->getElement(pos) == 1 && Grille->isFree(pos, 0))
		{
			nbCheckOK++;
		}
	}

	if(nbCheckOK == this->_nbMur)
	{
		nbCheckOK = 0;

		for(i=0;i<this->_nbMur;i++)
		{
			pos.Set(this->_Mur[i]->getSprite().GetPosition().x,this->_Mur[i]->getSprite().GetPosition().y);

			if(Grille->add(pos,this->_Mur[i]))
			{
				nbCheckOK++;
			}
		}

		if(nbCheckOK == this->_nbMur) return true;
	}

	return false;
}
コード例 #12
0
ファイル: Vaisseau.cpp プロジェクト: BG-Prod/Games
void Vaisseau::move()
{
    /**
    *** On déplace proportionnellement à la distance à parcourir le vaisseau sur les deux axes.
    *** Ensuite on signale si on a bougé
    **/
    Coordonnees pos = Coordonnees(position.x()+position.w()/2, position.y()+position.h()/2, position.w(), position.h());
    int vecX = cible.x()-pos.x();
    int vecY = cible.y()-pos.y();
    int base = abs(vecX)+abs(vecY);
    if(base > vitesse) {
        int movX = vitesse*vecX/base;
        int movY = vitesse*vecY/base;
        position.x(position.x()+movX);
        position.y(position.y()+movY);
        etat[0] = (abs(movX)>abs(movY)) ? (movX>0 ? RIGHT : LEFT) : (movY>0 ? BOTTOM : TOP);
        hasMoved = true;
    }
    else
    {
        hasMoved = false;
    }
}
コード例 #13
0
int main() {
    cout << endl << endl << endl;
    PersonnageBNHumain pbn("pôl_é_kockduhi");
    cout << "pbn : " << pbn.getNomBN() << endl;
    cout << " J'ai une grille de taille : (" << pbn.getTailleGrille().getLongueur() << "," << pbn.getTailleGrille().getHauteur() << ")" << endl;
    cout << "J'ai des bateaux de taille : ";
    for(int i=0; i<pbn.getBateaux().size(); i++) {
        cout << pbn.getBateaux()[i]->getTailleBateau() << " " ;
    }
    cout << endl;
    cout << "J'ai une " << pbn.getArme()->getNomArme() << endl;
    cout << "Le PV initial du bateau 2 est " << pbn.getBateaux()[2]->getPV() << endl;
    pbn.getBateaux()[0]->retirerPV();
    pbn.getBateaux()[0]->retirerPV();

    pbn.getBateaux()[1]->retirerPV();
    pbn.getBateaux()[1]->retirerPV();
    pbn.getBateaux()[1]->retirerPV();

    pbn.getBateaux()[2]->retirerPV();
    pbn.getBateaux()[2]->retirerPV();
    pbn.getBateaux()[2]->retirerPV();

    pbn.getBateaux()[3]->retirerPV();
    pbn.getBateaux()[3]->retirerPV();
    pbn.getBateaux()[3]->retirerPV();
    pbn.getBateaux()[3]->retirerPV();
    cout << "Flotte Coulee?? " << pbn.flotteCoulee() << endl;

    pbn.getBateaux()[4]->retirerPV();
    pbn.getBateaux()[4]->retirerPV();
    pbn.getBateaux()[4]->retirerPV();
    pbn.getBateaux()[4]->retirerPV();
    pbn.getBateaux()[4]->retirerPV();
    cout << "Le PV final du bateau 2 est " << pbn.getBateaux()[2]->getPV() << endl;
    cout << "Flotte Coulee?? " << pbn.flotteCoulee() << endl;







    cout << endl << endl << endl;
    Arme* ar = new ArmeClassique();
    PersonnageBNHumain pbn2("Léauéclem",6,10,ar);
    cout << "pbn2 : " << pbn2.getNomBN() << endl;
    cout << " J'ai une grille de taille : (" << pbn2.getTailleGrille().getLongueur() << "," << pbn2.getTailleGrille().getHauteur() << ")" << endl;
    cout << "J'ai des bateaux de taille : ";
    for(int i=0; i<pbn2.getBateaux().size(); i++) {
        cout << pbn2.getBateaux()[i]->getTailleBateau() << " " ;
    }
    cout << endl;
    cout << "J'ai une " << pbn2.getArme()->getNomArme() << endl;
    pbn2.placerBateaux();
    for(int i=0; i<pbn2.getBateaux().size(); i++) {
        cout << "La taille du bateau n° " << i << " est : " << pbn2.getBateaux()[i]->getTailleBateau() <<endl;
        for(int j=0; j<pbn2.getBateaux()[i]->getTailleBateau(); j++) {
            cout << "Il a : " << pbn2.getBateaux()[i]->getPV() << " PV" << endl;
            pbn2.getBateaux()[i]->retirerPV();
        }
    }


    cout << endl << endl << endl;
    Arme* arm = new ArmeCroix();
    PersonnageBNHumain pbn3("Bas ti 1 et Da mi 1",arm);
    cout << "pbn3 : " << pbn3.getNomBN() << endl;
    cout << " J'ai une grille de taille : (" << pbn3.getTailleGrille().getLongueur() << "," << pbn3.getTailleGrille().getHauteur() << ")" << endl;
    cout << "J'ai des bateaux de taille : ";
    for(int i=0; i<pbn3.getBateaux().size(); i++) {
        cout << pbn3.getBateaux()[i]->getTailleBateau() << " " ;
    }
    cout << endl;
    cout << "J'ai une " << pbn3.getArme()->getNomArme() << endl;





    cout << endl << endl << endl;
    PersonnageBNHumain pbn4("BasssssssssssssttttiennéVivi",8,12);
    cout << "pbn4 : " << pbn4.getNomBN() << endl;
    cout << " J'ai une grille de taille : (" << pbn4.getTailleGrille().getLongueur() << "," << pbn4.getTailleGrille().getHauteur() << ")" << endl;
    cout << "J'ai des bateaux de taille : ";
    for(int i=0; i<pbn4.getBateaux().size(); i++) {
        cout << pbn4.getBateaux()[i]->getTailleBateau() << " " ;
    }
    cout << endl;
    cout << "J'ai une " << pbn4.getArme()->getNomArme() << endl;




    cout << endl << endl << endl;
    vector<int> vec= {5,4,3,3,2};
    PersonnageBNHumain pbn5("Perso",vec);
    cout << "pbn5 : " << pbn5.getNomBN() << endl;
    cout << " J'ai une grille de taille : (" << pbn5.getTailleGrille().getLongueur() << "," << pbn5.getTailleGrille().getHauteur() << ")" << endl;
    cout << "J'ai des bateaux de taille : ";
    for(int i=0; i<pbn5.getBateaux().size(); i++) {
        cout << pbn5.getBateaux()[i]->getTailleBateau() << " " ;
    }
    cout << endl;
    cout << "J'ai une " << pbn5.getArme()->getNomArme() << endl;
    Grille gr=pbn5.placerBateaux();
    cout << "Voici la grille renvoyée par le placement bateau chez un PersonnageBNHumain : " << endl;
    afficherGrille(gr);
    cout << "C'est bien ce que l'on cherchait car on ne peut pas placer de bateau dans la partie modèle, on créé donc une grille vide en attendant le travail de l'IHM" << endl;
    Grille* gr2 = new Grille(8,10);
    Coordonnees coord = pbn5.coordonneesAViser(gr2);
    cout << "Les cordonnees a viser sont" << coord.getAbscisse() << coord.getOrdonnee() << endl;
    cout << "C'est bien ce que l'on cherchait car on ne peut pas savoir quelles sont les coordonnees visees dans la partie modèle, on créé donc des coordonnees vides en attendant le travail de l'IHM" << endl;



    cout << endl << endl << endl;
    vector<int> vec2= {9,6,3,4};
    PersonnageBNHumain pbn6("DaméAnn",3,3,vec2);
    cout << "pbn6 : " << pbn6.getNomBN() << endl;
    cout << " J'ai une grille de taille : (" << pbn6.getTailleGrille().getLongueur() << "," << pbn6.getTailleGrille().getHauteur() << ")" << endl;
    cout << "J'ai des bateaux de taille : ";
    for(int i=0; i<pbn6.getBateaux().size(); i++) {
        cout << pbn6.getBateaux()[i]->getTailleBateau() << " " ;
    }
    cout << endl;
    cout << "J'ai une " << pbn6.getArme()->getNomArme() << endl;





    cout << endl << endl << endl;
    vector<int> vec3= {4,6,6,2,1};
    Arme* arme = new ArmeFatale();
    PersonnageBNHumain pbn7("jesaispasqui",vec3,arme);
    cout << "pbn7 : " << pbn7.getNomBN() << endl;
    cout << " J'ai une grille de taille : (" << pbn7.getTailleGrille().getLongueur() << "," << pbn7.getTailleGrille().getHauteur() << ")" << endl;
    cout << "J'ai des bateaux de taille : ";
    for(int i=0; i<pbn7.getBateaux().size(); i++) {
        cout << pbn7.getBateaux()[i]->getTailleBateau() << " " ;
    }
    cout << endl;
    cout << "J'ai une " << pbn7.getArme()->getNomArme() << endl;








    cout << endl << endl << endl;
    vector<int> vec4= {5,7,6,4,9,3};
    Arme* armm = new ArmeFatale();
    PersonnageBNHumain pbn8("jesaistout",7,6,vec4,armm);
    cout << "pbn8 : " << pbn8.getNomBN() << endl;
    cout << " J'ai une grille de taille : (" << pbn8.getTailleGrille().getLongueur() << "," << pbn8.getTailleGrille().getHauteur() << ")" << endl;
    cout << "J'ai des bateaux de taille : ";
    for(int i=0; i<pbn8.getBateaux().size(); i++) {
        cout << pbn8.getBateaux()[i]->getTailleBateau() << " " ;
    }
    cout << endl;
    cout << "J'ai une " << pbn8.getArme()->getNomArme() << endl;
}
コード例 #14
0
void PlaceJoueur::getZone(Coordonnees coordActuel, int **carte, int largeur, int hauteur, bool **depl, vector<Coordonnees>* zone, int peuple)
{
	if (!depl[coordActuel.x()][coordActuel.y()])
	{
		depl[coordActuel.x()][coordActuel.y()]=true;
		if (coordActuel.x()-1>=0)
		{
			if (verif[peuple][carte[coordActuel.x()-1][coordActuel.y()]])
			{
				Coordonnees coord(coordActuel.x()-1,coordActuel.y());
				if (find(zone->begin(),zone->end(),coord)==zone->end())
					zone->push_back(coord);
				getZone(coord,carte, largeur, hauteur,depl,zone,peuple); 
			}
		}
		if (coordActuel.x()+1<largeur)
		{
			if (verif[peuple][carte[coordActuel.x()+1][coordActuel.y()]])
			{
				Coordonnees coord(coordActuel.x()+1,coordActuel.y());
				if (find(zone->begin(),zone->end(),coord)==zone->end())
					zone->push_back(coord);
				getZone(coord,carte, largeur, hauteur,depl,zone,peuple); 
			}
		}
		if (coordActuel.y()-1>=0)
		{
			if (verif[peuple][carte[coordActuel.x()][coordActuel.y()-1]])
			{
				Coordonnees coord(coordActuel.x(),coordActuel.y()-1);
				if (find(zone->begin(),zone->end(),coord)==zone->end())
					zone->push_back(coord);
				getZone(coord,carte, largeur, hauteur,depl,zone,peuple); 
			}
		}
		if (coordActuel.y()+1<hauteur)
		{
			if (verif[peuple][carte[coordActuel.x()][coordActuel.y()+1]])
			{
				Coordonnees coord(coordActuel.x(),coordActuel.y()+1);
				if (find(zone->begin(),zone->end(),coord)==zone->end())
					zone->push_back(coord);
				getZone(coord,carte, largeur, hauteur,depl,zone,peuple); 
			}
		}
		if (peuple==Nain && carte[coordActuel.x()][coordActuel.y()]==Montagne)
        {
            for (int i=0;i<largeur;i++)
            {
                for (int j=0;j<hauteur;j++)
                {
                    if(carte[i][j]==Montagne)
                    {
							Coordonnees coord(i,j);
							if (find(zone->begin(),zone->end(),coord)==zone->end())
								zone->push_back(coord);
							getZone(coord,carte, largeur, hauteur,depl,zone,peuple); 
                    }
                }
            }
        }
	}
}
コード例 #15
0
ファイル: grille.cpp プロジェクト: TinOo512/tower-defense
Coordonnees grille::calcBezier(Coordonnees A, Coordonnees B, Coordonnees C, double t)
{
    return Coordonnees(pow((1 - t), 2) * A.getX() + 2 * t * (1 -t) * B.getX() + pow(t, 2) * C.getX() , pow((1 - t), 2) * A.getY() + 2 * t * (1 -t) * B.getY() + pow(t, 2) * C.getY());
}