#include #include "conio.h" #include "map.h" #include "message.txt" #include "words.h" #include "items.h" #include "schedule.h" 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; extern schedule flight_info; extern items personal_items; extern words input_words; void map::initialize(void) { cout << startup_message; present_location = &your_car; 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 } void map::perform_action(void) { if (input_words.is_a_direction()) // Move to a new location { result = present_location->move(input_words.get_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) { input_words.stop_game(); // Set the verb to "quit" cout << "Hit any key to end the game."; getch(); } } // Inventory else if (input_words.get_verb() == inventory) personal_items.list_items(); // Look else if (input_words.get_verb() == look) present_location->display_list_of_items(); // Drop item else if (input_words.get_verb() == drop) { if (personal_items.item_here(input_words.get_noun())) { personal_items.drop_item(input_words.get_noun()); present_location->add_item(input_words.get_noun()); cout << " Dropped.\n"; } else { cout << "You can't drop what you don't have.\n"; } } // Get item else if (input_words.get_verb() == get) { if (present_location->item_here(input_words.get_noun())) { present_location->drop_item(input_words.get_noun()); personal_items.add_item(input_words.get_noun()); cout << " Picked up.\n"; } else { cout << "It isn't here so you can't pick it up.\n"; } } // Buy candy else if ((input_words.get_verb() == buy) && (input_words.get_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 ((input_words.get_verb() == read) && (input_words.get_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 ((input_words.get_verb() == read) && (input_words.get_noun() == monitor) && (present_location == &ticket_counter)) { flight_info.list_flights(present_location); } // Read monitor else if ((input_words.get_verb() == read) && (input_words.get_noun() == monitor) && (present_location == &waiting_area)) { flight_info.list_flights(present_location); } // Read paper else if ((input_words.get_verb() == read) && (input_words.get_noun() == paper) && (present_location == &lobby)) { cout << paper_message; } // Help else if (input_words.get_verb() == help) { cout << help_message; } // Quit else if (input_words.get_verb() == quit) // Ignore to prevent { // message output ; } else { cout << "I don't understand what you want.\n"; } }