Skip to content

Commit

Permalink
Merge pull request #2 from AlvaroMartinezQ/feature-mpi_parking
Browse files Browse the repository at this point in the history
feature: added colors for console 🎨
  • Loading branch information
AlvaroMartinezQ authored Mar 24, 2021
2 parents ad2462e + 19ab6c1 commit 519b946
Showing 1 changed file with 27 additions and 9 deletions.
36 changes: 27 additions & 9 deletions orquestador_parking.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ int main(int argc, char* argv[]){
int plazas = atoi(argv[1]);
int plantas = atoi(argv[2]);

printf("Plantas: %d, con %d plazas por planta.\n", plantas, plazas);
printf("\033[1;35m");
printf("\nPlantas: %d, con %d plazas por planta.\n", plantas, plazas);
printf("\033[0;0m");

int parking[plantas][plazas];
int i, j, k;
Expand All @@ -38,21 +40,23 @@ int main(int argc, char* argv[]){
parking[i][j] = 0; // 0 sera libre y cualquier otro numero aparcado [id del proceso que pide plaza]
}
}

printf("Parking inicializado.\n");

printf("\033[1;31m");
printf("\n\nParking inicializado.\n\n");
printf("\033[0;0m");
MPI_Status status;

int aparcado = -1;

printf("Estado actual del parking: \n");
printf("\nEstado actual del parking: \n");
printf("\033[1;33m");
for(i=0; i < plantas; i++){
printf("-> Planta %d: ", i);
for(j=0; j < plazas; j++){
printf("[%d]", parking[i][j]);
}
printf("\n");
}
printf("\033[0;0m");

// Inicializacion MPI
MPI_Init(&argc, &argv);
Expand All @@ -65,9 +69,9 @@ int main(int argc, char* argv[]){
// Programa principal
while(1){
MPI_Recv(recibido, 3, MPI_INT, MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, &status);

printf("Vehiculo: %d. Entrar=0/Salir=1, operacion: %d. Coche=0/Camion=0, tipo: %d\n", recibido[0], recibido[1], recibido[2]);

printf("\033[1;36m");
printf("\nVehiculo: %d. Entrar=0/Salir=1, operacion: %d. Coche=0/Camion=1, tipo: %d\n\n", recibido[0], recibido[1], recibido[2]);
printf("\033[0;0m");
// Realizar comparaciones necesarias, primero tipo de operacion, despues tipo de vehiculo.
if(recibido[1] == 0){ // Quiero entrar
if(recibido[2] == 0) { // Soy un coche
Expand All @@ -87,12 +91,16 @@ int main(int argc, char* argv[]){
}
asignado = 0;
if(posicion[0] != -1){ // Se ha asignado
printf("\033[1;32m");
printf("Coche %d aparcado en la planta %d, en la plaza %d.\n", recibido[0], posicion[0], posicion[1]);
printf("\033[0;0m");
aparcado = 1;
MPI_Send(&aparcado, 1, MPI_INT, recibido[0], 0, MPI_COMM_WORLD);
aparcado = -1;
} else if (posicion[0] == -1){ // No se ha asigando
printf("\033[0;31m");
printf("Coche %d no ha podido aparcar.\n", recibido[0]);
printf("\033[0;0m");
MPI_Send(&aparcado, 1, MPI_INT, recibido[0], 0, MPI_COMM_WORLD);
}
} else if (recibido[2] == 1) { // Soy un camion
Expand Down Expand Up @@ -123,12 +131,16 @@ int main(int argc, char* argv[]){
}
asignado = 0;
if(posicion[0] != -1){ // Se ha asignado
printf("\033[1;32m");
printf("Camion %d aparcado en la planta %d, en las plazas %d y %d.\n", recibido[0], posicion[0], posicion[1], posicion[3]);
printf("\033[0;0m");
aparcado = 1;
MPI_Send(&aparcado, 1, MPI_INT, recibido[0], 0, MPI_COMM_WORLD);
aparcado=-1;
} else if (posicion[0] == -1){ // No se ha asigando
printf("\033[0;31m");
printf("Camion %d no ha podido aparcar.\n", recibido[0]);
printf("\033[0;0m");
MPI_Send(&aparcado, 1, MPI_INT, recibido[0], 0, MPI_COMM_WORLD);
}
}
Expand All @@ -139,7 +151,9 @@ int main(int argc, char* argv[]){
for(j=0; j < plazas; j++){
if(parking[i][j] == recibido[0]) {
parking[i][j] = 0;
printf("\033[1;35m");
printf("Coche %d dejando la plaza %d en la planta %d.\n", recibido[0], j, i);
printf("\033[0;0m");
salida = 0; // Encontrado
}
}
Expand All @@ -154,7 +168,9 @@ int main(int argc, char* argv[]){
if(parking[i][j] == recibido[0] && parking[i][k] == recibido[0]){
parking[i][j] = 0;
parking[i][k] = 0;
printf("\033[1;35m");
printf("Camion %d dejando las plazas %d y %d en la planta %d.\n", recibido[0], j, k, i);
printf("\033[0;0m");
salida = 0; // Encontrado
} else {
k = 0;
Expand All @@ -164,14 +180,16 @@ int main(int argc, char* argv[]){
salida = -1; // No encontrado
}
}
printf("Estado actual del parking: \n");
printf("\nEstado actual del parking: \n");
printf("\033[1;33m");
for(i=0; i < plantas; i++){
printf("-> Planta %d: ", i);
for(j=0; j < plazas; j++){
printf("[%d]", parking[i][j]);
}
printf("\n");
}
printf("\033[0;0m");
sleep(1); // Para evitar mucha repeticion de imprimir el parking
}
// Fin
Expand Down

0 comments on commit 519b946

Please sign in to comment.