Zadanie #
Napisz symulator ruletki, używając procesów komunikujących się przez nienazwane łącza.
Program przyjmuje dwa parametry: liczbę graczy N
(N ≥ 1
) oraz początkową kwotę M
(M ≥ 100
).
Gracze obstawiają pojedynczy numer [0, 36]
z wypłatą 35:1. Zwycięski numer jest losowany z zakresu [0, 36]
.
Etapy #
Krupier (główny proces) tworzy
N
procesów graczy. Każdy gracz wypisuje:[process id]: I have [amount] and I'm going to play roulette
.Gracze komunikują się z krupierem przez nienazwane łącza. Każdy gracz wysyła losową stawkę (nieprzekraczającą jego budżetu) oraz wybrany numer.
- Krupier wypisuje:
Dealer: [process id] placed [amount] on [number]
po otrzymaniu zakładu. - Krupier losuje numer i ogłasza:
Dealer: [number] is the lucky number
. - Po jednej rundzie wszyscy gracze i krupier kończą grę.
- Krupier wypisuje:
Gra trwa, dopóki co najmniej jeden gracz ma pieniądze.
- Jeśli gracz straci wszystkie pieniądze, wypisuje:
[process id]: I'm broke
i wychodzi. - Jeśli gracz wygra, wypisuje:
[process id]: I won [amount]
. - Gdy wszyscy gracze opuszczą grę, krupier wypisuje:
Dealer: Casino always wins
i kończy pracę.
- Jeśli gracz straci wszystkie pieniądze, wypisuje:
W każdej rundzie gracz ma 10% szans na opuszczenie gry z pozostałymi pieniędzmi. Wypisuje wtedy:
[process id]: I saved [amount left]
i opuszcza grę.