Class: Codebreaker::Game

Inherits:
Object
  • Object
show all
Includes:
Data
Defined in:
lib/codebreaker/game.rb

Constant Summary collapse

ATTEMPTS =
5
HINTS =
2

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Data

#load, #save

Constructor Details

#initializeGame

Returns a new instance of Game.



14
15
16
17
18
19
# File 'lib/codebreaker/game.rb', line 14

def initialize
  @attempts = ATTEMPTS
  @hints_left = HINTS
  @guesses = 0
  @secret_code = Array.new(4) { rand(1..6) }
end

Instance Attribute Details

#attemptsObject (readonly)

Returns the value of attribute attempts.



12
13
14
# File 'lib/codebreaker/game.rb', line 12

def attempts
  @attempts
end

#guessObject (readonly)

Returns the value of attribute guess.



12
13
14
# File 'lib/codebreaker/game.rb', line 12

def guess
  @guess
end

#guessesObject (readonly)

Returns the value of attribute guesses.



12
13
14
# File 'lib/codebreaker/game.rb', line 12

def guesses
  @guesses
end

#hints_leftObject (readonly)

Returns the value of attribute hints_left.



12
13
14
# File 'lib/codebreaker/game.rb', line 12

def hints_left
  @hints_left
end

#playerObject

Returns the value of attribute player.



11
12
13
# File 'lib/codebreaker/game.rb', line 11

def player
  @player
end

#requested_hintObject (readonly)

Returns the value of attribute requested_hint.



12
13
14
# File 'lib/codebreaker/game.rb', line 12

def requested_hint
  @requested_hint
end

#resultObject (readonly)

Returns the value of attribute result.



12
13
14
# File 'lib/codebreaker/game.rb', line 12

def result
  @result
end

Instance Method Details

#compare(input) ⇒ Object



21
22
23
24
25
26
# File 'lib/codebreaker/game.rb', line 21

def compare(input)
  @guess = input
  @attempts -= 1
  @guesses += 1
  @result = Marker.new(@guess, @secret_code).result
end

#hintObject



32
33
34
35
36
# File 'lib/codebreaker/game.rb', line 32

def hint
  return @requested_hint = '' unless @hints_left.nonzero?
  @hints_left -= 1
  @requested_hint = @secret_code[rand(0..3)]
end

#scoreObject



38
39
40
41
# File 'lib/codebreaker/game.rb', line 38

def score
  return 0 if @attempts.zero?
  @attempts * 200 + @hints_left * 100 + 50
end

#win?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/codebreaker/game.rb', line 28

def win?
  @result == '++++' ? true : false
end