class MineField::Map
Attributes
points[R]
size[R]
Public Class Methods
new()
click to toggle source
# File lib/mine_field/map.rb, line 5 def initialize print 'Matrix Boyunuz: ' @size = gets.to_i - 1 @points = [] @print_size = @size.to_s.length + 1 create_points end
Public Instance Methods
create_points()
click to toggle source
# File lib/mine_field/map.rb, line 15 def create_points mines_points other_points end
draw()
click to toggle source
# File lib/mine_field/map.rb, line 20 def draw puts `clear` header = '| ' + ' ' * (@print_size + 3) + (0..@size).to_a.map {|i| i.to_s.ljust(@print_size)}.join + " |\n" seperator = '-' * (header.length - 1) + "\n" (0..@size).each do |y| if y.zero? print seperator print header print seperator end print "| #{y.to_s.rjust(@print_size)} | " (0..@size).each do |x| point = get_point(x, y) print "#{point.to_s.ljust(@print_size)}" print ' |' if x == @size end puts '' end puts seperator end
get_point(x, y)
click to toggle source
# File lib/mine_field/map.rb, line 47 def get_point(x, y) @points.each do |point| return point if point.coordinate_x == x && point.coordinate_y == y end nil end
visible!()
click to toggle source
# File lib/mine_field/map.rb, line 55 def visible! @points.select {|p| p.opened == false}.each {|p| p.opened = true} end
Private Instance Methods
exist_point?(x, y)
click to toggle source
# File lib/mine_field/map.rb, line 83 def exist_point?(x, y) @points.each do |point| return true if point.coordinate_x == x && point.coordinate_y == y end false end
mines_points()
click to toggle source
# File lib/mine_field/map.rb, line 61 def mines_points mines_count = Math.sqrt(@size + 1).ceil loop do x = (0..@size).to_a.sample y = (0..@size).to_a.sample @points.push(Point.new(self, x, y, MINE_CHARACTER)) unless exist_point?(x, y) break if @points.size == mines_count end end
other_points()
click to toggle source
# File lib/mine_field/map.rb, line 73 def other_points (0..@size).each do |x| (0..@size).each do |y| next if exist_point?(x, y) @points.push(Point.new(self, x, y, NORMAL_CHARACTER)) end end end