-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathScreen.cpp
152 lines (120 loc) · 2.67 KB
/
Screen.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>
#include "Screen.h"
#include "Entity.h"
#include "Player.h"
#include "Funzioni.h"
#include "Bullet.h"
using namespace std;
Screen::Screen(int width, int height, int difficolta)
{
this->width = width;
this->height = height;
this->difficolta = difficolta-1; // ('-1' perchè quando viene generato il livello la difficoltà viene incrementata di 1)
level = generateLevel(difficolta);
srand((int)time(0));
}
p_livello Screen::generateLevel(int difficolta)
{
// - Funzione che genera i contenuti del livello attuale -
p_livello ret = new livello;
ret->next = NULL;
ret->prev = NULL;
ret->p = Platform();
ret->p.generate(difficolta);
ret->b = Bullet();
ret->money = Bonus();
ret->money.generateBonus(ret->p, difficolta);
ret->enemiesList = Enemy();
ret->enemiesList.generateEnemies((difficolta / 2) + 1, ret->p);
this->difficolta++;
return ret;
}
void Screen::nextLevel()
{
// - Funzione che permette la visualizzazione "in avanti" di un livello precedentemente generato -
Clear();
if (level->next != NULL)
level = level->next;
else
{
p_livello tmp = generateLevel(difficolta);
tmp->prev = level;
level->next = tmp;
level = level->next;
}
}
bool Screen::prevLevel()
{
// - Funzione che permette la visualizzazione "all'indietro" di un livello precedentemente generato -
Clear();
if (level->prev != NULL)
{
level = level->prev;
return true;
}
else
return false;
}
void Screen::print()
{
// - Funzione che stampa lo spazio di gioco
PrintAt(0, 0, (char)201);
for (int i = 0; i < width; i++)
PrintAt(i+1, 0, (char)205);
PrintAt(width+1, 0, (char)187);
for (int i = 0; i < height; i++)
{
PrintAt(0, i+1, (char)186);
PrintAt(width+1, i+1, (char)186);
}
cout << endl << (char)200;
for (int i = 0; i < width; i++)
cout << char(205);
cout << (char)188;
level->money.print();
level->b.print();
level->enemiesList.print(level->p);
level->p.print();
}
int Screen::getDifficolta()
{
return difficolta;
}
void Screen::setDifficolta(int diff)
{
difficolta = diff;
}
Platform Screen::getPlatforms()
{
return level->p;
}
Bullet Screen::getBullet()
{
return level->b;
}
void Screen::setBullet(Bullet b)
{
this->level->b = b;
}
Bonus Screen::getBonus()
{
return level->money;
}
void Screen::setBonus(Bonus b)
{
this->level->money = b;
}
Enemy Screen::getEnemy()
{
return level->enemiesList;
}
void Screen::setEnemy(Enemy e)
{
this->level->enemiesList = e;
}