-
Notifications
You must be signed in to change notification settings - Fork 0
/
coderb2_3easy.cpp
113 lines (89 loc) · 4.13 KB
/
coderb2_3easy.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
#include <iostream>
int EnemigoCercano(uint16_t arr[], uint16_t longuitud){
uint16_t x = 0, i = 0, y = 0, z = 0;
uint16_t k;
uint16_t j;
uint16_t posd;
uint16_t posi;
// Para encontrar la posición del jugador
while(i < longuitud and x == 0){
if(arr[i]==1){
std::cout << "El jugador se encuentra en la posición: "<< i << std::endl;
x = -1;
}
i= i + 1;
}
k = i - 1;
j = i - 1;
// Sección para recorrer hacia la derecha y encontrar la posición "k" del arreglo en la que se encuentra el primer enemigo,
// así como el número de posiciones (posd) necesarias para alcanzarlo.
while(k<=longuitud and y == 0){
if(arr[k]==2){
std::cout << "Un enemigo se encuentra en la posición: " << k << " --->" << std::endl;
posd = (k+1)-i;
y = -1;
}
if(k == longuitud and (arr[k] != 2 and arr[k] != 1)){
// Esta condición solo se cumple en caso de que no haya enemigos hacia derecha
// asignamos un valor grande a posd debido a que no hay enemigo por alcanzar
posd = 1000;
std::cout << "No hay enemigos a la derecha" << std::endl;
}
k = k + 1;
}
// Sección para recorrer hacia la izquierda y encontrar la posición "j" del arreglo en la que se encuentra el primer enemigo,
// así como el número de posiciones (posi) necesarias para alcanzarlo.
while(j>=0 and z == 0){
if(arr[j] == 2){
// Esta condición solo se cumple en caso de que haya enemigos hacia la izquierda
std::cout << "Un enemigo se encuentra en la posición: " << j << " <--- \n" << std::endl;
posi = (i-1) - j;
z = -1;
// Sección de comparación cuando hay enemigos en ambos lados
if(posd==0 or posi!=0){
if(posi<posd) std::cout << "Enemigo más cercano aa " << posi << " posiciones a la izquierda\n" << std::endl;
if(posi<posd) return posi;
if(posd<posi) std::cout << "Enemigo más cercano aa " << posd << " posiciones a la derecha\n" << std::endl;
if(posd<posi) return posd;
if(posi==posd) std::cout << "Enemigo más cercano aa " << posi << " posiciones a cualquier lado\n" << std::endl;
if(posi==posd) return posd;
}
if(posd==0){
std::cout << "Enemigo más cercano aa " << posi << " posiciones a la izquierda\n" << std::endl;
return posi;
}
}
if(j == 0 and (arr[j] != 2 or arr[j] == 1)){
posi = 1000;
std::cout << "No hay enemigos hacia la izquierda \n" << std::endl;
// Sección de comparación cuando no hay enemigos hacia la izquierda
if(posd!=0 or posi==0){
if(posi<posd) std::cout << "Enemigo más cercano a " << posi << " posiciones a la izquierda\n" << std::endl;
if(posi<posd) return posi;
if(posd<posi) std::cout << "Enemigo más cercano a " << posd << " posiciones a la derecha\n" << std::endl;
if(posd<posi) return posd;
if(posi==posd) std::cout << "Enemigo más cercano a " << posi << " posiciones a cualquier lado\n" << std::endl;
if(posi==posd) return posi;
}
if(posd==0){
std::cout << "Enemigo más cercano a " << posi << " posiciones a la izquierda\n" << std::endl;
return posi;
}
if(posi==0){
std::cout << "Enemigo más cercano a " << posd << " posiciones a la izquierda\n" << std::endl;
return posd;
}
}
j = j - 1;
}
return 0;
}
int main(){
uint16_t arr[7] = {0, 0, 1, 0, 0, 0, 0};
uint16_t longuitud = sizeof(arr) / sizeof(*arr);
std::cout << ":::::::::::: Enemigo más cercano play :::::::::::: \n" << std::endl;
int salida = EnemigoCercano(arr, longuitud);
std::cout << "SALIDA: " << salida <<std::endl;
std::cout << std::endl;
return 0;
}