Class: Engine

Inherits:
Object
  • Object
show all
Includes:
Emoji
Defined in:
lib/ttt-cli/engine.rb

Direct Known Subclasses

Game

Constant Summary collapse

DIFFICULTY_LEVELS =
{
  easy: RandomAI,
  medium: MediumAI,
  hard: HardAI
}.freeze
@@game_mode =
:singleplayer
@@draws =
0
@@wins =
0
@@losses =
0

Constants included from Emoji

Emoji::DASH, Emoji::O, Emoji::X

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#difficultyObject

Returns the value of attribute difficulty.



4
5
6
# File 'lib/ttt-cli/engine.rb', line 4

def difficulty
  @difficulty
end

Class Method Details

.difficulty_levelObject



50
51
52
53
# File 'lib/ttt-cli/engine.rb', line 50

def self.difficulty_level
  level = CommandLine::Display.difficulty
  DIFFICULTY_LEVELS[level.to_sym]
end

.game_modeObject



45
46
47
48
# File 'lib/ttt-cli/engine.rb', line 45

def self.game_mode
  mode = CommandLine::Display.game_mode
  mode.to_sym
end

.is_singleplayer?(mode) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/ttt-cli/engine.rb', line 33

def self.is_singleplayer?(mode)
  mode == :singleplayer
end

.reset_countersObject



55
56
57
58
59
# File 'lib/ttt-cli/engine.rb', line 55

def self.reset_counters
  @@draws = 0
  @@losses = 0
  @@wins = 0
end

.set_difficultyObject



37
38
39
40
41
42
43
# File 'lib/ttt-cli/engine.rb', line 37

def self.set_difficulty
  if @@game_mode == :singleplayer
    Engine.difficulty_level
  else
    HardAI
  end
end

.set_game_mode(mode) ⇒ Object

todo



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/ttt-cli/engine.rb', line 20

def self.set_game_mode(mode) # todo
  if Engine.is_singleplayer?(mode)
    Engine.reset_counters if @@game_mode == :hotseat || @@game_mode == :observer
    @@game_mode = :singleplayer
  elsif mode == :hotseat
    Engine.reset_counters if @@game_mode == :singleplayer || @@game_mode == :observer
    @@game_mode = :hotseat
  else
    Engine.reset_counters if @@game_mode == :singleplayer || @@game_mode == :hotseat
    @@game_mode = :observer
  end
end

Instance Method Details

#drawsObject



69
70
71
# File 'lib/ttt-cli/engine.rb', line 69

def draws
  @@draws
end

#game_modeObject



61
62
63
# File 'lib/ttt-cli/engine.rb', line 61

def game_mode
  @@game_mode
end

#lossesObject



73
74
75
# File 'lib/ttt-cli/engine.rb', line 73

def losses
  @@losses
end

#winsObject



65
66
67
# File 'lib/ttt-cli/engine.rb', line 65

def wins
  @@wins
end