-
Notifications
You must be signed in to change notification settings - Fork 0
/
tile.rb
47 lines (40 loc) · 1.05 KB
/
tile.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
require 'colorize'
class Tile
attr_accessor :revealed, :bomb, :flagged, :adjacent_bombs
def initialize(bomb = false)
@bomb = bomb
@revealed = false
@flagged = false
@adjacent_bombs = 0
end
# def to_s
# if @revealed
# return '*'.colorize(:background => :red) if @bomb
# return @adjacent_bombs.to_s if @adjacent_bombs > 0
# " "
# else
# @flagged ? 'F' : " ".colorize(:background => :light_blue)
# end
# end
def to_s
# display for testing only
if @bomb
return '*'.colorize(:background => :red)
elsif @flagged
return 'F' if @revealed
return 'F'.colorize(:background => :light_blue) if !@revealed
elsif @adjacent_bombs > 0
return @adjacent_bombs.to_s if @revealed
return @adjacent_bombs.to_s.colorize(:background => :light_blue) if !@revealed
else
return ' ' if @revealed
return ' '.colorize(:background => :light_blue) if !@revealed
end
end
def reveal
@revealed = true
end
def flag
@flagged = flagged ? false : true
end
end