From 52ce2907912a30df00729248893386cb2af02743 Mon Sep 17 00:00:00 2001 From: ZHAO Fei Date: Sun, 20 Mar 2016 11:47:18 +0100 Subject: [PATCH] =?UTF-8?q?ins=C3=A9rer=20message=20de=20commit=20ici?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stm32/include/simul/objet.h | 10 +- stm32/include/simul/table.h | 2 +- stm32/src/simul/objet.cpp | 240 +++++++++++++++++++++++++++++++++--- stm32/src/simul/table.cpp | 189 +++++++++++++++++++++------- 4 files changed, 372 insertions(+), 69 deletions(-) diff --git a/stm32/include/simul/objet.h b/stm32/include/simul/objet.h index d01bd2db..d6a458c5 100644 --- a/stm32/include/simul/objet.h +++ b/stm32/include/simul/objet.h @@ -15,9 +15,17 @@ class Objet /**@brief Énumération permettant de classifier les différents objets */ enum Type { + ANY, + SHELL, /*!< Représente un coquillage*/ - SANDCUBE /*!< Représente un cube de chateau de sable*/ + SANDCUBE, /*!< Représente un cube de chateau de sable*/ + SANDCONE, /*!< Représente un cone de chateau de sable*/ + SANDCYLINDER, /*!< Représente un cylinder de chateau de sable*/ + PORTE, /*!< Représente la porte des cabine de plage*/ + MER, /*!< Représente la mer*/ + POISSON, /*!< Représente le poisson*/ + FILET/*!< Représente le filet*/ }; /**@brief Constructeur de la classe permettant de construire directement un objet de type type à la position p avec pour angle initial theta. */ /**@param world Pointer vers le b2World dans lequel va être créé notre objet*/ diff --git a/stm32/include/simul/table.h b/stm32/include/simul/table.h index 1945791f..5aaa2c30 100644 --- a/stm32/include/simul/table.h +++ b/stm32/include/simul/table.h @@ -63,7 +63,7 @@ public slots: public: static const int tableWidth = 3000; - static const int tableHeight = 2000; + static const int tableHeight = 2500; static b2AABB getWorldAABB(); //Bougie p_bougies[20]; //Bougie p_balles[20]; diff --git a/stm32/src/simul/objet.cpp b/stm32/src/simul/objet.cpp index 6ed1ac01..866d7b6b 100644 --- a/stm32/src/simul/objet.cpp +++ b/stm32/src/simul/objet.cpp @@ -14,6 +14,38 @@ Objet::Objet(b2World & world, Position p, Type type, Angle theta, QColor color) switch(type) { case SHELL: + { + b2CircleShape circle; + b2FixtureDef fixtureDef; + fixtureDef.shape = &circle; + circle.m_radius = 0.381f; + circle.m_p.Set(0.,0.); + fixtureDef.density = 1.0f; + fixtureDef.friction = 0.4f; + fixtureDef.filter.maskBits = 0x3; + fixtureDef.filter.categoryBits = 0x1; + body->CreateFixture(&fixtureDef); + + radius = circle.m_radius; + break; + } + case SANDCONE: + { + b2CircleShape circle; + b2FixtureDef fixtureDef; + fixtureDef.shape = &circle; + circle.m_radius = 0.29f; + circle.m_p.Set(0.,0.); + fixtureDef.density = 1.0f; + fixtureDef.friction = 0.4f; + fixtureDef.filter.maskBits = 0x3; + fixtureDef.filter.categoryBits = 0x1; + body->CreateFixture(&fixtureDef); + + radius = circle.m_radius; + break; + } + case SANDCYLINDER: { b2CircleShape circle; b2FixtureDef fixtureDef; @@ -52,6 +84,69 @@ Objet::Objet(b2World & world, Position p, Type type, Angle theta, QColor color) radius = 0.58f; break; + } + case PORTE: + { b2Vec2 vertices[4]; + vertices[0].Set(0.0f, -0.1f); + vertices[1].Set(0.0f, 0.0f); + vertices[2].Set(-1.2f, 0.0f); + vertices[3].Set(-1.2f, -0.1f); + + int32 count = 4; + b2PolygonShape polygon; + polygon.Set(vertices, count); + + b2FixtureDef fixtureDef; + fixtureDef.shape = &polygon; + fixtureDef.density = 1.0f; + fixtureDef.friction = 0.4f; + fixtureDef.filter.maskBits = 0x3; + fixtureDef.filter.categoryBits = 0x1; + body->CreateFixture(&fixtureDef); + + radius = 1.2f; + break; + + + + + + } + case MER: + { b2Vec2 vertices[4]; + vertices[0].Set(0.0f, -2.32f); + vertices[1].Set(0.0f, 0.0f); + vertices[2].Set(-5.1f, 0.0f); + vertices[3].Set(-5.1f, -2.32f); + + int32 count = 4; + b2PolygonShape polygon; + polygon.Set(vertices, count); + + b2FixtureDef fixtureDef; + fixtureDef.shape = &polygon; + fixtureDef.density = 1.0f; + fixtureDef.friction = 0.4f; + fixtureDef.filter.maskBits = 0x3; + fixtureDef.filter.categoryBits = 0x1; + body->CreateFixture(&fixtureDef); + + radius = 5.1f; + break; + + + } + case POISSON: + { + break; + + + } + case FILET: + { + break; + + } } } @@ -65,28 +160,133 @@ void Objet::paint(QPainter &pa) { switch (type) { - case SHELL: - { - pa.setBrush(p_color); - pa.setPen(p_color); - - pa.drawEllipse(QPoint(p.x,p.y),38,38); - break; - } - case SANDCUBE: - { - p_color = QColor(232, 140, 0); - pa.setBrush(p_color); - pa.setPen(p_color); - - pa.drawRect(-29, -29, 58, 58); - break; - } - default: - break; + case SHELL: + { + pa.setBrush(p_color); + pa.setPen(p_color); + + pa.drawEllipse(QPoint(p.x,p.y),38.1,38.1); + break; + } +case SANDCONE: +{ QConicalGradient conicalGradient(QPoint(p.x,p.y), 0); + conicalGradient.setColorAt(0.2,QColor(232, 140, 0)); + conicalGradient.setColorAt(0.9, Qt::black); + pa.setBrush(conicalGradient); + pa.drawEllipse(QPoint(p.x,p.y), 29, 29); + break; +} +case SANDCYLINDER: +{ + pa.setBrush(p_color); + pa.setPen(p_color); + pa.drawEllipse(QPoint(p.x,p.y),29,29); + break; +} + case SANDCUBE: + {p_color = QColor(232, 140, 0); + pa.setBrush(p_color); + pa.setPen(p_color); + + pa.drawRect(p.x, p.y,58,58); + p_color = QColor(0, 0, 0); + pa.setBrush(p_color); + pa.setPen(p_color); + pa.drawLine(QPointF(p.x, p.y), QPointF(p.x+58, p.y)); + pa.drawLine(QPointF(p.x+58, p.y),QPointF (p.x+58, p.y+58)); + pa.drawLine(QPointF(p.x+58, p.y+58), QPointF(p.x, p.y+58)); + pa.drawLine(QPointF(p.x, p.y+58), QPointF(p.x, p.y)); + break;/*pa.translate(p.x, p.y); + p_color = QColor(232, 140, 0); + pa.setBrush(p_color); + pa.setPen(p_color); + pa.drawRect(592,842, 58, 58); + pa.drawRect(650,842, 58, 58); + pa.drawRect(592,900, 58, 58); + pa.drawRect(650,900, 58, 58); + p_color = QColor(0, 0, 0); + pa.setBrush(p_color); + pa.setPen(p_color); + pa.drawLine(QPointF(592,842), QPointF(708,842)); + pa.drawLine(QPointF(592,842), QPointF(592,958)); + pa.drawLine(QPointF(592,958), QPointF(708,958)); + pa.drawLine(QPointF(708,958), QPointF(708,842)); + pa.drawLine(QPointF(650,842), QPointF(650,958)); + pa.drawLine(QPointF(592,900), QPointF(708,900)); + pa.translate(-p.x, -p.y); + break;*/ } - return; +case PORTE: +{ + pa.setBrush(p_color); + pa.setPen(p_color); + pa.translate(p.x+240, p.y+0); + pa.rotate(8); + pa.drawRect(0, 0, 120, 10); + pa.rotate(-8); + pa.translate(300, 0); + pa.rotate(8); + pa.drawRect(0, 0, 120, 10); + pa.rotate(-8); + pa.translate(-p.x-540, 0); + break; + } +case MER: +{ p_color = QColor(135,206,250); + pa.setBrush(p_color); + pa.setPen(p_color); + + pa.drawRect(498,2000, 410, 232); + pa.drawRect(2110,2000, 410, 232); + + break; + + + +} +case POISSON: +{ + pa.setBrush(p_color); + pa.setPen(p_color); + pa.translate(p.x, p.y); + pa.drawEllipse(0,0,82,50); + pa.translate(130, 30); + pa.rotate(80); + pa.drawEllipse(0,0,82,50); + pa.translate(130, 40); + pa.rotate(80); + pa.drawEllipse(0,0,82,50); + pa.translate(130, 50); + pa.rotate(80); + pa.drawEllipse(0,0,82,50); + pa.rotate(-240); + + pa.translate(-p.x-390, -p.y-120); + break; + + +} +case FILET: +{ pa.translate(p.x, p.y); + QPen pen; + pen.setColor(QColor(0, 0, 0)); + QBrush brush(Qt::black); + brush.setStyle(Qt::Dense5Pattern); + pa.setPen(pen); + pa.setBrush(brush); + pa.drawRect(0, 0, 1144, 232); + pa.translate(-p.x, -p.y); + break; + +} + + default: + break; +} +return; +} + void Objet::updatePos() { diff --git a/stm32/src/simul/table.cpp b/stm32/src/simul/table.cpp index 2e1e2610..ea1335a2 100644 --- a/stm32/src/simul/table.cpp +++ b/stm32/src/simul/table.cpp @@ -141,56 +141,151 @@ void Table::createObjects() { removeAllObjects(); - #ifdef COUPE_2016 - #define SHELL_2 - #ifdef SHELL_1 - //Coquillages neutres - objets.push_back(new Objet(world, Position(2800.,1250.), Objet::SHELL, 0, QColor(241, 240, 234))); - objets.push_back(new Objet(world, Position(2800.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); - objets.push_back(new Objet(world, Position(1500.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); - objets.push_back(new Objet(world, Position(1500.,1850.), Objet::SHELL, 0, QColor(241, 240, 234))); - objets.push_back(new Objet(world, Position(200.,1250.), Objet::SHELL, 0, QColor(241, 240, 234))); - objets.push_back(new Objet(world, Position(200.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); - - //Coquillages verts - objets.push_back(new Objet(world, Position(2100.,1450.), Objet::SHELL, 0, QColor(54, 103, 53))); - objets.push_back(new Objet(world, Position(1200.,1650.), Objet::SHELL, 0, QColor(54, 103, 53))); - - //Coquillages violets - objets.push_back(new Objet(world, Position(1800.,1650.), Objet::SHELL, 0, QColor(132, 76, 130))); - objets.push_back(new Objet(world, Position(900.,1450.), Objet::SHELL, 0, QColor(132, 76, 130))); +#ifdef COUPE_2016 - #endif - #ifdef SHELL_2 - //Coquillages neutres - objets.push_back(new Objet(world, Position(2800.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); - objets.push_back(new Objet(world, Position(1500.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); - objets.push_back(new Objet(world, Position(1500.,1850.), Objet::SHELL, 0, QColor(241, 240, 234))); - objets.push_back(new Objet(world, Position(200.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); - - //Coquillages verts - objets.push_back(new Objet(world, Position(2800.,1250.), Objet::SHELL, 0, QColor(54, 103, 53))); - objets.push_back(new Objet(world, Position(2100.,1450.), Objet::SHELL, 0, QColor(54, 103, 53))); - objets.push_back(new Objet(world, Position(1800.,1650.), Objet::SHELL, 0, QColor(54, 103, 53))); - - - //Coquillages violets - objets.push_back(new Objet(world, Position(900.,1450.), Objet::SHELL, 0, QColor(132, 76, 130))); - objets.push_back(new Objet(world, Position(1200.,1650.), Objet::SHELL, 0, QColor(132, 76, 130))); - objets.push_back(new Objet(world, Position(200.,1250.), Objet::SHELL, 0, QColor(132, 76, 130))); - #endif - #ifdef SHELL_3 - //Coquillages verts - objets.push_back(new Objet(world, Position(2300.,1250.), Objet::SHELL, 0, QColor(54, 103, 53))); - objets.push_back(new Objet(world, Position(700.,1550.), Objet::SHELL, 0, QColor(54, 103, 53))); + objets.push_back(new Objet(world, Position(928.,2000.), Objet::FILET, 0, QColor(255, 0, 0))); - //Coquillages violets - objets.push_back(new Objet(world, Position(700.,1250.), Objet::SHELL, 0, QColor(132, 76, 130))); - objets.push_back(new Objet(world, Position(2300.,1550.), Objet::SHELL, 0, QColor(132, 76, 130))); - #endif - #endif - } + //SANDCUBE + objets.push_back(new Objet(world, Position(592.,842.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + objets.push_back(new Objet(world, Position(650.,842.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + objets.push_back(new Objet(world, Position(592.,900.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + objets.push_back(new Objet(world, Position(650.,900.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + + + objets.push_back(new Objet(world, Position(2292.,842.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + objets.push_back(new Objet(world, Position(2350.,842.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + objets.push_back(new Objet(world, Position(2292.,900.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + objets.push_back(new Objet(world, Position(2350.,900.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + + + objets.push_back(new Objet(world, Position(1026.,0.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + + objets.push_back(new Objet(world, Position(1084.,0.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + + objets.push_back(new Objet(world, Position(1026.,58.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + + objets.push_back(new Objet(world, Position(1084.,58.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + + objets.push_back(new Objet(world, Position(1860.,8.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + objets.push_back(new Objet(world, Position(1918.,8.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + objets.push_back(new Objet(world, Position(1860.,58.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + objets.push_back(new Objet(world, Position(1918.,58.), Objet::SANDCUBE, 0, QColor(232, 140, 0))); + + +//SANDCYLINDER + objets.push_back(new Objet(world, Position(650.,900.), Objet::SANDCYLINDER, 0, QColor(232, 140, 0))); + objets.push_back(new Objet(world, Position(2350.,900.), Objet::SANDCYLINDER, 0, QColor(232, 140, 0))); + /* objets.push_back(new Objet(world, Position(884.,58.), Objet::SANDCYLINDER, 0, QColor(232, 140, 0))); + objets.push_back(new Objet(world, Position(2118.,58.), Objet::SANDCYLINDER, 0, QColor(232, 140, 0)));*/ + //SANDCONE + objets.push_back(new Objet(world, Position(650.,900.), Objet::SANDCONE, 0, QColor(232, 140, 0))); + objets.push_back(new Objet(world, Position(2350.,900.), Objet::SANDCONE, 0, QColor(232, 140, 0))); + /*objets.push_back(new Objet(world, Position(884.,58.), Objet::SANDCONE, 0, QColor(232, 140, 0))); + objets.push_back(new Objet(world, Position(2118.,58.), Objet::SANDCONE, 0, QColor(232, 140, 0)));*/ + + //PORTE + objets.push_back(new Objet(world, Position(0.,0.), Objet::PORTE, 0, QColor(132, 76, 130))); + objets.push_back(new Objet(world, Position(2100.,0.), Objet::PORTE, 0, QColor(54, 103, 53))); + objets.push_back(new Objet(world, Position(0.,0.), Objet::MER, 0, QColor(135,206,250))); + //POISSON + objets.push_back(new Objet(world, Position(650.,2020.), Objet::POISSON, 0, QColor(132, 76, 130))); + objets.push_back(new Objet(world, Position(2700.,1985.), Objet::POISSON, 0, QColor(54, 103, 53))); + + +#define SHELL_2 +#ifdef SHELL_1 + //Coquillages neutres + objets.push_back(new Objet(world, Position(2800.,1250.), Objet::SHELL, 0, QColor(241, 240, 234))); + objets.push_back(new Objet(world, Position(2800.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); + objets.push_back(new Objet(world, Position(1500.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); + objets.push_back(new Objet(world, Position(1500.,1850.), Objet::SHELL, 0, QColor(241, 240, 234))); + objets.push_back(new Objet(world, Position(200.,1250.), Objet::SHELL, 0, QColor(241, 240, 234))); + objets.push_back(new Objet(world, Position(200.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); + + //Coquillages verts + objets.push_back(new Objet(world, Position(2100.,1450.), Objet::SHELL, 0, QColor(54, 103, 53))); + objets.push_back(new Objet(world, Position(1200.,1650.), Objet::SHELL, 0, QColor(54, 103, 53))); + + //Coquillages violets + objets.push_back(new Objet(world, Position(1800.,1650.), Objet::SHELL, 0, QColor(132, 76, 130))); + objets.push_back(new Objet(world, Position(900.,1450.), Objet::SHELL, 0, QColor(132, 76, 130))); + +#endif +#ifdef SHELL_2 + //Coquillages neutres + objets.push_back(new Objet(world, Position(2800.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); + objets.push_back(new Objet(world, Position(1500.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); + objets.push_back(new Objet(world, Position(1500.,1850.), Objet::SHELL, 0, QColor(241, 240, 234))); + objets.push_back(new Objet(world, Position(200.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); + + //Coquillages verts + objets.push_back(new Objet(world, Position(2800.,1250.), Objet::SHELL, 0, QColor(54, 103, 53))); + objets.push_back(new Objet(world, Position(2100.,1450.), Objet::SHELL, 0, QColor(54, 103, 53))); + objets.push_back(new Objet(world, Position(1800.,1650.), Objet::SHELL, 0, QColor(54, 103, 53))); + + + //Coquillages violets + objets.push_back(new Objet(world, Position(900.,1450.), Objet::SHELL, 0, QColor(132, 76, 130))); + objets.push_back(new Objet(world, Position(1200.,1650.), Objet::SHELL, 0, QColor(132, 76, 130))); + objets.push_back(new Objet(world, Position(200.,1250.), Objet::SHELL, 0, QColor(132, 76, 130))); +#endif +#ifdef SHELL_3 + //Coquillages neutres + objets.push_back(new Objet(world, Position(2800.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); + objets.push_back(new Objet(world, Position(2300.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); + objets.push_back(new Objet(world, Position(700.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); + objets.push_back(new Objet(world, Position(200.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); + //Coquillages verts + objets.push_back(new Objet(world, Position(2800.,1250.), Objet::SHELL, 0, QColor(54, 103, 53))); + objets.push_back(new Objet(world, Position(2300.,1250.), Objet::SHELL, 0, QColor(54, 103, 53))); + objets.push_back(new Objet(world, Position(1800.,1650.), Objet::SHELL, 0, QColor(54, 103, 53))); + + //Coquillages violets + objets.push_back(new Objet(world, Position(1200.,1650.), Objet::SHELL, 0, QColor(132, 76, 130))); + objets.push_back(new Objet(world, Position(700.,1250.), Objet::SHELL, 0, QColor(132, 76, 130))); + objets.push_back(new Objet(world, Position(200.,1250.), Objet::SHELL, 0, QColor(132, 76, 130))); + +#endif +#ifdef SHELL_4 + //Coquillages neutres + objets.push_back(new Objet(world, Position(2300.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); + objets.push_back(new Objet(world, Position(1800.,1650.), Objet::SHELL, 0, QColor(241, 240, 234))); + objets.push_back(new Objet(world, Position(1200.,1650.), Objet::SHELL, 0, QColor(241, 240, 234))); + objets.push_back(new Objet(world, Position(700.,1550.), Objet::SHELL, 0, QColor(241, 240, 234))); + + //Coquillages verts + objets.push_back(new Objet(world, Position(2800.,1250.), Objet::SHELL, 0, QColor(54, 103, 53))); + objets.push_back(new Objet(world, Position(2800.,1550.), Objet::SHELL, 0, QColor(54, 103, 53))); + objets.push_back(new Objet(world, Position(2300.,1250.), Objet::SHELL, 0, QColor(54, 103, 53))); + + + //Coquillages violets + objets.push_back(new Objet(world, Position(700.,1250.), Objet::SHELL, 0, QColor(132, 76, 130))); + objets.push_back(new Objet(world, Position(200.,1250.), Objet::SHELL, 0, QColor(132, 76, 130))); + objets.push_back(new Objet(world, Position(200.,1550.), Objet::SHELL, 0, QColor(132, 76, 130))); +#endif +#ifdef SHELL_5 + //Coquillages neutres + objets.push_back(new Objet(world, Position(2300.,1850.), Objet::SHELL, 0, QColor(241, 240, 234))); + objets.push_back(new Objet(world, Position(700.,1850.), Objet::SHELL, 0, QColor(241, 240, 234))); + + //Coquillages verts + objets.push_back(new Objet(world, Position(2800.,1250.), Objet::SHELL, 0, QColor(54, 103, 53))); + objets.push_back(new Objet(world, Position(2800.,1550.), Objet::SHELL, 0, QColor(54, 103, 53))); + objets.push_back(new Objet(world, Position(2300.,1250.), Objet::SHELL, 0, QColor(54, 103, 53))); + objets.push_back(new Objet(world, Position(700.,1550.), Objet::SHELL, 0, QColor(54, 103, 53))); + + + //Coquillages violets + objets.push_back(new Objet(world, Position(700.,1250.), Objet::SHELL, 0, QColor(132, 76, 130))); + objets.push_back(new Objet(world, Position(200.,1250.), Objet::SHELL, 0, QColor(132, 76, 130))); + objets.push_back(new Objet(world, Position(200.,1550.), Objet::SHELL, 0, QColor(132, 76, 130))); + objets.push_back(new Objet(world, Position(2300.,1550.), Objet::SHELL, 0, QColor(132, 76, 130))); + +#endif +#endif +} void Table::removeAllObjects() { -- GitLab