home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Share Gallery 1
/
share_gal_1.zip
/
share_gal_1
/
ED
/
ED003A.ZIP
/
FLYAWAY.CPP
< prev
next >
Wrap
Text File
|
1990-07-20
|
11KB
|
341 lines
// XXXXX X X X X X X X X X
// X X X X X X X X X X X X
// X X X X X X X X X X X X
// XXX X X X X X X X X X
// X X X XXXXX X X X XXXXX X
// X X X X X X X X X X X
// X XXXXX X X X X X X X X
// FLYAWAY - version 2.00
// Written by: Gordon Dodrill - July 20, 1990
// Copywrite 1989, 1990 - Coronado Enterprises
#include "stdio.h"
#include "conio.h"
#include "iostream.h"
#include "flyaway.h"
#include "location.hpp"
#include "items.hpp"
#include "message.h"
#include "schedule.hpp"
#include "clock.hpp"
word verb, noun;
clock time_of_day;
schedule flight_info;
location your_car;
location pass_drop_off;
location lobby;
location baggage_claim;
location dark_room;
location ticket_counter;
location tunnel;
location rest_room;
location snack_bar;
location security;
location waiting_area;
location gate1;
location gate2;
location gate3;
location gate4;
location plane1;
location plane2;
location plane3;
location plane4;
location *present_location = &your_car;
location *result;
items personal_items; // The stuff I am carrying
main()
{
initialize();
cout << " Your best friend offered to drop you off at the airport\n"
" so you can begin your dream vacation and you have just\n"
" arrived at the passenger drop off area. You have about\n"
" 25 minutes to get to your plane, you haven't had any \n"
" lunch, and you have a full bladder. Be very careful, \n"
" there is a lot of construction going on all around the \n"
" airport. Good luck!\n\n"
" Type help if you want a few clues and a word list.\n\n";
do {
time_of_day.inc_and_print_time(); // This makes the user prompt
get_command(verb, noun); // Get user prompt
perform_action(verb, noun); // Try to perform the request
flight_info.shuffle_flights();
flight_info.shuffle_gates(present_location);
// See if the flight has been found and all is in order
flight_info.check_flight(present_location);
} while (verb != quit);
}
void initialize(void)
{
cout << " Welcome to Flyaway, version 2.00\n\n";
your_car.init(&pass_drop_off, // North from here
NULL, // East from here
NULL, // South from here
NULL, // West from here
your_car_message, // message when entering here
y_c_look_message); // message for look command
pass_drop_off.init(&lobby,
NULL,
NULL, // You cannot go back to the car, it leaves
NULL,
pass_drop_off_message,
p_d_o_look_message);
lobby.init(&ticket_counter,
NULL,
&pass_drop_off,
&baggage_claim,
lobby_message,
l_look_message);
baggage_claim.init(NULL,
&lobby,
NULL,
&dark_room,
baggage_claim_message,
b_c_look_message);
dark_room.init(NULL,
NULL,
NULL,
NULL,
dark_room_message,
d_r_look_message);
ticket_counter.init(&tunnel,
NULL,
&lobby,
NULL,
ticket_counter_message,
t_c_look_message);
tunnel.init(&security,
&snack_bar,
&ticket_counter,
&rest_room,
tunnel_message,
t_look_message);
rest_room.init(NULL,
&tunnel,
NULL,
NULL,
rest_room_message,
r_r_look_message);
snack_bar.init(NULL,
NULL,
NULL,
&tunnel,
snack_bar_message,
s_b_look_message);
security.init(&waiting_area,
NULL,
&tunnel,
NULL,
security_message,
s_look_message);
waiting_area.init(NULL,
&gate3,
&security,
&gate2,
waiting_area_message,
w_a_look_message);
gate1.init(&plane1,
&gate2,
NULL,
NULL,
gate1_message,
g1_look_message);
plane1.init(NULL,
NULL,
NULL,
NULL,
plane_message,
plane_look_message);
gate2.init(&plane2,
&waiting_area,
NULL,
&gate1,
gate2_message,
g2_look_message);
plane2.init(NULL,
NULL,
NULL,
NULL,
plane_message,
plane_look_message);
gate3.init(&plane3,
&gate4,
NULL,
&waiting_area,
gate3_message,
g3_look_message);
plane3.init(NULL,
NULL,
NULL,
NULL,
plane_message,
plane_look_message);
gate4.init(&plane4,
NULL,
NULL,
&gate3,
gate4_message,
g4_look_message);
plane4.init(NULL,
NULL,
NULL,
NULL,
plane_message,
plane_look_message);
personal_items.add_item(keys); // Player gets keys
personal_items.add_item(money); // Player gets money
your_car.add_item(ticket); // Ticket is in car
snack_bar.add_item(candy); // Candy is in snack bar
}
// A reference variable is used for the verb so we can get a
// change back to main to end the game when the time comes.
void perform_action(word &verb, word noun)
{
if (is_a_direction(verb)) { // Move to a new location
result = present_location->move(verb);
if (result) { // If Non-NULL
present_location = result; // Valid move found
present_location->display_message();
}
// Force end of game if in dark room
if (present_location == &dark_room) {
verb = quit;
cout << "Hit any key to end the game.";
int c = getch();
}
}
// Inventory
else if (verb == inventory)
personal_items.list_items();
// Look
else if (verb == look)
present_location->display_list_of_items();
// Drop item
else if (verb == drop) {
if (personal_items.item_here(noun)) {
personal_items.drop_item(noun);
present_location->add_item(noun);
cout << " Dropped.\n";
} else {
cout << "You can't drop what you don't have.\n";
}
}
// Get item
else if (verb == get) {
if (present_location->item_here(noun)) {
present_location->drop_item(noun);
personal_items.add_item(noun);
cout << " Picked up.\n";
} else {
cout << "It isn't here so you can't pick it up.\n";
}
}
// Buy candy
else if ((verb == buy) && (noun == candy) &&
(present_location == &snack_bar)) {
if ((personal_items.item_here(money)) &&
(present_location->item_here(candy))) {
personal_items.drop_item(money);
personal_items.add_item(candy);
present_location->drop_item(candy);
present_location->add_item(money);
cout << " You now have candy.\n";
} else
cout << "Surely you are not serious about that!\n";
}
// Read ticket
else if ((verb == read) && (noun == ticket))
if (personal_items.item_here(ticket))
flight_info.list_actual_destination();
else
cout << "You don't have a ticket to read.\n";
// Read monitor
else if ((verb == read) && (noun == monitor) &&
(present_location == &ticket_counter))
flight_info.list_flights(present_location);
// Read monitor
else if ((verb == read) && (noun == monitor) &&
(present_location == &waiting_area))
flight_info.list_flights(present_location);
// Read paper
else if ((verb == read) && (noun == paper) &&
(present_location == &lobby))
cout <<
"\n C++ TUTORIAL RELEASED\n"
"Coronado Enterprises has a full line of computer language\n"
"programming tutorials available. Write and ask for the\n"
"latest information.\n"
" Coronado Enterprises\n"
" 12501 Coronado Ave NE\n"
" Albuquerque, NM 87122\n\n"
"There is another story about danger at the airport due to\n"
"construction. Be very careful!\n";
// Help
else if (verb == help)
cout <<
"Each action requires a verb, or a verb and a noun, and only\n"
"the first two words of the command are significant, any \n"
"other words on a line are ignored. The four directions can\n"
"be abbreviated to the first letter to make it easier to get\n"
"to your flight. The entire vocabulary is given as;\n\n"
" ------- verbs ------- ---- nouns ----\n"
" north drop read keys money\n"
" east get buy candy monitor\n"
" south look help ticket paper\n"
" west quit inventory\n\n"
" look = give more information on current location\n"
" inventory = list items I am carrying\n\n"
"You better hurry, you just wasted a minute reading this.\n\n";
// Quit
else if (verb == quit) ; // Ignore to prevent message
else
cout << "I don't understand what you want.\n";
}