#!/usr/bin/perl use strict; use warnings; use Term::ReadKey; use lib '../lib'; use Games::Maze::FirstPerson; my $maze = Games::Maze::FirstPerson->new(dimensions => [3,3]); print <<"END_CONTROLS"; q = quit w = move north a = move west s = move south d = move east END_CONTROLS ReadMode 'cbreak'; my %move_for = ( w => 'go_north', a => 'go_west', s => 'go_south', d => 'go_east' ); while ( ! $maze->has_won ) { print $maze->surroundings; my $key = lc ReadKey(0); if ( 'q' eq $key ) { print "OK. Quitting\n"; exit; } if ( my $action = $move_for{$key} ) { unless ( $maze->$action ) { print "You can't go that direction\n\n"; } else { print "\n"; } } else { print "I don't understand\n\n"; } } print "Congratulations! You found the exit!\n"; print $maze->to_ascii;