Game
#!/usr/local/bin/perl
#
use CGI;
#
# Define variables
#
$query = new CGI;
$com_path = "../game/line.html";
#
open (ZONE,"<zone");
$zone = <ZONE>;
close (ZONE);
#
# Put room numbers into large string
#
open (ROOM,"<room");
@rooms = <ROOM>;
close (ROOM);
#
# Put COMMAND Line into Large string
#
open (COMMAND,"<$com_path");
@lines = <COMMAND>;
close (COMMAND);
#
# Put items into large string
#
open (ITEMS,"<items");
@spaces = <ITEMS>;
close (ITEMS);
#
# Get form data
#
$form{com} = $query->param('com');
$form{what} = $query->param('what');
#
# Sort COMMANDs
#
if ($form{com} eq "north") {&north;}
elsif ($form{com} eq "south") {&south;}
elsif ($form{com} eq "east") {&east;}
elsif ($form{com} eq "west") {&west;}
elsif ($form{com} eq "items") {&items;}
elsif ($form{com} eq "pick") {
if ($form{'what'} eq "hello") {&what;}
else {&pick;}}
elsif ($form{com} eq "open") {
if (!($form{'what'})) {&what;}
else {&open;}}
elsif ($form{com} eq "close") {
if (!($form{'what'})) {&what;}
else {&close;}}
elsif ($form{com} eq "push") {
if (!($form{'what'})) {&what;}
else {&push;}}
elsif ($form{com} eq "pull") {
if (!($form{'what'})) {&what;}
else {&pull;}}
elsif ($form{com} eq "look") {
if (!($form{'what'})) {&what;}
else {&look;}}
elsif ($form{com} eq "drop") {
if (!($form{'what'})) {&what;}
else {&drop;}}
elsif ($form{com} eq "talk") {
if (!($form{'what'})) {&what;}
else {&talk;}}
elsif ($form{com} eq "use") {
if (!($form{'what'})) {&what;}
else {&use;}}
#
#
# subroutine what
#
sub what {
if ($form{com} eq "pick") {$what = "Pick up what? ";}
elsif ($form{com} eq "open") {$what = "Open what? ";}
elsif ($form{com} eq "close") {$what = "Close what? ";}
elsif ($form{com} eq "push") {$what = "Push what? ";}
elsif ($form{com} eq "pull") {$what = "Pull what? ";}
elsif ($form{com} eq "drop") {$what = "Drop what? ";}
elsif ($form{com} eq "use") {$what = "Use what? ";}
elsif ($form{com} eq "talk") {$what = "Talk to who? ";}
elsif ($form{com} eq "look") {$what = "Look at what? ";}
#
print $query->header(-target=>'LINE');
print "<html><head><title>What</title><script>\n";
print "function go() {parent.LINE.document.location=\'";
print "http://www.test.com/game/line.html\'\;}\n";
print "</script>\n";
print "<body bgcolor=\"#000000\" text=\"#ffffff\">\n";
print "<br><form method=post action=\"game.pl\"";
print " onsubmit=\"go()\">\n";
print "<input type=hidden name=\"com\" value=\"$form{com}\">\n";
print "$what <input type=text name=\"what\" size=50> ";
print "<input type=submit value=\"Enter\">\n";
print "<br></body></html>\n";
exit;
}
#
sub pick {
if ($zone == 1) {
if ($form{'what'} eq "vile") {
$pick = 1;
$zone = 3;
print $query->header(-target=>'TEXT');
open(HTML,"<../frontr3.html");
while(<HTML>) {print;}
close(HTML);}
elsif ($form{'what'} eq "letter") {
$pick = 1;
$zone = 2;
print $query->header(-target=>'TEXT');
open(HTML,"<../frontr2.html");
while(<HTML>) {print;}
close(HTML);}
}
elsif ($zone == 2) {
if ($form{'what'} eq "vile") {
$pick = 1;
$zone = 4;
print $query->header(-target=>'TEXT');
open(HTML,"<../frontr4.html");
while(<HTML>) {print;}
close(HTML);}
}
elsif ($zone == 3) {
if ($form{'what'} eq "letter") {
$pick = 1;
$zone = 4;
print $query->header(-target=>'TEXT');
open(HTML,"<../frontr4.html");
while(<HTML>) {print;}
close(HTML);}
}
elsif ($zone == 30) {
if ($form{'what'} eq "sandwiches") {
$pick = 2;
$zone = 31;
print $query->header(-target=>'TEXT');
open(HTML,"<../kitchen2.html");
while(<HTML>) {print;}
close(HTML);}
}
elsif ($zone == 61) {
if ($form{'what'} eq "keys") {
$pick = 1;
$zone = 62;
print $query->header(-target=>'TEXT');
open(HTML,"<../bedside2.html");
while(<HTML>) {print;}
close(HTML);}
}
else {&wrong;}
if ($pick == 1) {
open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->You pick up the $form{'what'}\n";}
else {print COMMAND $line;}}
close (COMMAND);
open (ITEMS,">>items");
print ITEMS "$form{'what'}\n";
close (ITEMS);
}
elsif ($pick == 2) {
open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->You pick up the sandwiches and eat then. Yum!\n";}
else {print COMMAND $line;}}
close (COMMAND);
}
open (ZONE,">zone");
print ZONE "$zone";
close (ZONE);
&room;
print $query->header(-target=>'LINE');
open(HTML,"<$com_path");
while(<HTML>) {print;}
close(HTML);
exit;
}
#
sub open {
if ($zone == 20) {
if ($form{'what'} eq "closet") {
$zone = 1;
print $query->header(-target=>'TEXT');
open(HTML,"<../closet.html");
while(<HTML>) {print;}
close(HTML);
open (ZONE,">zone");
print ZONE "$zone";
close (ZONE);
open (ITEMS,">items");
print ITEMS '';
close (ITEMS);
&room;
}}
else {&wrong};
exit;
}
#
sub close {
&wrong;
exit;
}
#
sub push {
&wrong;
exit;
}
#
sub pull {
&wrong;
exit;
}
#
sub talk {
&wrong;
exit;
}
#
sub look {
if ($zone < 5) {
if ($form{'what'} eq "letter") {
if (($zone == 1) || ($zone == 3)) {
open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->Try picking it up first!\n";}
else {print COMMAND $line;}}
close (COMMAND);}
else {print $query->header(-target=>'TEXT');
open(HTML,"<../letter.html");
while(<HTML>) {print;}
close(HTML);
open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->You look at the letter.\n";}
else {print COMMAND $line;}}
close (COMMAND);}}
}
elsif ($zone == 60) {
if ($form{'what'} eq "table") {
foreach $space (@spaces) {
if ($line =~ /keys/) {$zone = 62;}
else {$zone = 61;}}
if ($zone == 61) {
print $query->header(-target=>'TEXT');
open(HTML,"<../bedside.html");
while(<HTML>) {print;}
close(HTML);}
else {
print $query->header(-target=>'TEXT');
open(HTML,"<../bedside2.html");
while(<HTML>) {print;}
close(HTML);}
open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->You look at the Bedside table\n";}
else {print COMMAND $line;}}
close (COMMAND);
}}
elsif (($zone == 61) || ($zone == 62)) {
if ($form{'what'} eq "bedroom") {
print $query->header(-target=>'TEXT');
open(HTML,"<../bedroom.html");
while(<HTML>) {print;}
close(HTML);
open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->You look at the Bedroom\n";}
else {print COMMAND $line;}}
close (COMMAND);
$zone = 60;}
}
else {foreach $space (@spaces) {
if ($space =~ /$form{'what'}/) {
open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->It is a $form{'what'}\n";}
else {print COMMAND $line;}}
close (COMMAND);}
else {&wrong;}}
}
open (ZONE,">zone");
print ZONE "$zone";
close (ZONE);
exit;
}
#
sub drop {
open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->I would hang on to that you might need it!\n";}
else {print COMMAND $line;}}
close (COMMAND);
print $query->header(-target=>'LINE');
open(HTML,"<$com_path");
while(<HTML>) {print;}
close(HTML);
exit;
}
#
sub use {
if ($form{'what'} eq "vile") {
if ($form{know} == 1 ) {
if ($form{how} == 3) {&wrong;}
else {&wrong;}}
else {open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->You don't know how!\n";}
else {print COMMAND $line;}}
close (COMMAND);}
}
elsif ($zone == 80) {
if ($form{'what'} eq "car") {
foreach $space (@spaces) {
if ($space =~ /keys/) {
print $query->header(-target=>'TEXT');
open(HTML,"<../hcar.html");
while(<HTML>) {print;}
close(HTML);
open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->You get into the car!\n";}
else {print COMMAND $line;}}
close (COMMAND);
$zone = 90;
$piddle = 1;}
else {
open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->You don't have the keys!\n";}
else {print COMMAND $line;}}
close (COMMAND);}}}
}
else {&wrong;}
open (ZONE,">zone");
print ZONE "$zone";
close (ZONE);
&room;
if ($piddle != 1) {
print $query->header(-target=>'LINE');
open(HTML,"<$com_path");
while(<HTML>) {print;}
close(HTML);}
exit;
}
#
sub items {
print $query->header(-target=>'TEXT');
print "<html><head><title>items</title></head><body>\n";
foreach $space (@spaces) {print "$space\n\n";}
print "</body></html>\n";
exit;
}
#
sub north {
if ($zone < 5) {
print $query->header(-target=>'TEXT');
open(HTML,"<../hall.html");
while(<HTML>) {print;}
close(HTML);
$zone = 20;
$poke = 1;
}
elsif ($zone == 20) {
print $query->header(-target=>'TEXT');
open(HTML,"<../bedroom.html");
while(<HTML>) {print;}
close(HTML);
$zone = 60;
$poke = 1;
}
else {&wrong;}
if ($poke == 1) {open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->You go north!\n";}
else {print COMMAND $line;}}
close (COMMAND);
}
open (ZONE,">zone");
print ZONE "$zone";
close (ZONE);
exit;
}
#
sub south {
if ($zone == 20) {
foreach $room (@rooms) {
if ($room =~ /<!--front-->1/) {print $query->header(-target=>'TEXT');
open(HTML,"<../frontr1.html");
while(<HTML>) {print;}
close(HTML);
$zone = 1;}
elsif ($room =~ /<!--front-->2/) {print $query->header(-target=>'TEXT');
open(HTML,"<../frontr2.html");
while(<HTML>) {print;}
close(HTML);
$zone = 2;}
elsif ($room =~ /<!--front-->3/) {print $query->header(-target=>'TEXT');
open(HTML,"<../frontr3.html");
while(<HTML>) {print;}
close(HTML);
$zone = 3;}
elsif ($room =~ /<!--front-->4/) {print $query->header(-target=>'TEXT');
open(HTML,"<../frontr4.html");
while(<HTML>) {print;}
close(HTML);
$zone = 4;}}
$poke = 1;
}
elsif (($zone > 59) && ($zone < 65)) {
print $query->header(-target=>'TEXT');
open(HTML,"<../hall.html");
while(<HTML>) {print;}
close(HTML);
$zone = 20;
$poke = 1;
}
else {&wrong}
if ($poke == 1) {open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->You go south!\n";}
else {print COMMAND $line;}}
close (COMMAND);
}
open (ZONE,">zone");
print ZONE "$zone";
close (ZONE);
exit;
}
#
sub east {
if (($zone < 35) && ($zone >29) && ($poke == 0)) {
print $query->header(-target=>'TEXT');
open(HTML,"<../hall.html");
while(<HTML>) {print;}
close(HTML);
$zone = 20;
$poke = 1;
}
elsif (($zone == 20) && ($poke == 0)) {
print $query->header(-target=>'TEXT');
open (HTML,"<../garden.html");
while(<HTML>) {print;}
close(HTML);
$zone = 70;
$poke = 1;
}
elsif (($zone == 70) && ($poke == 0)) {
print $query->header(-target=>'TEXT');
open(HTML,"<../hstreet.html");
while(<HTML>) {print;}
close(HTML);
$zone = 80;
$poke = 1;
}
else {&wrong}
if ($poke == 1) {open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->You go east!\n";}
else {print COMMAND $line;}}
close (COMMAND);
}
open (ZONE,">zone");
print ZONE "$zone";
close (ZONE);
exit;
}
#
sub west {
if ($zone == 20) {
foreach $room (@rooms) {
if ($room =~ /<!--kitchen-->30/) {
print $query->header(-target=>'TEXT');
open (HTML,"<../kitchen.html");
while(<HTML>) {print;}
close(HTML);
$zone = 30;}
elsif ($room =~ /<!--kitchen-->31/) {
print $query->header(-target=>'TEXT');
open (HTML,"<../kitchen2.html");
while(<HTML>) {print;}
close(HTML);
$zone = 31;}}
$poke = 1;
}
elsif ($zone == 70) {
print $query->header(-target=>'TEXT');
open (HTML,"<../hall.html");
while(<HTML>) {print;}
close(HTML);
$zone = 20;
$poke = 1;
}
elsif ($zone == 80) {
print $query->header(-target=>'TEXT');
open(HTML,"<../garden.html");
while(<HTML>) {print;}
close(HTML);
$zone = 70;
$poke = 1;
}
else {&wrong}
if ($poke == 1) {open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->You go west!\n";}
else {print COMMAND $line;}}
close (COMMAND);
}
open (ZONE,">zone");
print ZONE "$zone";
close (ZONE);
exit;
}
#
sub wrong {
open (COMMAND,">$com_path");
foreach $line (@lines) {
if ($line =~ /<!--comm-->/) {
print COMMAND "<!--comm-->You cannot do that!\n";}
else {print COMMAND $line;}}
close (COMMAND);
print $query->header(-target=>'LINE');
open(HTML,"<$com_path"); ;
while(<HTML>) {print;}
close(HTML);
exit;
}
#
sub room {
open (ROOM,">room");
foreach $room (@rooms) {
if (($room =~ /<!--front-->/) && ($zone < 5)) {print ROOM "<!--front-->$zone\n";}
elsif (($room =~ /<!--kitchen-->/) && ($zone > 29) && ($zone < 32)) {print ROOM "<!--kitchen-->$zone\n";}
elsif (($room =~ /<!--bedside-->/) && ($zone > 59) && ($zone < 65)) {print ROOM "<!--bedside-->$zone\n";}
else {print ROOM $room;}}
close (ROOM);
exit;
}
#