Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. defmodule Hangman.Game do
  2.  
  3. alias Hangman.Game
  4. # start with declaring a struct
  5. defstruct(
  6. game_state: :initializing,
  7. turns_left: 7,
  8. letters: [],
  9. used: []
  10. )
  11.  
  12. def new_game do
  13. %Game{letters: String.codepoints("hello")}
  14. end
  15.  
  16. def new_game(word) do
  17. %Game{letters: String.codepoints(word)}
  18. end
  19.  
  20. def play(game, guess) do
  21. make_move(game, guess ,Enum.member?(game.used, guess))
  22. end
  23.  
  24. def make_move(game, _ ,_already_guess=true) do
  25. Map.put(game, :game_state, :already_guess)
  26. end
  27.  
  28. def make_move(game, guess, _already_guess=false) do
  29. game = Map.put(game, :used, [guess | game.used])
  30. check_guess(game, Enum.member?(game.letters, guess))
  31. end
  32.  
  33. def check_guess(game, _correct_guess=true) do
  34. check_game_won(game, MapSet.subset?(MapSet.new(game.letters), MapSet.new(game.used)))
  35. end
  36.  
  37. def check_guess(game, _correct_guess=false) do
  38. Map.put(game, :game_state, :bad_guess)
  39. end
  40.  
  41. def check_game_won(game, _won=true) do
  42. Map.put(game, :game_state, :won)
  43. end
  44.  
  45. def check_game_won(game, _won=false) do
  46. Map.put(game, :game_state, :good_guess)
  47. end
  48.  
  49. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement