Code Library
Home Submit Free Hosting Link To Us Contacts

CGI Game

CGI Game CGI CGI Game 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; 
}
#




  • CGIGame Guess Game


Tatet