Йоан обнови решението на 16.10.2015 20:15 (преди над 9 години)
+def move(snake, direction)
+ new_snake = Array.new(snake)
+
+ new_snake.shift
+
+ new_snake << _sum_positions(new_snake.last, direction)
+end
+
+def grow(snake, direction)
+ new_snake = Array.new(snake)
+
+ new_snake << _sum_positions(new_snake.last, direction)
+end
+
+def new_food(food, snake, dimensions)
+ puts(dimensions['width'])
+ food_position = [rand(dimensions[:width]), rand(dimensions[:height])]
+
+ while food.include?(food_position) || snake.include?(food_position)
+ food_position = [rand(dimensions[:width]), rand(dimensions[:height])]
+ end
+
+ food_position
+end
+
+def obstacle_ahead?(snake, direction, dimensions)
+ next_position = _sum_positions(snake.last, direction)
+
+ if snake.include? next_position
+ return true
+ elsif next_position[0] == dimensions[:width] ||
+ next_position[1] == dimensions[:height]
+ return true
+ end
+
+ false
+end
+
+def danger?(snake, direction, dimensions)
+ grown_snake = grow(snake, direction)
+
+ first_obstacle = obstacle_ahead? snake, direction, dimensions
+ second_obstacle = obstacle_ahead? grown_snake, direction, dimensions
+
+ first_obstacle || second_obstacle
+end
+
+def _sum_positions(first_position, second_position)
+ new_position = []
+ new_position[0] = first_position[0] + second_position[0]
+ new_position[1] = first_position[1] + second_position[1]
+ new_position
+end