-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpartida.cpp
More file actions
100 lines (77 loc) · 2.68 KB
/
partida.cpp
File metadata and controls
100 lines (77 loc) · 2.68 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
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
#include "partida.h"
void Partida::jogo(Pacman p, Fantasma f1, Fantasma f2, Fantasma f3, Fantasma f4, Fantasma f5, Labirinto lab){
int qtdPacDots = 0, maxPontos, auxDir;
char direcao;
char** labirinto;
char labAux[31][27];
//CRIAR UM LABIRINTO AUXILIAR, PARA EVITAR QUE O FANTASMA PEGUE PACDOTS
labirinto = lab.getLabirinto();
for(int i = 0; i < lab.getLinhas(); i++){
for(int j = 0; j < lab.getColunas(); j++){
labAux[i][j] = labirinto[i][j];
}
}
qtdPacDots = lab.contaPacDots(lab);
maxPontos = qtdPacDots;
p.setPontos(qtdPacDots);
setPerdeu(0);
while(!this->perdeu){
lab.imprimeLabirinto();
cout << "Direção (a - esquerda, d - direita, w - cima, s - baixo): ";
cin >> direcao;
p = lab.movimentaPacman(direcao, p, labAux);
//DEFININDO MOVIMENTO DOS FANTASMAS
random_device rd;
mt19937 gen(rd());
uniform_int_distribution<>dist(1,4);
auxDir = dist(gen);
direcao = decideDirecao(auxDir);
f1 = lab.movimentaFantasma(direcao, f1, labAux);
auxDir = dist(gen);
direcao = decideDirecao(auxDir);
f2 = lab.movimentaFantasma(direcao, f2, labAux);
auxDir = dist(gen);
direcao = decideDirecao(auxDir);
f3 = lab.movimentaFantasma(direcao, f3, labAux);
auxDir = dist(gen);
direcao = decideDirecao(auxDir);
f4 = lab.movimentaFantasma(direcao, f4, labAux);
auxDir = dist(gen);
direcao = decideDirecao(auxDir);
f5 = lab.movimentaFantasma(direcao, f5, labAux);
//VERIFICA SE O JOGO ACABOU
if(p.getPontos() == 0){
lab.imprimeLabirinto();
cout << "Congratulations! Pontos = " << maxPontos << endl;
break;
}
if((p.getX() == f1.getX() && p.getY() == f1.getY()) || (p.getX() == f2.getX() && p.getY() == f2.getY()) || (p.getX() == f3.getX() && p.getY() == f3.getY()) || (p.getX() == f4.getX() && p.getY() == f4.getY()) || (p.getX() == f5.getX() && p.getY() == f5.getY())){
lab.atualizaLabirinto(p.getX(), p.getY(), 'X');
lab.imprimeLabirinto();
setPerdeu(1);
cout << "Game over! Pontos = " << maxPontos - p.getPontos() << endl;
}
}
}
void Partida::setPerdeu(int valor){
if(valor == 1)
this->perdeu = 1;
else
this->perdeu = 0;
}
char Partida::decideDirecao(int dir){
char direcao;
if(dir == 1)
direcao = 'W';
else if(dir == 2)
direcao = 'A';
else if(dir == 3)
direcao = 'S';
else
direcao = 'D';
return direcao;
}
Partida::Partida(){
}
Partida::~Partida(){
}