git.fiddlerwoaroof.com
Raw Blame History
import numpy as np

class Traveller(object):
	@property
	def x(self): return self.pos[0]
	@x.setter
	def x(self, val): self.pos = val, self.pos[1]

	@property
	def y(self): return self.pos[1]
	@y.setter
	def y(self, val): self.pos = self.pos[0], val

	def __init__(self, starting_cell):
		self.pos = starting_cell
		self.connections = []
		self.visited = {self.pos}

	def random_walk(self, array):
		maxx, maxy = array.shape
		cval = array[self.pos]

		dx, dy = 0,0
		r = np.random.random()
		if r < 0.25: # x-1
			dx = -1
		elif r < 0.5: # x+1
			dy = 1
		elif r < 0.75: # y-1
			dx = 1
		else: # y+1
			dy = -1

		opos = self.pos
		self.x += dx
		self.y += dy

		if self.x < 0: self.x = 0
		elif self.x >= maxx: self.x = maxx-1
		if self.y < 0: self.y = 0
		elif self.y >= maxy: self.y = maxy-1

		self.visited.add(self.pos)

		nval = array[self.pos]

		if cval != nval: 
			array[self.pos] = cval
			self.connections.append((opos, self.pos))
			print cval, nval


x,y = 24,36
maze = np.array(range(1,x*y+1))
maze.shape = x,y

t = Traveller((x/2, y/2))