Guest User

Untitled

a guest
Jul 18th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. import scala.util.Random
  2. import scala.collection.mutable.ListBuffer
  3.  
  4. abstract class Door
  5. case class Car() extends Door
  6. case class Goat() extends Door
  7.  
  8. class Game(val doors:List[Door] = Random.shuffle(List(Goat(), Goat(), Car()))) {
  9. var playerDoor = -1
  10. var montyDoor = -1
  11. var monty = new Monty(this)
  12.  
  13. def chooseDoor(door: Int) = {
  14. playerDoor = door
  15. montyDoor = monty.pickDoor()
  16. }
  17.  
  18. def switch() = {
  19. playerDoor = {
  20. val availableDoors = ListBuffer(0, 1, 2)
  21. availableDoors -= playerDoor
  22. availableDoors -= montyDoor
  23. availableDoors.head
  24. }
  25. }
  26.  
  27. def won() = {
  28. doors(playerDoor) == Car()
  29. }
  30. }
  31.  
  32. class Player(game: Game) {
  33. def chooseDoor(door: Int) = {
  34. game.chooseDoor(door)
  35. }
  36.  
  37. def switch() = {
  38. game.switch()
  39. }
  40. }
  41.  
  42. class Monty(game: Game) {
  43. def pickDoor():Int = {
  44. val availableDoors = ListBuffer(0, 1, 2)
  45. availableDoors -= game.playerDoor
  46. val montyPick = availableDoors(Random.nextInt(2))
  47. if (game.doors(montyPick) != Car())
  48. montyPick
  49. else
  50. pickDoor()
  51. }
  52. }
Add Comment
Please, Sign In to add comment