Я сейчас работаю над школьным проектом, который состоит из разработки RPG C ++, особенно с Qt.
До этого все идет хорошо, за исключением того, что у меня есть проблемы с управлением движением персонажа, я объясняю себя.
У моего персонажа есть набор атрибутов, в том числе атрибут m_tile, который является указателем на объект Case, который я также реализовал, и вектор «Map_2», содержащий объекты Case. Что касается методов, я реализовал методы go_up, go_down и т. Д., Которые позволяют изменять начальные координаты персонажа. Идея состоит в том, чтобы изменить эту функцию так, чтобы, с одной стороны, координаты персонажа обновлялись, когда вы делаете ход (например, вызов go_down), а также чтобы указатель m_tile указывал на другой из объектов, содержащихся в Map_2. А именно, Case Objects содержит путь к спрайту (позиции символа на карте), который отображается с использованием QGraphicScene из Qt.
Сильфон это код
Компилятор возвращает мне:
Personnage.cpp: 244: 22: ошибка: "Carte_2" не была объявлена в этой области
m_tile = Carte_2[1];
^~~~~~~
Кто-нибудь может мне помочь справиться с векторами и помочь мне решить проблему?
Заранее спасибо
#include "Personnage.h"
#include "Drop.h"
#include "Case.h"
#include <iostream>
#include <cstdlib>
#include <string>
#include <vector>
// test_1 = Case(1, 0, 0,false, false,"plop");
// test_2 = Case(1, 0, 0,false, false,"plop");
// test_3 = Case(1, 0, 0,false, false,"plop");
// Carte_2.push_back(test_1);
// Carte_2.push_back(test_2);
// Carte_2.push_back(test_3);
//Case& nb_1 = Carte_2[1];
//nb_1 = Case(99, 0, 0,false, false,"prout");
//Case Carte_2[1] = Case(1, 0, 0,false, false,"test");
//Case objet = Case(99, 0, 0,false, false,"prout");
//Carte[1] = Case(99, 0, 0,false, false,"prout");
//Carte_2[1] = objet;
Personnage::Personnage(int id)
{
Id = id;
m_vie = 100;
m_degats= 10;//NArme.getDegats();
m_X_pos = 0;
m_Y_pos = 0;
m_niveau = 1;
m_experience = 0;
m_puissance = 1;
m_est_vivant = true;
m_sprite = "Perso";
//m_tile = new Case(1, 0, 0,false, false,"plop"); //
std::vector<Case> Carte_2(2,Case(1, 0, 0,false, false,"plop")); // test de la carte pour deplacements
Carte_2[1] = Case(99, 0, 0,false, false,"prout");
m_tile = new Case(Carte_2[0]);
};
//Personnage::Personnage(int id, int vieAtStart, int degatsArmeAtStart)
//{
// m_vie = vieAtStart;
// m_degatsArme = degatsArmeAtStart;
// persoId = id;
// X_pos = 0;
// Y_pos = 0;
// niveau = 1;
// experience = 0;
// };
void Personnage::recevoirDegats(int nombreDegats)
{
m_vie = m_vie - nombreDegats; //IL faut rajouter une fonction coup critique
};
void Personnage::attaquer(Personnage &cible)
{
cible.recevoirDegats(m_degats); //Attention aux attribut privés
};
void Personnage::guerir()
{
m_vie = m_vie + 40;
if (m_vie > 100)
{
m_vie = 100;
}
};
void Personnage::regen()
{
m_vie = 100;
};
bool Personnage::estVivant() //tout est dans le nom
{
if (m_vie > 0)
return true;
else
return false;
};
Personnage::~Personnage() //destructeur
{
};
int Personnage::get_vie()
{
return m_vie;
};
int Personnage::get_Id()
{
return Id;
};
// void Personnage::se_blesser(int douleur)
// {
// m_vie = m_vie - douleur;
// if (m_vie < 0)
// m_vie = 0;
// };
int Personnage::get_degats()
{
return m_degats;
};
int Personnage::get_X_pos()
{
return m_X_pos;
};
int Personnage::get_Y_pos()
{
return m_Y_pos;
};
int Personnage::get_niveau()
{
return m_niveau;
};
int Personnage::get_experience()
{
return m_experience;
};
int Personnage::get_puissance()
{
return m_puissance;
};
bool Personnage::get_vivant()
{
return m_est_vivant;
};
std::string Personnage::get_sprite()
{
return m_sprite;
};
Case Personnage::get_case()
{
return *m_tile;
};
void Personnage::set_case(Case & Case_cible)
{
m_tile = &Case_cible;
};
void Personnage::change_niveau()
{
if ((m_experience > 0) && (m_experience < 110))
{
m_niveau = 1;
}
else if ((m_experience >= 110) && (m_experience < 650))
{
m_niveau = 2;
}
else if ((m_experience >= 650) && (m_experience < 1500))
{
m_niveau = 3;
}
else if ((m_experience >= 1500) && (m_experience < 2800))
{
m_niveau = 4;
}
else if ((m_experience >= 2800) && (m_experience < 4800))
{
m_niveau = 5;
}
else if ((m_experience >= 4800) && (m_experience < 7300))
{
m_niveau = 6;
}
else if ((m_experience >= 7300) && (m_experience < 10500))
{
m_niveau = 7;
}
else if ((m_experience >= 10500) && (m_experience < 14500))
{
m_niveau = 8;
}
else if ((m_experience >= 14500) && (m_experience < 19200))
{
m_niveau = 9;
}
else
{
m_niveau = 10;
}
};
void Personnage::go_up()
{
if ((m_Y_pos >0) &&(m_Y_pos<=30))
{
m_Y_pos = m_Y_pos-1 ;
}
else
{
m_Y_pos = m_Y_pos;
}
};
void Personnage::go_down()
{
if ((m_Y_pos >=0) &&(m_Y_pos<30))
{
m_Y_pos = m_Y_pos+1 ;
m_tile = Carte_2[1];
}
else
{
m_Y_pos = m_Y_pos;
}
};
void Personnage::go_left()
{
if ((m_X_pos >0) &&(m_X_pos<=30))
{
m_X_pos = m_X_pos-1 ;
}
else
{
m_X_pos = m_X_pos;
}
};
void Personnage::go_right()
{
if ((m_X_pos >=0) &&(m_X_pos<30))
{
m_X_pos = m_X_pos+1 ;
}
else
{
m_X_pos = m_X_pos;
}
};
//////////////////////////////////////////////////////////
#include "Case.h"
#include <iostream>
#include <cstdlib>
#include <string>
Case::Case(int numero, int X_loc, int Y_loc, bool combat, bool barriere,std::string image)
{
Numero = numero;
m_X_localisation = X_loc; // voir protected
m_Y_localisation = Y_loc; // a changer
combat_ou_non = combat;
obstacle = barriere;
m_sprite = image;
};
//Personnage::Personnage(int id, int vieAtStart, int degatsArmeAtStart)
//{
// m_vie = vieAtStart;
// m_degatsArme = degatsArmeAtStart;
// persoId = id;
// X_pos = 0;
// Y_pos = 0;
// niveau = 1;
// experience = 0;
// };
int Case::get_numero()
{
return Numero;
};
int Case::get_X_localisation()
{
return m_X_localisation;
};
int Case::get_Y_localisation()
{
return m_Y_localisation;
};
bool Case::get_combat_ou_non()
{
return combat_ou_non;
};
bool Case::get_obstacle()
{
return obstacle;
};
std::string Case::get_sprite()
{
return m_sprite;
};
Case::~Case() //destructeur
{
};
////////////////////////////////////////////////////////////
#include "Rand.h"
#include "Personnage.h"
#include "Guerrier.h"
#include "Magicien.h"
#include "Voleur.h"
#include "Squelette.h"
#include "Araignee.h"
#include "Gobelin.h"
#include "Boss.h"
#include "Case.h"
#include <time.h>
#include "Drop.h"
#include "Combat.h"
#include <vector>
//#include "Rand.h" // permet de faire le lien avec le .h
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
int main()
{
// std::vector<Case> Carte(2,Case(1, 0, 0,false, false,"plop")); // test de la carte
// std::cout << " Numero de Case_1 : " << Carte[0].get_numero() << std::endl;
// std::cout << " Numero de Case_1 : " << Carte[0].get_X_localisation() << std::endl;
// std::cout << " Numero de Case_1 : " << Carte[0].get_Y_localisation() << std::endl;
// std::cout << " Numero de Case_1 : " << Carte[0].get_combat_ou_non() << std::endl;
// std::cout << " Numero de Case_1 : " << Carte[0].get_obstacle() << std::endl;
// std::cout << " Numero de Case_1 : " << Carte[0].get_sprite() << std::endl;
// std::cout << "------------------------- " << std::endl;
// Carte[1] = Case(1, 0, 0,false, false,"test");
// std::cout << " Numero de Case_1 : " << Carte[1].get_numero() << std::endl;
// std::cout << " Numero de Case_1 : " << Carte[1].get_X_localisation() << std::endl;
// std::cout << " Numero de Case_1 : " << Carte[1].get_Y_localisation() << std::endl;
// std::cout << " Numero de Case_1 : " << Carte[1].get_combat_ou_non() << std::endl;
// std::cout << " Numero de Case_1 : " << Carte[1].get_obstacle() << std::endl;
// std::cout << " Numero de Case_1 : " << Carte[1].get_sprite() << std::endl;
// std::cout << "------------------------- " << std::endl;
// test de la case de depart inclue dans personnage ///
int A = rand_a_b(0,6);
std::cout << "A vaut:" << A << std::endl;
Guerrier Heros = Guerrier(1);
Personnage Mechant = Personnage(2);
Magicien Merlin = Magicien(3);
Voleur Robin = Voleur(4);
Squelette Oscar = Squelette(11);
Araignee Lucifer = Araignee(12);
Gobelin Marcel = Gobelin(13);
Boss Jojo = Boss(14);
std::cout << " Numero de Case initiale du personnage : " << Heros.get_case().get_numero() << std::endl;
std::cout << "------------------------- " << std::endl;
//Heros.set_case(Carte_2[1]);
std::cout << " Numero de Case initiale du personnage : " << Heros.get_case().get_numero() << std::endl;
std::cout << " Sprite initiale du personnage : " << Heros.get_case().get_sprite() << std::endl;
// std::cout << "Id de Heros est:" << Heros.get_Id() << std::endl;
// std::cout << "Vie de Heros est:" << Heros.get_vie() << std::endl;
// std::cout << "Degats de Heros est:" << Heros.get_degats() << std::endl;
// std::cout << "X_pos de Heros est:" << Heros.get_X_pos() << std::endl;
// std::cout << "Y_pos de Heros est:" << Heros.get_Y_pos() << std::endl;
// std::cout << "Niveau de Heros est:" << Heros.get_niveau() << std::endl;
// std::cout << "Experience de Heros est:" << Heros.get_experience() << std::endl;
// std::cout << "Puissance de Heros est:" << Heros.get_puissance() << std::endl;
// std::cout << "Vivant de Heros est:" << Heros.get_vivant() << std::endl;
// std::cout << "Sprite de Heros est:" << Heros.get_sprite() << std::endl;
// std::cout << "Id de Mechant est:" << Mechant.get_Id() << std::endl;
// std::cout << "Vie de Mechant est:" << Mechant.get_vie() << std::endl;
// std::cout << "Degats de Mechant est:" << Mechant.get_degats() << std::endl;
// std::cout << "X_pos de Mechant est:" << Mechant.get_X_pos() << std::endl;
// std::cout << "Y_pos de Mechant est:" << Mechant.get_Y_pos() << std::endl;
// std::cout << "Niveau de Mechant est:" << Mechant.get_niveau() << std::endl;
// std::cout << "Experience de Mechant est:" << Mechant.get_experience() << std::endl;
// std::cout << "Puissance de Mechant est:" << Mechant.get_puissance() << std::endl;
// std::cout << "Vivant de Mechant est:" << Mechant.get_vivant() << std::endl;
// std::cout << "Sprite de Mechant est:" << Mechant.get_sprite() << std::endl;
Heros.charge(Mechant,Heros);
// std::cout << "Id de Heros est:" << Heros.get_Id() << std::endl;
// std::cout << "Vie de Heros est:" << Heros.get_vie() << std::endl;
// std::cout << "Degats de Heros est:" << Heros.get_degats() << std::endl;
// std::cout << "X_pos de Heros est:" << Heros.get_X_pos() << std::endl;
// std::cout << "Y_pos de Heros est:" << Heros.get_Y_pos() << std::endl;
// std::cout << "Niveau de Heros est:" << Heros.get_niveau() << std::endl;
// std::cout << "Experience de Heros est:" << Heros.get_experience() << std::endl;
// std::cout << "Puissance de Heros est:" << Heros.get_puissance() << std::endl;
// std::cout << "Vivant de Heros est:" << Heros.get_vivant() << std::endl;
// std::cout << "Sprite de Heros est:" << Heros.get_sprite() << std::endl;
// std::cout << "Id de Mechant est:" << Mechant.get_Id() << std::endl;
// std::cout << "Vie de Mechant est:" << Mechant.get_vie() << std::endl;
// std::cout << "Degats de Mechant est:" << Mechant.get_degats() << std::endl;
// std::cout << "X_pos de Mechant est:" << Mechant.get_X_pos() << std::endl;
// std::cout << "Y_pos de Mechant est:" << Mechant.get_Y_pos() << std::endl;
// std::cout << "Niveau de Mechant est:" << Mechant.get_niveau() << std::endl;
// std::cout << "Experience de Mechant est:" << Mechant.get_experience() << std::endl;
// std::cout << "Puissance de Mechant est:" << Mechant.get_puissance() << std::endl;
// std::cout << "Vivant de Mechant est:" << Mechant.get_vivant() << std::endl;
// std::cout << "Sprite de Mechant est:" << Mechant.get_sprite() << std::endl;
// std::cout << "Id de Merlin est:" << Merlin.get_Id() << std::endl;
// std::cout << "Vie de Merlin est:" << Merlin.get_vie() << std::endl;
// std::cout << "Degats de Merlin est:" << Merlin.get_degats() << std::endl;
// std::cout << "X_pos de Merlin est:" << Merlin.get_X_pos() << std::endl;
// std::cout << "Y_pos de Merlin est:" << Merlin.get_Y_pos() << std::endl;
// std::cout << "Niveau de Merlin est:" << Merlin.get_niveau() << std::endl;
// std::cout << "Experience de Merlin est:" << Merlin.get_experience() << std::endl;
// std::cout << "Puissance de Merlin est:" << Merlin.get_puissance() << std::endl;
// std::cout << "Vivant de Merlin est:" << Merlin.get_vivant() << std::endl;
// std::cout << "Sprite de Merlin est:" << Merlin.get_sprite() << std::endl;
Merlin.BouleDeFeu(Mechant);
// std::cout << "Id de Mechant est:" << Mechant.get_Id() << std::endl;
// std::cout << "Vie de Mechant est:" << Mechant.get_vie() << std::endl;
// std::cout << "Degats de Mechant est:" << Mechant.get_degats() << std::endl;
// std::cout << "X_pos de Mechant est:" << Mechant.get_X_pos() << std::endl;
// std::cout << "Y_pos de Mechant est:" << Mechant.get_Y_pos() << std::endl;
// std::cout << "Niveau de Mechant est:" << Mechant.get_niveau() << std::endl;
// std::cout << "Experience de Mechant est:" << Mechant.get_experience() << std::endl;
// std::cout << "Puissance de Mechant est:" << Mechant.get_puissance() << std::endl;
// std::cout << "Vivant de Mechant est:" << Mechant.get_vivant() << std::endl;
// std::cout << "Sprite de Mechant est:" << Mechant.get_sprite() << std::endl;
// std::cout << "Id de Robin est:" << Robin.get_Id() << std::endl;
// std::cout << "Vie de Robin est:" << Robin.get_vie() << std::endl;
// std::cout << "Degats de Robin est:" << Robin.get_degats() << std::endl;
// std::cout << "X_pos de Robin est:" << Robin.get_X_pos() << std::endl;
// std::cout << "Y_pos de Robin est:" << Robin.get_Y_pos() << std::endl;
// std::cout << "Niveau de Robin est:" << Robin.get_niveau() << std::endl;
// std::cout << "Experience de Robin est:" << Robin.get_experience() << std::endl;
// std::cout << "Puissance de Robin est:" << Robin.get_puissance() << std::endl;
// std::cout << "Vivant de Robin est:" << Robin.get_vivant() << std::endl;
// std::cout << "Sprite de Robin est:" << Robin.get_sprite() << std::endl;
Robin.sournoiserie(Mechant);
// std::cout << "Id de Mechant est:" << Mechant.get_Id() << std::endl;
// std::cout << "Vie de Mechant est:" << Mechant.get_vie() << std::endl;
// std::cout << "Degats de Mechant est:" << Mechant.get_degats() << std::endl;
// std::cout << "X_pos de Mechant est:" << Mechant.get_X_pos() << std::endl;
// std::cout << "Y_pos de Mechant est:" << Mechant.get_Y_pos() << std::endl;
// std::cout << "Niveau de Mechant est:" << Mechant.get_niveau() << std::endl;
// std::cout << "Experience de Mechant est:" << Mechant.get_experience() << std::endl;
// std::cout << "Puissance de Mechant est:" << Mechant.get_puissance() << std::endl;
// std::cout << "Vivant de Mechant est:" << Mechant.get_vivant() << std::endl;
// std::cout << "Sprite de Mechant est:" << Mechant.get_sprite() << std::endl;
// std::cout << "Id de Oscar est:" << Oscar.get_Id() << std::endl;
// std::cout << "Vie de Oscar est:" << Oscar.get_vie() << std::endl;
// std::cout << "Degats de Oscar est:" << Oscar.get_degats() << std::endl;
// std::cout << "X_pos de Oscar est:" << Oscar.get_X_pos() << std::endl;
// std::cout << "Y_pos de Oscar est:" << Oscar.get_Y_pos() << std::endl;
// std::cout << "Niveau de Oscar est:" << Oscar.get_niveau() << std::endl;
// std::cout << "Experience de Oscar est:" << Oscar.get_experience() << std::endl;
// std::cout << "Puissance de Oscar est:" << Oscar.get_puissance() << std::endl;
// std::cout << "Vivant de Oscar est:" << Oscar.get_vivant() << std::endl;
// std::cout << "Sprite de Oscar est:" << Oscar.get_sprite() << std::endl;
Oscar.coup_de_femur(Robin);
// std::cout << "Id de Robin est:" << Robin.get_Id() << std::endl;
// std::cout << "Vie de Robin est:" << Robin.get_vie() << std::endl;
// std::cout << "Degats de Robin est:" << Robin.get_degats() << std::endl;
// std::cout << "X_pos de Robin est:" << Robin.get_X_pos() << std::endl;
// std::cout << "Y_pos de Robin est:" << Robin.get_Y_pos() << std::endl;
// std::cout << "Niveau de Robin est:" << Robin.get_niveau() << std::endl;
// std::cout << "Experience de Robin est:" << Robin.get_experience() << std::endl;
// std::cout << "Puissance de Robin est:" << Robin.get_puissance() << std::endl;
// std::cout << "Vivant de Robin est:" << Robin.get_vivant() << std::endl;
// std::cout << "Sprite de Robin est:" << Robin.get_sprite() << std::endl;
Lucifer.morsure(Robin);
// std::cout << "Id de Robin est:" << Robin.get_Id() << std::endl;
// std::cout << "Vie de Robin est:" << Robin.get_vie() << std::endl;
// std::cout << "Degats de Robin est:" << Robin.get_degats() << std::endl;
// std::cout << "X_pos de Robin est:" << Robin.get_X_pos() << std::endl;
// std::cout << "Y_pos de Robin est:" << Robin.get_Y_pos() << std::endl;
// std::cout << "Niveau de Robin est:" << Robin.get_niveau() << std::endl;
// std::cout << "Experience de Robin est:" << Robin.get_experience() << std::endl;
// std::cout << "Puissance de Robin est:" << Robin.get_puissance() << std::endl;
// std::cout << "Vivant de Robin est:" << Robin.get_vivant() << std::endl;
// std::cout << "Sprite de Robin est:" << Robin.get_sprite() << std::endl;
Marcel.coup_de_dague(Robin);
// std::cout << "Id de Robin est:" << Robin.get_Id() << std::endl;
// std::cout << "Vie de Robin est:" << Robin.get_vie() << std::endl;
// std::cout << "Degats de Robin est:" << Robin.get_degats() << std::endl;
// std::cout << "X_pos de Robin est:" << Robin.get_X_pos() << std::endl;
// std::cout << "Y_pos de Robin est:" << Robin.get_Y_pos() << std::endl;
// std::cout << "Niveau de Robin est:" << Robin.get_niveau() << std::endl;
// std::cout << "Experience de Robin est:" << Robin.get_experience() << std::endl;
// std::cout << "Puissance de Robin est:" << Robin.get_puissance() << std::endl;
// std::cout << "Vivant de Robin est:" << Robin.get_vivant() << std::endl;
// std::cout << "Sprite de Robin est:" << Robin.get_sprite() << std::endl;
Jojo.coup_fatal(Robin);
std::cout << "Id de Robin est:" << Robin.get_Id() << std::endl;
std::cout << "Vie de Robin est:" << Robin.get_vie() << std::endl;
std::cout << "Degats de Robin est:" << Robin.get_degats() << std::endl;
std::cout << "X_pos de Robin est:" << Robin.get_X_pos() << std::endl;
std::cout << "Y_pos de Robin est:" << Robin.get_Y_pos() << std::endl;
std::cout << "Niveau de Robin est:" << Robin.get_niveau() << std::endl;
std::cout << "Experience de Robin est:" << Robin.get_experience() << std::endl;
std::cout << "Puissance de Robin est:" << Robin.get_puissance() << std::endl;
std::cout << "Vivant de Robin est:" << Robin.get_vivant() << std::endl;
std::cout << "Sprite de Robin est:" << Robin.get_sprite() << std::endl;
Drop(Robin,Jojo);
std::cout << "Id de Robin est:" << Robin.get_Id() << std::endl;
std::cout << "Vie de Robin est:" << Robin.get_vie() << std::endl;
std::cout << "Degats de Robin est:" << Robin.get_degats() << std::endl;
std::cout << "X_pos de Robin est:" << Robin.get_X_pos() << std::endl;
std::cout << "Y_pos de Robin est:" << Robin.get_Y_pos() << std::endl;
std::cout << "Niveau de Robin est:" << Robin.get_niveau() << std::endl;
std::cout << "Experience de Robin est:" << Robin.get_experience() << std::endl;
std::cout << "Puissance de Robin est:" << Robin.get_puissance() << std::endl;
std::cout << "Vivant de Robin est:" << Robin.get_vivant() << std::endl;
std::cout << "Sprite de Robin est:" << Robin.get_sprite() << std::endl;
Combat(Robin,Oscar);
std::cout << "Puissance de Robin est:" << Robin.get_puissance() << std::endl;
}