THIS IS HISTORY! Check fabien.benetou.fr for news.

Seedea, scalable creativity

Xye, consultancy for serious creators

Information

RSS

(Updates)


(:addthis:)

CoEvolution > Oimp > Dynalab

Dynalab, the dynamic labyrinth

Team
Initiator : Fabien

Goal

Find the algorithm behind walls re-disposition rather than a classical absolute path to escape the labyrinth before your opponent!

Competition

each player start into each other labyrinth and see who is the first to get out

Rules

Constraints

to spice up the game

Complexity

to make it entertaining for newcomers as well as hardcore gamers

Realization

Environment

Proposed solution

to update in order to reflect the change ob being able to escape only after the NEXT transformation

mazes[number_of_players]
	maze[size^dimension],initiation_function,transformation_function

bool path_exist(maze,position,position)
bool exit_path_exist(maze)
bool player_exited(maze)
maze initiate_maze(maze,initiation_function)
maze transform_maze(maze,transformation_function)
maze move_player(maze,new_position)
position ask_position()
position get_position(maze)
null display_maze(maze)


	for(i=0,number_of_players,i++)
		if (i+1 >= number_of_players) j=0 else j=i
		mazes[i].maze = initiate_maze(mazes[i].maze,mazes[j].initiation_function)
		if (!exit_path_exist(mazes[i].maze)) exit "player J lost, no path available"

	while (1)
		for(i=0,number_of_players,i++)
			if (i+1 >= number_of_players) j=0 else j=i
			display_maze(mazes[i].maze)
			while (!path_exist(mazes[i].maze,get_position(mazes[i].maze),new_position=ask_position()))
				display_maze(mazes[i].maze)				
			move_player(mazes[i].maze,new_position)
			if ( player_exited(mazes[i].maze) ) exit "player I won"
			mazes[i].maze = transform_maze(mazes[i].maze,mazes[j].transformation_function)
			if (!exit_path_exist(mazes[i].maze)) exit "player J lost, no path available"		

Examples of initiation_function

maze[3^2], start=0,0 arrival=2,2

	S11
	011
	00A

PS : using "block" for walls is easier but it can "crush" the player, thus when the user is "crushed" he is just "bumped" at the closest point of a path (which can be lucky or unlucky, eventually using probabilities to position oneself according to the guess transformation should be part of the strategy). That seems strange but it's precisely the specificity of the dynamic aspect that doesn't appear in classical labyrinths.

Examples of transformation_function

without using : position_of_player, number_of_iterations, random, set_wall_off, set_wall_on, ...

only possible primitives : switch_wall, fill_holes

	for(i,j) in maze
		switch_wall

would give

	S11    S00
	011 -> 100
	00A    11A

Potential resources for strategies

See also

Inspiration

References

sane@deadbeat.tv or IM me with dev14nt@hotmail.com or ICQ 116221186 would be interested to play it


Page last modified on August 20, 2010, at 11:29 AM