diff options
Diffstat (limited to 'perl/game.pl')
-rw-r--r-- | perl/game.pl | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/perl/game.pl b/perl/game.pl new file mode 100644 index 0000000..a6bcb00 --- /dev/null +++ b/perl/game.pl @@ -0,0 +1,66 @@ +%rooms = ( + entrance => { + description => "You enter a dimly lit room with a heavy wooden door to the north and a narrow hallway to the east.", + exits => { north => "hallway", east => "storage" }, + items => [], + }, + hallway => { + description => "The hallway stretches to the north and south. A faint light flickers at the end of the south corridor.", + exits => { north => "bedroom", south => "livingRoom" }, + items => [], + }, + bedroom => { + description => "The bedroom is cozy and inviting. A large bed dominates the room, and a dresser stands against the wall.", + exits => { south => "hallway" }, + items => [], + }, + livingRoom => { + description => "The living room is spacious and warmly lit. A comfortable couch sits in front of a fireplace, and a large bookshelf lines the wall.", + exits => { north => "hallway" }, + items => [], + }, + kitchen => { + description => "The kitchen is well-equipped with modern appliances and a large dining table. A faint glow emanates from a flashlight on the countertop.", + exits => { south => "livingRoom" }, + items => ["flashlight"], + }, + backyard => { + description => "The backyard is a tranquil oasis with lush greenery and a towering oak tree. A gentle breeze rustles the leaves, creating a peaceful atmosphere.", + exits => { north => "kitchen" }, + items => [], + }, +); + + +$currentRoom = $rooms{entrance}; +@inventory = (); + +do { + print $currentRoom->{description} . "\n"; + + $input = <STDIN>; + chomp($input); + + if ($input eq "leave") { + exit; + } elsif ($input eq "inventory") { + print "Inventory: " . join(", ", @inventory) . "\n"; + } elsif ($input =~ /^take\s+(\w+)/) { + $itemName = $1; + if (grep { $_ eq $itemName } @{$currentRoom->{items}}) { + push @inventory, $itemName; + splice @{$currentRoom->{items}}, grep { $_ eq $itemName } 1; + print "You picked up the $itemName.\n"; + } else { + print "There is no $itemName in this room.\n"; + } + } elsif ($input eq "help") { + print "Available commands: north, south, east, west, inventory, take item, leave\n"; + } else { + if (exists $currentRoom->{exits}->{$input}) { + $currentRoom = $rooms{$currentRoom->{exits}->{$input}}; + } else { + print "Invalid direction. Please enter a valid direction or type 'help' for assistance or 'leave' to end the exploration.\n"; + } + } +} while (1); |