11#include " terrarium.h"
22#include < iostream>
33#include < random>
4- Terrarium::Terrarium (mapType typMapy) {
5- typMapy = typMapy;
4+ Terrarium::Terrarium (mapType rodzajMapy) {
5+ typMapy = rodzajMapy;
6+ setUpInitialState ();
67 rozmiarPlanszy = 8 ;
8+ initializeFonts ();
9+ scoreText.setFont (arial);
10+ scoreText.setPosition (sf::Vector2f (rozmiarPlanszy*50 - 40 , 0 ));
11+ scoreText.setFillColor (sf::Color (0 , 0 , 0 , 255 ));
712 prepareTextures ();
8- setUpInitialState ();
913 setUpTiles ();
10- isEnd = false ;
11- typRuchu = moveType::right;
12- snakeLenght = 1 ;
14+
1315}
1416bool Terrarium::prepareTextures ()
1517{
@@ -23,6 +25,14 @@ bool Terrarium::prepareTextures()
2325 else
2426 return false ;
2527}
28+ bool Terrarium::initializeFonts ()
29+ {
30+ if (!arial.loadFromFile (" C:/Windows/Fonts/Arial.ttf" )) {
31+ std::cout << " Nie udalo sie wczytaæ czcionki\n " ;
32+ return false ;
33+ }
34+ return true ;
35+ }
2636bool Terrarium::readTexture (std::string name, sf::Texture *texture)
2737{
2838 if (!texture->loadFromFile (name)) {
@@ -33,57 +43,63 @@ bool Terrarium::readTexture(std::string name, sf::Texture *texture)
3343 return true ;
3444}
3545void Terrarium::setUpInitialState () {
36- tailPos = headPos = sf::Vector2i (3 ,3 );
46+ isEnd = false ;
47+ headPos = sf::Vector2i (3 ,3 );
48+ typRuchu = moveType::right;
49+ snakeLenght = 1 ;
3750}
3851void Terrarium::setUpTiles () {
3952 plansza.clear ();
40- std::vector<Pole*> pierwszyRzad;
41- for (int i = 0 ; i < rozmiarPlanszy; i++) {
42- pierwszyRzad.push_back (new Pole (&grassTexture, i*50 , 0 , false ));
43- }
44- plansza.push_back (pierwszyRzad);
45-
46- std::vector<Pole*> drugiRzad;
47- for (int i = 0 ; i < rozmiarPlanszy; i++) {
48- drugiRzad.push_back (new Pole (&grassTexture, i * 50 , 50 , false ));
49- }
50- plansza.push_back (drugiRzad);
51-
52- std::vector<Pole*> trzeciRzad;
53- for (int i = 0 ; i < rozmiarPlanszy; i++) {
54- trzeciRzad.push_back (new Pole (&grassTexture, i * 50 , 100 , false ));
55- }
56- plansza.push_back (trzeciRzad);
57-
58- std::vector<Pole*> czwartyRzad;
59- for (int i = 0 ; i < rozmiarPlanszy; i++) {
60- czwartyRzad.push_back (new Pole (&grassTexture, i * 50 , 150 , false ));
61- }
62- plansza.push_back (czwartyRzad);
63-
64- std::vector<Pole*> piatyRzad;
65- for (int i = 0 ; i < rozmiarPlanszy; i++) {
66- piatyRzad.push_back (new Pole (&grassTexture, i * 50 , 200 , false ));
67- }
68- plansza.push_back (piatyRzad);
69-
70- std::vector<Pole*> szostyRzad;
71- for (int i = 0 ; i < rozmiarPlanszy; i++) {
72- szostyRzad.push_back (new Pole (&grassTexture, i * 50 , 250 , false ));
73- }
74- plansza.push_back (szostyRzad);
53+ std::vector<Pole*> pierwszyRzad, drugiRzad, trzeciRzad, czwartyRzad, piatyRzad, szostyRzad, siodmyRzad, osmyRzad;;
54+ switch (typMapy)
55+ {
56+ case Terrarium::mapType::pusta:
57+ for (int i = 0 ; i < rozmiarPlanszy; i++) {
58+ pierwszyRzad.push_back (new Pole (&grassTexture, i * 50 , 0 , false ));
59+ }
60+ plansza.push_back (pierwszyRzad);
61+ for (int i = 0 ; i < rozmiarPlanszy; i++) {
62+ drugiRzad.push_back (new Pole (&grassTexture, i * 50 , 50 , false ));
63+ }
64+ plansza.push_back (drugiRzad);
65+ for (int i = 0 ; i < rozmiarPlanszy; i++) {
66+ trzeciRzad.push_back (new Pole (&grassTexture, i * 50 , 100 , false ));
67+ }
68+ plansza.push_back (trzeciRzad);
69+
70+ for (int i = 0 ; i < rozmiarPlanszy; i++) {
71+ czwartyRzad.push_back (new Pole (&grassTexture, i * 50 , 150 , false ));
72+ }
73+ plansza.push_back (czwartyRzad);
74+
75+ for (int i = 0 ; i < rozmiarPlanszy; i++) {
76+ piatyRzad.push_back (new Pole (&grassTexture, i * 50 , 200 , false ));
77+ }
78+ plansza.push_back (piatyRzad);
79+
80+ for (int i = 0 ; i < rozmiarPlanszy; i++) {
81+ szostyRzad.push_back (new Pole (&grassTexture, i * 50 , 250 , false ));
82+ }
83+ plansza.push_back (szostyRzad);
7584
76- std::vector<Pole*> siodmyRzad;
77- for (int i = 0 ; i < rozmiarPlanszy; i++) {
78- siodmyRzad.push_back (new Pole (&grassTexture, i * 50 , 300 , false ));
79- }
80- plansza.push_back (siodmyRzad);
85+
86+ for (int i = 0 ; i < rozmiarPlanszy; i++) {
87+ siodmyRzad.push_back (new Pole (&grassTexture, i * 50 , 300 , false ));
88+ }
89+ plansza.push_back (siodmyRzad);
8190
82- std::vector<Pole*> osmyRzad;
83- for (int i = 0 ; i < rozmiarPlanszy; i++) {
84- osmyRzad.push_back (new Pole (&grassTexture, i * 50 , 350 , false ));
91+ for (int i = 0 ; i < rozmiarPlanszy; i++) {
92+ osmyRzad.push_back (new Pole (&grassTexture, i * 50 , 350 , false ));
93+ }
94+ plansza.push_back (osmyRzad);
95+ break ;
96+ case Terrarium::mapType::krzyz:
97+ break ;
98+ case Terrarium::mapType::labirynt:
99+ break ;
100+ default :
101+ break ;
85102 }
86- plansza.push_back (osmyRzad);
87103}
88104void Terrarium::changeDirection (moveType nowyRuch) {
89105 typRuchu = nowyRuch;
@@ -113,6 +129,40 @@ void Terrarium::generateFruit()
113129 plansza[x][y]->setSprite (&fruitTexture);
114130}
115131
132+ void Terrarium::updateGameState (sf::RenderWindow *window, sf::Clock *gameClock, sf::Clock * fruitClock)
133+ {
134+ for (int i = 0 ; i < rozmiarPlanszy; i++) {
135+ for (int j = 0 ; j < rozmiarPlanszy; j++) {
136+ window->draw (plansza[i][j]->sprite );
137+ }
138+ }
139+ if (!isEnd) {
140+ if (gameClock->getElapsedTime () >= sf::milliseconds (150 )) {
141+ move ();
142+ gameClock->restart ();
143+ scoreText.setString (std::to_string (snakeLenght));
144+ }
145+ }
146+ else {
147+ std::cout << " Koniec gry!" << std::endl;
148+ std::cout << " Twoj wynik to " << snakeLenght << std::endl;
149+ scoreText.setString (" Koniec gry!\n Twoj wynik to " + std::to_string (snakeLenght));
150+ scoreText.setOrigin (sf::Vector2f (scoreText.getGlobalBounds ().width / 2 , scoreText.getGlobalBounds ().height / 2 ));
151+ scoreText.setPosition (sf::Vector2f (rozmiarPlanszy*50 / 2 , rozmiarPlanszy*50 / 2 ));
152+
153+ window->draw (scoreText);
154+ window->display ();
155+ window->close ();
156+ }
157+
158+ if (fruitClock->getElapsedTime () >= sf::seconds (3 )) {
159+ generateFruit ();
160+ fruitClock->restart ();
161+ }
162+
163+ window->draw (scoreText);
164+ }
165+
116166void Terrarium::move () {
117167 // std::cout << "X = " << headPos.x << std::endl;
118168 // std::cout << "Y = " << headPos.y << std::endl;
0 commit comments