CGI Game
CGI
Download (.zip)
#!/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; } #
|