Sha256: 9340d3f05b69a492df723a1fa25c892a71bcb3034f8fc15dd5faa6b72b171a9d

Contents?: true

Size: 857 Bytes

Versions: 1

Compression:

Stored size: 857 Bytes

Contents

require 'solver/tree_solver'

class Game
	def initialize(maze)
		@maze = maze
	end

	def select_goal_cell(dificulty)
		dificulty = dificulty.to_sym
		solver = TreeSolver.new(@maze)
		start_x, start_y = 0, 0
		paths = solver.paths(start_x, start_y)
		leafs = {}
		paths.each_leaf do |leaf|
			leafs[leaf.node_depth] = leaf
		end
		depths = leafs.keys.sort
		case dificulty
		when :easy
			selected_depth = depths[(depths.size*0.25).ceil]
		when :medium
			selected_depth = depths[(depths.size*0.5).ceil]
		when :hard
			selected_depth = depths.last
		else
			selected_depth = depths[rand((depths.size/2.0).ceil) + (depths.size/2.0).ceil]
		end
		leafs[selected_depth].content
	end

	def generate_goal(dificulty)
		selected_cell = select_goal_cell(dificulty)
		i, j = @maze.xy_to_ij(selected_cell.x, selected_cell.y)
		@maze.matrix[i][j] = 2
		@maze
	end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rmaze-1.5.0 lib/game/game.rb