From 4c29987de15d67a5beb593fc71165809fa430df6 Mon Sep 17 00:00:00 2001 From: klmp200 Date: Fri, 22 Jun 2018 07:46:29 +0200 Subject: [PATCH] =?UTF-8?q?Quick=20and=20dirty,=20surtout=20dirty=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ElevatorBreaker/ElevatorBreaker.c | 4 +++- ElevatorBreaker/ElevatorBreaker.h | 3 +++ Visitor/Visitor.c | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ElevatorBreaker/ElevatorBreaker.c b/ElevatorBreaker/ElevatorBreaker.c index c0f3cd4..be5963b 100644 --- a/ElevatorBreaker/ElevatorBreaker.c +++ b/ElevatorBreaker/ElevatorBreaker.c @@ -20,13 +20,14 @@ void * runnable_ElevatorBreaker(void * void_this){ AGENT_OPTIONS - while (data->is_active_passengers_left(data)){ + while (this->breaks < MAX_BREAKS && data->is_active_passengers_left(data)){ usleep(900000); // One chance out of two to break something if ((rand() % 101) > 50) { selected_elevator = data->get_main_building(data)->elevators[rand() % ELEVATOR_NB]; selected_elevator->damage(selected_elevator); printf("ALERTE : L'ascenseur %s est endommagé\n", selected_elevator->name); + this->breaks++; } } @@ -37,6 +38,7 @@ void * runnable_ElevatorBreaker(void * void_this){ ElevatorBreaker *_init_ElevatorBreaker(){ ElevatorBreaker *new_elevator_breaker = malloc_or_die(sizeof(ElevatorBreaker)); new_elevator_breaker->thread_number = -1; + new_elevator_breaker->breaks = 0; LINK_ALL(ElevatorBreaker, new_elevator_breaker, set_thread_number, diff --git a/ElevatorBreaker/ElevatorBreaker.h b/ElevatorBreaker/ElevatorBreaker.h index 392c032..ce30a52 100644 --- a/ElevatorBreaker/ElevatorBreaker.h +++ b/ElevatorBreaker/ElevatorBreaker.h @@ -5,10 +5,13 @@ #ifndef LO41_ELEVATORBREAKER_H #define LO41_ELEVATORBREAKER_H +#define MAX_BREAKS 30 + #include "../Objects.h" typedef struct o_ElevatorBreaker { PRIVATE int thread_number; + PRIVATE int breaks; PUBLIC void * (*runnable)(void * void_this); PUBLIC void (*set_thread_number)(_THIS(ElevatorBreaker), int data); diff --git a/Visitor/Visitor.c b/Visitor/Visitor.c index fcfd147..1a6dc76 100644 --- a/Visitor/Visitor.c +++ b/Visitor/Visitor.c @@ -25,6 +25,8 @@ void * runnable_Visitor(void * void_this){ printf("Visiteur %s : J'apelle à l'interphone\nVisiteur %s : J'apprends que %s habite à l'étage %d\n", this->name, this->name, this->contact_name, (this->destination = data->use_call_box(data, this->contact_name))); if (this->destination == this->position) printf("Visiteur %s : pas besoin de prendre l'ascenseur pour cet étage, je vais y aller à pied\n", this->name); + else if (this->destination == -1) + printf("Visiteur %s : Je me suis trompé de bâtiment, %s n'habite pas ici.\n", this->name, this->contact_name); else data->main_building->go_to_floor(data->main_building, this->position, this->destination, passenger);