Милена обнови решението на 18.10.2015 16:47 (преди над 9 години)
+def next_step(snake, direction)
+ [snake.last.first + direction.first, snake.last.last + direction.last]
+end
+
+def move(snake, direction)
+ snake_clone = snake.clone
+ snake_clone.delete_at 0
+ snake_clone.push next_step snake_clone, direction
+ snake_clone
+end
+
+def grow(snake, direction)
+ snake_clone = snake.clone
+ snake_clone.push next_step(snake_clone, direction)
+ snake_clone
+end
+
+def on_field(location, dimensions)
+ on_field_by_width = location.first>0 && location.first<dimensions[:width]
+ on_field_by_height = location.last>0 && location.last<dimensions[:height]
+ if on_field_by_width and on_field_by_height
+ true
+ else
+ false
+ end
+end
+
+def obstacle_ahead?(snake, direction, dimensions)
+ snake_clone = snake.clone
+ next_step snake_clone, direction
+ location = snake_clone.last
+ if on_field location, dimensions and not snake_clone.include? location
+ false
+ else
+ true
+ end
+end
+
+def is_empty_field?(field, snake, food)
+ unless snake.include? field or food.include? field
+ true
+ end
+ false
+end
+
+def new_food(food, snake, dimensions)
+ flag = true
+ while flag
+ field = [rand(0..dimensions[:width]-1), rand(0..dimensions[:height]-1)]
+ flag = is_empty_field? field, snake, food
+ end
+ field
+end