Skip to content

Commit 4cc1bbf

Browse files
committed
refatoring
1 parent 656e94d commit 4cc1bbf

File tree

3 files changed

+70
-68
lines changed

3 files changed

+70
-68
lines changed

Hanoi/generateDisks.hpp

+19-22
Original file line numberDiff line numberDiff line change
@@ -2,55 +2,52 @@
22

33
/** Função que gera os discos e as jogadas */
44

5-
int getDiscos() {
6-
int discos = 1;
5+
int getDisks() {
6+
int disks = 1;
77

88
cout << "O desafio deste jogo é mover todos os discos da haste de origem para a haste de destino \nutilizando uma haste auxiliar (haste trabalho) e atendendo a algumas regras: " << endl;
99
cout << "\n- Somente um disco pode ser movido por vez" << endl;
1010
cout << "- Um disco maior nunca pode ser posicionado sobre um disco menor" << endl << endl;
1111

12-
13-
1412
do {
15-
16-
if(discos < 1 || discos > 8) {
13+
if(disks < 1 || disks > 8) {
1714
system("cls");
18-
cout << discos << " não é um número válido!" << endl << endl;
15+
cout << disks << " não é um número válido!" << endl << endl;
1916
}
2017

2118
cout << "Escolha o número de discos (1 a 8): ";
22-
cin >> discos;
19+
cin >> disks;
2320
fflush(stdin);
2421

25-
} while(discos < 1 || discos > 8);
22+
} while(disks < 1 || disks > 8);
2623

27-
return discos;
24+
return disks;
2825
}
2926

30-
int getJogadas(Stack *stack, int discos) {
31-
for(int i = discos; i >= 1; i--) {
27+
int getJogadas(Stack *stack, int disks) {
28+
for(int i = disks; i >= 1; i--) {
3229
push(stack, i);
3330
}
3431

35-
int dificuldade = 1;
32+
int difficulty = 1;
3633

3734
do {
3835
system("cls");
39-
if(dificuldade < 0 || dificuldade > 1) {
40-
cout << dificuldade << " não é um número válido!" << endl << endl;
36+
if(difficulty < 0 || difficulty > 1) {
37+
cout << difficulty << " não é um número válido!" << endl << endl;
4138
}
4239

43-
cout << "Selecione a dificuldade: " << endl;
40+
cout << "Selecione a difficulty: " << endl;
4441
cout << "[0] Fácil " << endl;
4542
cout << "[1] Normal " << endl;
46-
cin >> dificuldade;
43+
cin >> difficulty;
4744
fflush(stdin);
4845

49-
} while(dificuldade < 0 || dificuldade > 1);
46+
} while(difficulty < 0 || difficulty > 1);
5047

51-
if(dificuldade == 1) {
52-
return (pow(2, discos) - 1);
53-
} else if(dificuldade == 0) {
54-
return (pow(2, discos) - 1) * 2;
48+
if(difficulty == 1) {
49+
return (pow(2, disks) - 1);
50+
} else if(difficulty == 0) {
51+
return (pow(2, disks) - 1) * 2;
5552
}
5653
}

Hanoi/play.hpp

+49-44
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,50 @@
11
#include <cstdio>
22

3-
/** Função que executa as jogadas */
3+
enum TYPE {
4+
ORIGIN,
5+
DESTINY,
6+
WORK,
7+
};
48

5-
bool Jogada(Stack *H1, Stack *H2, Stack *H3) {
6-
string escolha;
7-
string enviar;
9+
void logic(Stack context, Stack helper1, Stack helper2) {
10+
11+
12+
}
13+
14+
bool playLogic(Stack *leftStack, Stack *centerStack, Stack *rightStack) {
15+
string firstChoice;
16+
string secondChoice;
817
int popValue;
918

1019
cout << " [O]rigem [T]rabalho [D]estino" << endl;
1120
cout << "\nEscolha a pilha de onde deseja retirar um disco: ";
12-
getline(cin, escolha);
21+
getline(cin, firstChoice);
1322
fflush(stdin);
1423

1524

16-
if(escolha == "o" || escolha == "O") {
17-
if(underflow(H1))
25+
26+
if(firstChoice == "o" || firstChoice == "O") {
27+
if(underflow(leftStack)) {
1828
return false;
29+
}
1930

2031
cout << "\nVocê escolheu remover um disco da ORIGEM!" << endl;
2132
cout << "\nEscolha para onde deseja enviar o disco: ";
22-
getline(cin, enviar);
33+
getline(cin, secondChoice);
2334
fflush(stdin);
2435

25-
if(enviar == "t" || enviar == "T") {
26-
///Pop na H1 e PUSH na H2
27-
if(peek(H1) < peek(H2) || underflow(H2)) {
28-
popValue = pop(H1);
29-
push(H2, popValue);
36+
if(secondChoice == "t" || secondChoice == "T") {
37+
if(peek(leftStack) < peek(centerStack) || underflow(centerStack)) {
38+
popValue = pop(leftStack);
39+
push(centerStack, popValue);
3040
return true;
3141
} else {
3242
return false;
3343
}
34-
} else if(enviar == "d" || enviar == "D") {
35-
///Pop na H1 e PUSH na H3
36-
if(peek(H1) < peek(H3) || underflow(H3)) {
37-
popValue = pop(H1);
38-
push(H3, popValue);
44+
} else if(secondChoice == "d" || secondChoice == "D") {
45+
if(peek(leftStack) < peek(rightStack) || underflow(rightStack)) {
46+
popValue = pop(leftStack);
47+
push(rightStack, popValue);
3948
return true;
4049
} else {
4150
return false;
@@ -44,29 +53,27 @@ bool Jogada(Stack *H1, Stack *H2, Stack *H3) {
4453
return false;
4554
}
4655

47-
} else if(escolha == "t" || escolha == "T") {
48-
if(underflow(H2))
56+
} else if(firstChoice == "t" || firstChoice == "T") {
57+
if(underflow(centerStack))
4958
return false;
5059

5160
cout << "\nVocê escolheu remover um disco do TRABALHO!" << endl;
5261
cout << "\nEscolha para onde deseja enviar o disco: ";
53-
getline(cin, enviar);
62+
getline(cin, secondChoice);
5463
fflush(stdin);
5564

56-
if(enviar == "o" || enviar == "O") {
57-
///Pop na H2 e PUSH na H1
58-
if(peek(H2) < peek(H1) || underflow(H1)) {
59-
popValue = pop(H2);
60-
push(H1, popValue);
65+
if(secondChoice == "o" || secondChoice == "O") {
66+
if(peek(centerStack) < peek(leftStack) || underflow(leftStack)) {
67+
popValue = pop(centerStack);
68+
push(leftStack, popValue);
6169
return true;
6270
} else {
6371
return false;
6472
}
65-
} else if(enviar == "d" || enviar == "D") {
66-
///Pop na H2 e PUSH na H3
67-
if(peek(H2) < peek(H3) || underflow(H3)) {
68-
popValue = pop(H2);
69-
push(H3, popValue);
73+
} else if(secondChoice == "d" || secondChoice == "D") {
74+
if(peek(centerStack) < peek(rightStack) || underflow(rightStack)) {
75+
popValue = pop(centerStack);
76+
push(rightStack, popValue);
7077
return true;
7178
} else {
7279
return false;
@@ -75,29 +82,27 @@ bool Jogada(Stack *H1, Stack *H2, Stack *H3) {
7582
return false;
7683
}
7784
}
78-
if(escolha == "d" || escolha == "D") {
79-
if(underflow(H3))
85+
if(firstChoice == "d" || firstChoice == "D") {
86+
if(underflow(rightStack))
8087
return false;
8188

8289
cout << "\nVocê escolheu remover um disco do DESTINO!" << endl;
8390
cout << "\nEscolha para onde deseja enviar o disco: ";
84-
getline(cin, enviar);
91+
getline(cin, secondChoice);
8592
fflush(stdin);
8693

87-
if(enviar == "t" || enviar == "T") {
88-
///Pop na H2 e PUSH na H2
89-
if(peek(H3) < peek(H2)|| underflow(H2)) {
90-
popValue = pop(H3);
91-
push(H2, popValue);
94+
if(secondChoice == "t" || secondChoice == "T") {
95+
if(peek(rightStack) < peek(centerStack)|| underflow(centerStack)) {
96+
popValue = pop(rightStack);
97+
push(centerStack, popValue);
9298
return true;
9399
} else {
94100
return false;
95101
}
96-
} else if(enviar == "o" || enviar == "O") {
97-
///Pop na H2 e PUSH na H1
98-
if(peek(H3) < peek(H1) || underflow(H1)) {
99-
popValue = pop(H3);
100-
push(H1, popValue);
102+
} else if(secondChoice == "o" || secondChoice == "O") {
103+
if(peek(rightStack) < peek(leftStack) || underflow(leftStack)) {
104+
popValue = pop(rightStack);
105+
push(leftStack, popValue);
101106
return true;
102107
} else {
103108
return false;

Main.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@ int main() {
1616
set(&centerStack);
1717
set(&rightStack);
1818

19-
leftStack.disks = centerStack.disks = rightStack.disks = getDiscos();
19+
leftStack.disks = centerStack.disks = rightStack.disks = getDisks();
2020

2121
int remainingPlays = getJogadas(&leftStack, leftStack.disks);
2222

2323
while(remainingPlays > 0) {
2424
showAll(&leftStack, &centerStack, &rightStack, remainingPlays, false);
2525

26-
if(Jogada(&leftStack, &centerStack, &rightStack)) {
26+
if(playLogic(&leftStack, &centerStack, &rightStack)) {
2727
remainingPlays--;
2828
} else {
2929
cout << "\nOpção inválida!" << endl;

0 commit comments

Comments
 (0)