-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlevelthree.cc
More file actions
57 lines (52 loc) · 1.97 KB
/
levelthree.cc
File metadata and controls
57 lines (52 loc) · 1.97 KB
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
#include "levelthree.h"
using namespace std;
LevelThree::LevelThree(vector <vector <Cell>> * bd, string path):
Difficulty{bd, path}
{
generationSequence.emplace_back(Shape::Iblock);
generationSequence.emplace_back(Shape::Jblock);
generationSequence.emplace_back(Shape::Oblock);
generationSequence.emplace_back(Shape::Lblock);
for(int i=0; i<2; ++i) generationSequence.emplace_back(Shape::Sblock);
for(int i=0; i<2; ++i) generationSequence.emplace_back(Shape::Zblock);
generationSequence.emplace_back(Shape::Tblock);
}
Block LevelThree::newBlock(){
if(loadPath != ""){
if(generationSequence.size() != 0){
counter %= generationSequence.size();
return Block(generationSequence[counter++], 1, 3, 0, Level::lvl0);
} else {
return Block();
}
} return Block(generationSequence[rand() % generationSequence.size()],
1, 3, 0, Level::lvl3);
}
void LevelThree::setLoadPath(std::string path){
loadPath = path; counter = 0;
generationSequence.clear();
try{
std::ifstream reader(loadPath);
char c = '0';
while(reader >> c){
Shape s = Shape::Iblock;
switch(c){
case Content::I : s = Shape::Iblock; break;
case Content::J : s = Shape::Jblock; break;
case Content::O : s = Shape::Oblock; break;
case Content::L : s = Shape::Lblock; break;
case Content::S : s = Shape::Sblock; break;
case Content::Z : s = Shape::Zblock; break;
case Content::T : s = Shape::Tblock; break;
} generationSequence.emplace_back(s);
}
} catch(std::runtime_error &e){
generationSequence.emplace_back(Shape::Iblock);
generationSequence.emplace_back(Shape::Jblock);
generationSequence.emplace_back(Shape::Oblock);
generationSequence.emplace_back(Shape::Lblock);
for(int i=0; i<2; ++i) generationSequence.emplace_back(Shape::Sblock);
for(int i=0; i<2; ++i) generationSequence.emplace_back(Shape::Zblock);
generationSequence.emplace_back(Shape::Tblock);
}
}