Commit b77eb0f0 authored by Elias Leinenweber's avatar Elias Leinenweber
Browse files

Avance dans Classroom

parent 1383e5bc
#ifndef CLASS_H
#define CLASS_H
#ifndef CLASSROOM_H
#define CLASSROOM_H
#include <string>
#include <vector>
......@@ -7,61 +7,74 @@
#include "imgui/imgui.h"
#include "controller/Game.h"
#include "model/Student.h"
#include "model/Teacher.h"
#include "view/Texturable.h"
class Student;
class Teacher;
/**
* @brief Modélise une salle de classe.
*/
class Classroom : public Texturable {
private:
static const int MAX_SIZE = 50; /**< taille maximum de la classe */
/** @brief Taille maximum de la classe. */
static const int MAX_SIZE = 36;
static ImGuiID lastID;
std::vector<Student *> students; /**< élèves de la classe */
Teacher *teacher; /**< enseignant de la classe */
/** @brief Élèves de la classe. */
std::vector<Student *> students;
/** @brief Enseignant de la classe. */
const Teacher *teacher;
public:
/**
* @brief Construct a new Classroom object
* @brief Crée une salle de classe.
*
* @param teacher Professeur de la classe
* @param n l'identifiant de la salle de classe
* @param teacher un pointeur vers l'enseignant de la classe
*/
Classroom(int n, Teacher *teacher)
: Texturable(RESOURCES_FOLDER "images/salles/salle" + std::to_string(n) +
".png")
, teacher(teacher)
{
}
~Classroom();
Classroom(int n, Teacher *teacher);
/**
* @brief Get le professeur de la classe
* @brief Renvoie un pointeur vers l'enseignant de la classe.
*
* @return Teacher*
* @return un pointeur vers l'enseignant de la classe
*/
Teacher *getTeacher() { return teacher; }
const Teacher *getTeacher() { return teacher; }
/**
* @brief Get la liste des élèves
* @brief Ajoute un élève à la classe.
*
* @return std::vector<Student *> Liste des élèves
* @param student un pointeur vers un élève
*/
std::vector<Student *> getStudents() { return students; }
void addStudent(Student *student) { students.push_back(student); }
/**
* @brief Ajoute un élève à la classe
* @brief Renvoie la liste des élèves de la classe.
*
* @param student Elève
* @return la liste des élèves de la classe
*/
void addStudent(Student *student) { students.push_back(student); }
const std::vector<Student *> getStudents() { return students; }
/**
* @brief Retourne le nombre d'élève dans la classe
* @brief Renvoie le nombre d'élèves dans la classe.
*
* @return int nombre d'élève
* @return le nombre d'élèves dans la classe
*/
int size() { return students.size(); }
/** @brief Effectue le rendu graphique. */
void render() const;
/**
* @brief Détruit l'instance de la salle de classe.
*
* Cette fonction détruit également l'enseignant ainsi que tous les élèves.
*/
~Classroom();
};
#endif
#endif /* CLASSROOM_H */
......@@ -8,6 +8,8 @@
#include "model/Classroom.h"
#include "model/Subject.h"
class Classroom;
class Student : public Actor {
private:
/** @brief Classe de l'élève */
......@@ -31,13 +33,12 @@ class Student : public Actor {
*
* @param name prénom de l'élève
* @param surname nom de famille de l'élève
* @param classroom Classe de l'élève
* @param mood Humeur de l'élève
* @param motivation Motivation de l'élève
* @param skill Qualité de l'élève
*/
Student(std::string name, std::string surname, Classroom &classroom,
double mood, double motivation, double skill);
Student(const std::string &name, const std::string &surname, double mood,
double motivation, double skill);
~Student();
/**
......@@ -103,6 +104,8 @@ class Student : public Actor {
* @param grade Note
*/
void addGrades(Subject *subject, double grade);
void render() const;
};
#endif
......@@ -10,7 +10,7 @@
class MainView : public Component {
private:
const School *school;
School *school;
public:
MainView();
......
......@@ -7,6 +7,12 @@
ImGuiID Classroom::lastID = 0;
Classroom::Classroom(int n, Teacher *teacher)
: Texturable("resources/images/salles/salle" + std::to_string(n) + ".png")
, teacher(teacher)
{
}
void
Classroom::render() const
{
......@@ -14,9 +20,9 @@ Classroom::render() const
ImVec2(ImGui::GetIO().DisplaySize.x / 2.1,
ImGui::GetIO().DisplaySize.y / 2.2))) {
ImGui::Image(texture);
for (const Student *student : students) {
ImGui::SameLine();
for (const Student *student : students)
student->render();
}
}
ImGui::EndChild();
}
......
#include "imgui/imgui-SFML.h"
#include "imgui/imgui.h"
#include "model/Actor.h"
#include "model/Student.h"
Student::Student(const std::string &name, const std::string &surname,
double mood, double motivation, double skill)
: Actor(name, surname, "resources/images/eleves/eleve_garcon1.png")
, mood(mood)
, motivation(motivation)
, skill(skill)
{
}
void
Student::addGrades(Subject *subject, double grade)
{
......@@ -9,4 +22,15 @@ Student::addGrades(Subject *subject, double grade)
std::vector<double> gr;
grades.emplace(subject, gr);
}
}
\ No newline at end of file
}
void
Student::render() const
{
ImGui::ImageButton(texture);
}
Student::~Student()
{
// todo
}
......@@ -14,6 +14,9 @@
MainView::MainView()
: school(new School("L'école infernale"))
{
Classroom *g12 = new Classroom(1, new Teacher("H.", "Julien", 70, 40));
g12->addStudent(new Student("de Noel", "Golden", 80, 70, 70));
school->addClass(g12);
}
MainView::~MainView()
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment