casse-brick latest
Ce projet est réalisé dans le cadre du cours de Programmation Avancée en M1 Informatique de l'université de Strasbourg.
Loading...
Searching...
No Matches
grille.cpp
Go to the documentation of this file.
1//
2// Created by maxime on 02/05/24.
3//
4
5#include "grille.h"
6
7
8Grille::Grille(int windowWidth, int windowHeigh, TYPE type)
9{
10 switch (type) {
11 case RECTANGLE: {
12 int realWinWidth = windowWidth - (2 * 10);
13 int rectWidth, rectHeight;
14 rectWidth = realWinWidth / 20;
15 rectHeight = windowHeigh / (3 * 8);
16
17 for (int y = 10; y < rectHeight * 8; y += rectHeight) {
18 std::vector<std::shared_ptr<Brique>> v1;
19 for (int x = 10; x < realWinWidth; x += rectWidth) {
20 v1.push_back(std::make_shared<Rectangle>(x,y,rectWidth,rectHeight));
21 }
22 grille.push_back(v1);
23 }
24 } break;
25
26 case HEXAGON: {
27 int usableWidth = windowWidth - (2 * 10);
28 int hexWidth = windowWidth / 20;
29 int hexSize = hexWidth / 2;
30 int hexHeight = sqrt(3.0) * hexSize;
31
32 int startPos = 10 + hexSize; // center of the hexagon
33
34 int ecart = hexWidth - 5;
35
36 for (int y = startPos; y < hexWidth * 5; y += hexWidth) {
37 std::vector<std::shared_ptr<Brique>> v1;
38 for (int x = startPos+3; x < windowWidth - hexSize; x += (2 * hexWidth)-10) {
39 v1.push_back(std::make_shared<Hexagon>(x,y,hexWidth,hexWidth+4,6));
40 }
41 grille.push_back(v1);
42 std::vector<std::shared_ptr<Brique>> v2;
43 for (int x = startPos-3; x < windowWidth - hexSize; x += (2 * hexWidth)-10) {
44 v2.push_back(std::make_shared<Hexagon>( x + hexWidth, y + hexWidth / 2, hexWidth, hexWidth + 4,6));
45 }
46 grille.push_back(v2);
47 }
48 }break;
49
50 case TRIANGLE: {
51 int startPos = 10; // éviter la largeur des murs
52 int triHeight = windowHeigh/20, triWidth = (windowWidth)/20;
53
54 for (int y=startPos; y<5*triWidth; y+=triWidth) {
55 std::vector<std::shared_ptr<Brique>> v1;
56 for (int x=startPos; x<windowWidth-20-triWidth; x+=triWidth) {
57 v1.push_back(std::make_shared<Triangle>(x, y, triWidth, triWidth, true));
58 v1.push_back(std::make_shared<Triangle>(x+triWidth/2, y, triWidth, triWidth, false));
59 }
60 grille.push_back(v1);
61 }
62 }
63 }
64}
65
66void Grille::render(std::shared_ptr<SDL_Renderer> renderer) {
67 for (const auto& row : grille) {
68 for (const auto& brique : row) {
69 if (!brique->collided){
70 brique->render(renderer,{255,0,0,255},{255,0,0,255});
71 }
72 }
73 }
74}
TYPE
Definition brique.h:25
@ TRIANGLE
Definition brique.h:28
@ HEXAGON
Definition brique.h:27
@ RECTANGLE
Definition brique.h:26
std::vector< std::vector< std::shared_ptr< Brique > > > grille
The grid of blocks/bricks.
Definition grille.h:24
void render(std::shared_ptr< SDL_Renderer > renderer)
Renders the grid of blocks/bricks on the screen.
Definition grille.cpp:66
Grille(int windowWidth, int windowHeight, TYPE type)
Constructs a new Grille object with specified parameters.
Definition grille.cpp:8