You need to consider the duration and timing of messages.
A message is send between two frames.
- the first frame it will be send
- the following frame it will be received
The duration of a message is .... exactly one frame. A message sensor will receive this message never again (it can receive another message of the same format).
A message is more an event rather than a status.
p1de AND p2de expect that a message p1de and a message p2de are received at the same frame.
It does not mean that any of the messages were received in the past.
The winner is a status. At any moment there is exactly one winner. This status can change.
There are two basic options to do that:
- Change on event: The event carries enough information to decide the new winner.
- Notification: The object gets notified the winner (might have) changed. The object checks the situation and determines the current winner.
With the first option you need to deal with the situation you might get events that conflict with each other (e.g. you get a message telling the first player wins as well as a message the second player wins). The message recipient has to resolve the conflict.
The second option needs deep knowledge how to determine the winner.
Do not combine messages with AND.
It expect both messages to be received at the same time.