casse-brick
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