From 8097179ecb6e5bbbdec23da99f94ea98c33f8490 Mon Sep 17 00:00:00 2001 From: Christopher Liu Date: Sun, 10 Jul 2016 23:24:10 -0400 Subject: [PATCH 01/17] Final Project --- Project proposal.docx | Bin 0 -> 86183 bytes func.h | 15 +++++++ game.c | 88 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 103 insertions(+) create mode 100644 Project proposal.docx create mode 100644 func.h create mode 100644 game.c diff --git a/Project proposal.docx b/Project proposal.docx new file mode 100644 index 0000000000000000000000000000000000000000..f05bc843af95e3b4c18b2d95308eba5db8f67cc5 GIT binary patch literal 86183 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%0D_m4`?Jy%&9%obkbO?xcBG_669lm{J$K3S+6+=K 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 literal 0 HcmV?d00001 diff --git a/func.h b/func.h new file mode 100644 index 0000000..080ebc3 --- /dev/null +++ b/func.h @@ -0,0 +1,15 @@ +#ifndef FUNC_H +#define FUNC_H + +typedef struct { + char * room_name; + char * items[10]; + char entrance_msg[200]; + char description[200]; +} room; + +typedef struct { + room current_room; +} character; + +#endif // FUNC_H diff --git a/game.c b/game.c new file mode 100644 index 0000000..5800b66 --- /dev/null +++ b/game.c @@ -0,0 +1,88 @@ +#include "func.h" +#include +#include + +void print_room_summary(room room) +{ + printf("%s\n", room.description); + int size = sizeof(room.items)/sizeof(room.items[0]); + int saw = 0; + if (size) + { + printf("I see "); + for (int i = 0; i < size - 1; i++) + { + if (room.items[i] != NULL) + { + printf("a %s, ", room.items[i]); + saw = 1; + } + else if (i == size-1 && room.items[size-1] != NULL) + { + printf("and a %s.\n", room.items[size-1]); + saw = 1; + } + } + if (!saw) printf("nothing.\n\n"); + } +} + +void do_command(char* command) +{ + char * commandPtr = command; + char * command_list[8] = {"look", "open", "goto", "take", "help", "yell", "put", "drop"}; + char arg1[sizeof(command)]; + char arg2[sizeof(command)]; + + for(int i = 0; *commandPtr != ' ' && i <= (int) sizeof(command); i++) + { + arg1[i] = *commandPtr; + commandPtr++; + } + for(int i = 0; *commandPtr != '\0'; i++) + { + commandPtr++; + arg2[i] = *commandPtr; + } + arg2[strlen(arg2)] = '\0'; + + printf("ARGS: %s|%s|\n", arg1, arg2); + while (getchar() != '\n'); + + + for (int i = 0; i < (int) (sizeof(command_list)/sizeof(command_list[0])); i++) + { + if (strcmp(arg1, command_list[i]) == 0) + { + printf("Found a command! %s\n", command_list[i]); + } + } + +} +int main() +{ + int running = 1; + character player; + + /* SET START --------------------------------*/ + room start; + strcpy(start.description , "Game Name. [goto] the bedroom to start."); + /* SET START --------------------------------*/ + + /* SET BEDROOM --------------------------------*/ + room bedroom = {"Bedroom", {"pencil", "towel", "backpack"}}; + strcpy(bedroom.entrance_msg, "You wake up."); + /* SET BEDROOM --------------------------------*/ + + player.current_room = start; + + while (running) + { + print_room_summary(player.current_room); + char command[100]; + scanf("%[^\n]", command); + do_command(command); + + } + return 0; +} From 11ab32166c9f90d97bd43d6b9a030698533b00ca Mon Sep 17 00:00:00 2001 From: Christopher Liu Date: Sun, 10 Jul 2016 23:27:27 -0400 Subject: [PATCH 02/17] test --- FinalProject | 1 + 1 file changed, 1 insertion(+) create mode 160000 FinalProject diff --git a/FinalProject b/FinalProject new file mode 160000 index 0000000..18fffed --- /dev/null +++ b/FinalProject @@ -0,0 +1 @@ +Subproject commit 18fffed08b0d8fb94c2f8aa97d5b49f3a447d22c From 9194daad29b1a6d3a3141a1e916c57954ccce55a Mon Sep 17 00:00:00 2001 From: Christopher Liu Date: Sun, 10 Jul 2016 23:38:06 -0400 Subject: [PATCH 03/17] Added .txt proposal --- Proposal.txt | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Proposal.txt diff --git a/Proposal.txt b/Proposal.txt new file mode 100644 index 0000000..877bf25 --- /dev/null +++ b/Proposal.txt @@ -0,0 +1,28 @@ +Text Adventure Game +A simple text adventure game that allows you to pick up items, look around, and go to different rooms. The story I haven’t figured out yet. + +Todo: +1. Player + a. structure with + i. location (takes room) + ii. inventory – array +2. Inventory + a. array of player structure probably + b. available items could be an enumerator +3. Room structure + a. each room has a summary when you walk into it + b. each room has a different summary for when you look + c. Room summaries can change + d. rooms have items in them that you can take +4. Commands + a. housed in a player command function + b. Look – gives a room’s summary + i. in bag = see inventory + c. Open – goes to a smaller “room” like a cabinet, closet, etc. + d. Go + i. Go back, to previous room. + e. Take – take an item in environment from inventory + f. Help – gives all available commands + g. yell – call something, doesn’t do anything most of the time + h. Hint – Maybe implement suggested commands + i. put – try to put an item in something else From e349481601e64b2d3f047d396df20ebab3f36a57 Mon Sep 17 00:00:00 2001 From: Christopher Liu Date: Mon, 11 Jul 2016 20:47:57 -0400 Subject: [PATCH 04/17] added rooms, goto, input sanitization moveto function --- Game/a.out | Bin 0 -> 13280 bytes Game/func.h | 1 + Game/func.h.gch | Bin 0 -> 166368 bytes Game/game.c | 169 ++++++++++++++++++++++++++++++++++++++++++------ 4 files changed, 150 insertions(+), 20 deletions(-) create mode 100755 Game/a.out create mode 100644 Game/func.h.gch diff --git a/Game/a.out b/Game/a.out new file mode 100755 index 0000000000000000000000000000000000000000..0d6a55a42b4ee570fcd16fc56c2fbf0f1ca8a81f GIT binary patch literal 13280 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 Ua|3;Pi01}3Q5x3gOiv;H0avgAoB#j- literal 0 HcmV?d00001 diff --git a/Game/func.h b/Game/func.h index 080ebc3..b22e90e 100644 --- a/Game/func.h +++ b/Game/func.h @@ -3,6 +3,7 @@ typedef struct { char * room_name; + char * connected_rooms[10]; char * items[10]; char entrance_msg[200]; char description[200]; diff --git a/Game/func.h.gch b/Game/func.h.gch new file mode 100644 index 0000000000000000000000000000000000000000..a0aac08841bf28555ac2052e13a68c9e7e1bd438 GIT binary patch literal 166368 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 XptHc|8K;&{9V{0%y>WJ)2n7BMaV|M5 literal 0 HcmV?d00001 diff --git a/Game/game.c b/Game/game.c index 5800b66..50ef023 100644 --- a/Game/game.c +++ b/Game/game.c @@ -1,6 +1,7 @@ #include "func.h" #include #include +#include void print_room_summary(room room) { @@ -12,77 +13,205 @@ void print_room_summary(room room) printf("I see "); for (int i = 0; i < size - 1; i++) { - if (room.items[i] != NULL) + if (room.items[i] == NULL && saw == 1) { - printf("a %s, ", room.items[i]); - saw = 1; + printf("and a %s.\n\n", room.items[i-1]); + break; } - else if (i == size-1 && room.items[size-1] != NULL) + else if (room.items[i] != NULL && room.items[i+1] != NULL) { - printf("and a %s.\n", room.items[size-1]); + printf("a %s, ", room.items[i]); saw = 1; } + } if (!saw) printf("nothing.\n\n"); } } -void do_command(char* command) +void get_args(char** arg1Ptr , char ** arg2Ptr, char* command) { char * commandPtr = command; char * command_list[8] = {"look", "open", "goto", "take", "help", "yell", "put", "drop"}; - char arg1[sizeof(command)]; - char arg2[sizeof(command)]; + char *arg1 = (char*) malloc(strlen(command)*sizeof(char)); + char *arg2 = (char*) malloc(strlen(command)*sizeof(char)); - for(int i = 0; *commandPtr != ' ' && i <= (int) sizeof(command); i++) + for(int i = 0; *commandPtr != ' ' && i <= (int) strlen(command); i++) { arg1[i] = *commandPtr; commandPtr++; + if (*commandPtr == '\n') + { + arg1[i+1] = '\0'; + break; + } + if (*commandPtr == ' ') + { + arg1[i+1] = '\0'; + break; + } } + realloc(arg1, (strlen(arg1)+1)*sizeof(char)); for(int i = 0; *commandPtr != '\0'; i++) { commandPtr++; arg2[i] = *commandPtr; + if (*commandPtr == '\n' || *commandPtr == '\0') + { + arg2[i] = '\0'; + break; + } } - arg2[strlen(arg2)] = '\0'; - - printf("ARGS: %s|%s|\n", arg1, arg2); - while (getchar() != '\n'); - + realloc(arg2, (strlen(arg2)+1)*sizeof(char)); + printf("ARGS: |%s|, |%s|\n", arg1, arg2); + int found_command = 0; for (int i = 0; i < (int) (sizeof(command_list)/sizeof(command_list[0])); i++) { if (strcmp(arg1, command_list[i]) == 0) { - printf("Found a command! %s\n", command_list[i]); + found_command = 1; + } + } + + if (found_command) + { + *arg1Ptr = arg1; + *arg2Ptr = arg2; + } + else if (*arg1 == '\n') + { + *arg1Ptr = "none"; + *arg2Ptr = arg2; + } + else + { + *arg1Ptr = NULL; + *arg2Ptr = NULL; + } + + if (sizeof(arg1)) + { + arg1 = NULL; + } + if (sizeof(arg2)) + { + arg2 = NULL; + } + printf("Made args: |%s|, |%s|\n", *arg1Ptr, *arg2Ptr); +} + +void moveto(character*playerPtr, room droom, room sroom) +{ + int moved = 0; + if (strcmp(sroom.room_name,droom.room_name) == 0) + { + printf("You're already here.\n"); + return; + } + for (int i = 0; i < (int) (sizeof(sroom.connected_rooms)/sizeof(sroom.connected_rooms[0])); i++) + { + if (sroom.connected_rooms[i]) + { + if (strcmp(droom.room_name, sroom.connected_rooms[i]) == 0) + { + playerPtr->current_room = droom; + printf("\033[2J"); + printf("%s\n", playerPtr->current_room.entrance_msg); + moved = 1; + } } } + if (!moved) + { + printf("I can't get to the %s from here.\n", droom.room_name); + } } int main() { int running = 1; character player; + character * playerPtr = &player; /* SET START --------------------------------*/ - room start; + room start = {"start", {"bedroom"}}; strcpy(start.description , "Game Name. [goto] the bedroom to start."); /* SET START --------------------------------*/ /* SET BEDROOM --------------------------------*/ - room bedroom = {"Bedroom", {"pencil", "towel", "backpack"}}; + room bedroom = {"bedroom", {"start", "kitchen"}, {"pencil", "towel", "backpack"}}; strcpy(bedroom.entrance_msg, "You wake up."); + strcpy(bedroom.description, "My bedroom. Nothing special."); /* SET BEDROOM --------------------------------*/ + /*SET KITCHEN ----------------------------------*/ + room kitchen = {"kitchen", {"bedroom"}}; + /*SET KITCHEN ----------------------------------*/ + + room rooms[3] = {start, bedroom, kitchen}; player.current_room = start; + printf("\033[2J"); + print_room_summary(player.current_room); + printf("\n"); while (running) { + + /* GET INPUT */ + int n = 3; + char * command = malloc(n*sizeof(char)); + fgets(command, n, stdin); //Take command + size_t last = strlen(command); + while (command[last-1] != '\n') //stolen from powerpoint + { + n *= 2; + command = realloc(command, n); + fgets(command+last, n/2, stdin); + last = strlen(command); + } + char *arg1, *arg2; + char ** arg1Ptr = &arg1; + char ** arg2Ptr = &arg2; + get_args(arg1Ptr, arg2Ptr, command); + printf("Got args: |%s|, |%s|\n", arg1, arg2); + free(command); + /* GET INPUT*/ + + printf("\033[2J"); print_room_summary(player.current_room); - char command[100]; - scanf("%[^\n]", command); - do_command(command); + if (arg1 == NULL && arg2 == NULL) + { + printf("I don't know how to do that."); + } + else if (strcmp(arg1, "none") == 0) + ; + else if (strcmp(arg1, "goto") == 0) + { + char * room_names[3] = {"start", "bedroom", "kitchen"}; + int changed = 0; + room to_room; + for (int i = 0; i < (int) (sizeof(rooms)/sizeof(rooms[0])); i++) + { + if (strcmp(arg2, room_names[i]) == 0) + { + to_room = rooms[i]; + printf("\033[2J"); + moveto(playerPtr, to_room, player.current_room); + changed = 1; + print_room_summary(player.current_room); + } + } + if (!changed) + { + printf("I don't know where that is."); + } + + if (*arg1Ptr) free(*arg1Ptr); + if (*arg2Ptr) free(*arg2Ptr); + } + printf("\n"); } return 0; } From a641ce11de7180a1efb278cd09a90cda3f61e1be Mon Sep 17 00:00:00 2001 From: Christopher Liu Date: Wed, 13 Jul 2016 15:36:07 -0400 Subject: [PATCH 05/17] added and moved functions, added a little story added look note take other simplifications A bit of story --- Game/FinalProject | 1 - Game/func.h | 244 +++++++++++++++++++++++++++++++++++++++++++++- Game/game.c | 244 ++++++++++++++-------------------------------- 3 files changed, 314 insertions(+), 175 deletions(-) delete mode 160000 Game/FinalProject diff --git a/Game/FinalProject b/Game/FinalProject deleted file mode 160000 index 18fffed..0000000 --- a/Game/FinalProject +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 18fffed08b0d8fb94c2f8aa97d5b49f3a447d22c diff --git a/Game/func.h b/Game/func.h index b22e90e..84d391c 100644 --- a/Game/func.h +++ b/Game/func.h @@ -1,5 +1,8 @@ #ifndef FUNC_H #define FUNC_H +#include +#include +#include typedef struct { char * room_name; @@ -7,10 +10,249 @@ typedef struct { char * items[10]; char entrance_msg[200]; char description[200]; + char look_msg[200]; + int items_size; } room; typedef struct { - room current_room; + room * current_room; + int has_backpack; + int inventory_size; + char * inventory[6]; + } character; +void get_args(char** arg1Ptr , char ** arg2Ptr, char* command) +{ + char * commandPtr = command; + char *arg1 = (char*) malloc(strlen(command)*sizeof(char)); + char *arg2 = (char*) malloc(strlen(command)*sizeof(char)); + + for(int i = 0; *commandPtr != ' ' && i <= (int) strlen(command); i++) + { + arg1[i] = *commandPtr; + commandPtr++; + if (*commandPtr == '\n') + { + arg1[i+1] = '\0'; + break; + } + if (*commandPtr == ' ') + { + arg1[i+1] = '\0'; + break; + } + } + realloc(arg1, (strlen(arg1)+1)*sizeof(char)); + for(int i = 0; *commandPtr != '\0'; i++) + { + commandPtr++; + arg2[i] = *commandPtr; + if (*commandPtr == '\n' || *commandPtr == '\0') + { + arg2[i] = '\0'; + break; + } + } + realloc(arg2, (strlen(arg2)+1)*sizeof(char)); + *arg1Ptr = arg1; + *arg2Ptr = arg2; +} + +void print_room_summary(character *playerPtr) +{ + int saw = 0, is_last = 0; + printf("|%s|\n", playerPtr->current_room->room_name); + printf("%s\n", playerPtr->current_room->description); + + printf("I see"); + for (int i = 0; i < playerPtr->current_room->items_size; i++) + { + is_last = 1; + for (int j = i+1; j < playerPtr->current_room->items_size; j++) + { + if (playerPtr->current_room->items[j] != NULL) is_last = 0; + } + if (playerPtr->current_room->items[i] == NULL) + ; + else if (is_last && saw == 1) + { + printf(" and a %s", playerPtr->current_room->items[i]); + } + else + { + printf(" a %s", playerPtr->current_room->items[i]); + if (playerPtr->current_room->items[i+1] != NULL) printf(","); + saw = 1; + } + + } + if (!saw) printf(" nothing here"); + printf(".\n"); + + if (!playerPtr->has_backpack) return; + printf("I have: "); + for (int i = 0;i < playerPtr->inventory_size; i++) + { + if (playerPtr->inventory[i] == NULL) continue; + printf("|%s| ", playerPtr->inventory[i]); + } + + printf("\n"); +} +void take(character * playerPtr, char * item, room * roomPtr, int room_items_size) +{ + int slot = 0; + while (playerPtr->inventory[slot] != NULL) + { + slot++; + } + if (slot+1 == playerPtr->inventory_size) + { + printf("\033[2J"); + printf("I have no room left in my bag. Might as well just sit here."); + return; + } + for (int i = 0; i < room_items_size; i++) + { + if (playerPtr->current_room->items[i] != NULL) + { + if(strcmp(playerPtr->current_room->items[i], item) == 0) + { + if (strcmp(item, "backpack") == 0) + { + playerPtr->has_backpack = 1; + playerPtr->current_room->items[i] = NULL; + printf("\033[2J"); + print_room_summary(playerPtr); + return; + } + if (playerPtr->has_backpack == 0) + { + printf("I try to pick up the %s, but I hopelessly fumble and drop it.", item); + return; + } + playerPtr->inventory[slot] = playerPtr->current_room->items[i]; + roomPtr->items[i] = NULL; + printf("%s\n", playerPtr->current_room->items[i]); + printf("\033[2J"); + print_room_summary(playerPtr); + return; + } + } + } + printf("I can't find a %s here.", item); +} +void moveto(character*playerPtr, char *droom, room * rooms[], char * room_strings[]) +{ + int connected = 0, found = 0; + room *to_room; + for (int i = 0; ;i++) + { + if (strcmp(room_strings[i], "END") == 0) + break; + if (strcmp(droom, room_strings[i]) == 0) + { + to_room = rooms[i]; + found = 1; + } + } + if (!found) + { + printf("I don't know where that is."); + return; + } + if (strcmp(playerPtr->current_room->room_name,droom) == 0) + { + printf("You're already here."); + return; + } + if (strcmp(playerPtr->current_room->room_name, "bedroom") == 0) + { + if (playerPtr->has_backpack == 0) + { + printf("I should [take] my backpack before I go."); + return; + } + } + for (int i = 0; ;i++) + { + if (strcmp(playerPtr->current_room->connected_rooms[i], to_room->room_name) == 0) + { + connected = 1; + break; + } + if (strcmp(playerPtr->current_room->connected_rooms[i], "END") == 0) + { + break; + } + } + if (!connected) + { + printf("I can't get to the %s from here.", to_room->room_name); + return; + } + playerPtr->current_room = to_room; + printf("\033[2J"); + printf("%s\n", playerPtr->current_room->entrance_msg); + printf("Press enter to continue."); +} + +void look(character* playerPtr) +{ + printf("\033[2J"); + printf("%s\n", playerPtr->current_room->look_msg); +} +void note(character* playerPtr) +{ + static int notes_read = 0; + for (int i = 0; i < playerPtr->inventory_size; i++) + { + if (playerPtr->inventory[i] != NULL && strcmp(playerPtr->inventory[i], "note") == 0) + { + notes_read++; + playerPtr->inventory[i] = NULL; + } + } + + if (notes_read == 0) + { + printf("Read what?"); + return; + } + + printf("\033[2J"); + int note_reader = 1; + do + { + switch (note_reader) + { + case 1: + printf("Hello\n"); + break; + case 2: + printf("You're the greatest, you know that?\n"); + break; + case 3: + printf("I've been watching\n"); + break; + case 4: + printf("is that weird? I didn't mean for it to be weird.\n"); + break; + case 5: + printf("anyway. I want to meet you!\n"); + break; + case 6: + printf("I'm pretty sure you can't find anyone else to talk to you, anyway.\n"); + break; + case 7: + printf("Do you know where I am? You have to [goto] a very specific room from your bedroom\n"); + break; + case 8: + printf("You can find it. Try the first letter of all the notes I've left you. :) see you soon\n"); + break; + } + note_reader++; + } while (note_reader <= notes_read); +} #endif // FUNC_H diff --git a/Game/game.c b/Game/game.c index 50ef023..cea3b37 100644 --- a/Game/game.c +++ b/Game/game.c @@ -1,160 +1,56 @@ #include "func.h" -#include -#include -#include -void print_room_summary(room room) -{ - printf("%s\n", room.description); - int size = sizeof(room.items)/sizeof(room.items[0]); - int saw = 0; - if (size) - { - printf("I see "); - for (int i = 0; i < size - 1; i++) - { - if (room.items[i] == NULL && saw == 1) - { - printf("and a %s.\n\n", room.items[i-1]); - break; - } - else if (room.items[i] != NULL && room.items[i+1] != NULL) - { - printf("a %s, ", room.items[i]); - saw = 1; - } - - } - if (!saw) printf("nothing.\n\n"); - } -} - -void get_args(char** arg1Ptr , char ** arg2Ptr, char* command) -{ - char * commandPtr = command; - char * command_list[8] = {"look", "open", "goto", "take", "help", "yell", "put", "drop"}; - char *arg1 = (char*) malloc(strlen(command)*sizeof(char)); - char *arg2 = (char*) malloc(strlen(command)*sizeof(char)); - - for(int i = 0; *commandPtr != ' ' && i <= (int) strlen(command); i++) - { - arg1[i] = *commandPtr; - commandPtr++; - if (*commandPtr == '\n') - { - arg1[i+1] = '\0'; - break; - } - if (*commandPtr == ' ') - { - arg1[i+1] = '\0'; - break; - } - } - realloc(arg1, (strlen(arg1)+1)*sizeof(char)); - for(int i = 0; *commandPtr != '\0'; i++) - { - commandPtr++; - arg2[i] = *commandPtr; - if (*commandPtr == '\n' || *commandPtr == '\0') - { - arg2[i] = '\0'; - break; - } - } - realloc(arg2, (strlen(arg2)+1)*sizeof(char)); - printf("ARGS: |%s|, |%s|\n", arg1, arg2); - int found_command = 0; - for (int i = 0; i < (int) (sizeof(command_list)/sizeof(command_list[0])); i++) - { - if (strcmp(arg1, command_list[i]) == 0) - { - found_command = 1; - } - } - if (found_command) - { - *arg1Ptr = arg1; - *arg2Ptr = arg2; - } - else if (*arg1 == '\n') - { - *arg1Ptr = "none"; - *arg2Ptr = arg2; - } - else - { - *arg1Ptr = NULL; - *arg2Ptr = NULL; - } +void print_room_summary(character *playerPtr); +void get_args(char**, char**, char*); +void take(character*,char*,room*,int); +void moveto(character*, char*, room**, char**); +void look(character*); +void note(character*); - if (sizeof(arg1)) - { - arg1 = NULL; - } - if (sizeof(arg2)) - { - arg2 = NULL; - } - printf("Made args: |%s|, |%s|\n", *arg1Ptr, *arg2Ptr); -} - -void moveto(character*playerPtr, room droom, room sroom) -{ - int moved = 0; - if (strcmp(sroom.room_name,droom.room_name) == 0) - { - printf("You're already here.\n"); - return; - } - for (int i = 0; i < (int) (sizeof(sroom.connected_rooms)/sizeof(sroom.connected_rooms[0])); i++) - { - if (sroom.connected_rooms[i]) - { - if (strcmp(droom.room_name, sroom.connected_rooms[i]) == 0) - { - playerPtr->current_room = droom; - printf("\033[2J"); - printf("%s\n", playerPtr->current_room.entrance_msg); - moved = 1; - } - } - } - if (!moved) - { - printf("I can't get to the %s from here.\n", droom.room_name); - } - -} int main() { int running = 1; - character player; - character * playerPtr = &player; - - /* SET START --------------------------------*/ - room start = {"start", {"bedroom"}}; - strcpy(start.description , "Game Name. [goto] the bedroom to start."); - /* SET START --------------------------------*/ - - /* SET BEDROOM --------------------------------*/ - room bedroom = {"bedroom", {"start", "kitchen"}, {"pencil", "towel", "backpack"}}; - strcpy(bedroom.entrance_msg, "You wake up."); - strcpy(bedroom.description, "My bedroom. Nothing special."); - /* SET BEDROOM --------------------------------*/ - - /*SET KITCHEN ----------------------------------*/ - room kitchen = {"kitchen", {"bedroom"}}; - /*SET KITCHEN ----------------------------------*/ - room rooms[3] = {start, bedroom, kitchen}; - player.current_room = start; + /* SET ROOMS -----------------------------------------------------------------*/ + /* SET START --------------------------------*/ + room start = {"start", {"bedroom", "END"}}; + room * startPtr = &start; + strcpy(start.description , "C Project. [goto] the bedroom to start."); + /* SET START --------------------------------*/ + + /* SET BEDROOM --------------------------------*/ + room bedroom = {"bedroom", {"start", "yard", "END"}, {"note", "key", "backpack"},{},{},{},3}; + room * bedroomPtr = &bedroom; + strcpy(bedroom.entrance_msg, "I really have a \nheadache, among other things.\nI should [look] around."); + strcpy(bedroom.description, "My bedroom. Nothing special. "); + strcpy(bedroom.look_msg, "It's already late.\nI should [goto] the yard soon.\nWhere is everyone?\n"); + /* SET BEDROOM --------------------------------*/ + + /*SET YARD----------------------------------*/ + room yard = {"yard", {"bedroom", "park", "END"},{"note"},{},{},{},1}; + room * yardPtr = &yard; + strcpy(yard.look_msg, "There's nobody here.\nWait\nI think I see someone\nin the park.\nI could try to [yell] or go see who it is."); + /*SET YARD----------------------------------*/ + + + room * room_list[4] = {startPtr, bedroomPtr, yardPtr}; + char * room_list_strings[4] = {"start", "bedroom", "yard", "END"}; + /* SET ROOMS -----------------------------------------------------------------*/ + + /* SET PLAYER */ + character player = {NULL,0,6,{NULL,NULL,NULL,NULL,NULL,NULL}}; + character * playerPtr = &player; + player.current_room = startPtr; + /* SET PLAYER */ + /* SETUP INTERFACE */ printf("\033[2J"); - print_room_summary(player.current_room); - printf("\n"); + print_room_summary(playerPtr); + printf("\n\n"); //just for this one line so that everything lines up in the beginning + + int guy_ran = 0; while (running) { @@ -174,44 +70,46 @@ int main() char ** arg1Ptr = &arg1; char ** arg2Ptr = &arg2; get_args(arg1Ptr, arg2Ptr, command); - printf("Got args: |%s|, |%s|\n", arg1, arg2); free(command); /* GET INPUT*/ printf("\033[2J"); - print_room_summary(player.current_room); + print_room_summary(playerPtr); - if (arg1 == NULL && arg2 == NULL) + /* EXECUTE COMMANDS -------------------------------------------------------*/ + if (strcmp(arg1, "goto") == 0) { - printf("I don't know how to do that."); + moveto(playerPtr, arg2, room_list, room_list_strings); } - else if (strcmp(arg1, "none") == 0) - ; - else if (strcmp(arg1, "goto") == 0) + else if (strcmp(arg1, "take") == 0) { - char * room_names[3] = {"start", "bedroom", "kitchen"}; - int changed = 0; - room to_room; - for (int i = 0; i < (int) (sizeof(rooms)/sizeof(rooms[0])); i++) - { - if (strcmp(arg2, room_names[i]) == 0) - { - to_room = rooms[i]; - printf("\033[2J"); - moveto(playerPtr, to_room, player.current_room); - changed = 1; - print_room_summary(player.current_room); - } - } - if (!changed) + take(playerPtr, arg2, playerPtr->current_room, playerPtr->inventory_size); + } + else if (strcmp(arg1, "look") == 0) + { + look(playerPtr); + } + else if (strcmp(arg1, "read") == 0 && strcmp(arg2, "note") == 0) + { + note(playerPtr); + } + else if (strcmp(arg1, "yell") == 0) + { + if (strcmp(playerPtr->current_room->room_name, "yard") == 0 && guy_ran == 0) { - printf("I don't know where that is."); + printf("\033[2J"); + printf("The man in the park ran away."); + guy_ran = 1; } - - if (*arg1Ptr) free(*arg1Ptr); - if (*arg2Ptr) free(*arg2Ptr); + else printf("In the command line, nobody can hear you scream."); } - printf("\n"); + else if (strcmp(arg1, "\n") == 0); + else (printf("I don't know how to do that.")); + /* COMMANDS -------------------------------------------------------*/ + + free(*arg1Ptr); + free(*arg2Ptr); + printf("\n\n"); } return 0; } From 4694c4adb79b1937dfe72270bb50dc174f5fdc60 Mon Sep 17 00:00:00 2001 From: Christopher Liu Date: Fri, 15 Jul 2016 10:04:31 -0400 Subject: [PATCH 06/17] Finished game cleaned up output (newlines) polished up rooms Added end game (shack) notes Pretty unnecessary quit room todo: documentation, comments --- .gitignore | 6 +++ Game/func.h | 132 ++++++++++++++++++++++++++++++------------------ Game/game.c | 139 +++++++++++++++++++++++++++++++++++++++------------ Game/rooms.h | 43 ++++++++++++++++ 4 files changed, 239 insertions(+), 81 deletions(-) create mode 100644 .gitignore create mode 100644 Game/rooms.h diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f7fb7b3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ + +Game/' + +*.swp + +Game/a.exe diff --git a/Game/func.h b/Game/func.h index 84d391c..ca223ae 100644 --- a/Game/func.h +++ b/Game/func.h @@ -4,6 +4,7 @@ #include #include + typedef struct { char * room_name; char * connected_rooms[10]; @@ -19,6 +20,8 @@ typedef struct { int has_backpack; int inventory_size; char * inventory[6]; + int notes_read; + int has_poo; } character; @@ -32,12 +35,7 @@ void get_args(char** arg1Ptr , char ** arg2Ptr, char* command) { arg1[i] = *commandPtr; commandPtr++; - if (*commandPtr == '\n') - { - arg1[i+1] = '\0'; - break; - } - if (*commandPtr == ' ') + if (*commandPtr == '\n' || *commandPtr == ' ') { arg1[i+1] = '\0'; break; @@ -63,7 +61,7 @@ void print_room_summary(character *playerPtr) { int saw = 0, is_last = 0; printf("|%s|\n", playerPtr->current_room->room_name); - printf("%s\n", playerPtr->current_room->description); + printf("%s\n\n", playerPtr->current_room->description); printf("I see"); for (int i = 0; i < playerPtr->current_room->items_size; i++) @@ -90,15 +88,18 @@ void print_room_summary(character *playerPtr) if (!saw) printf(" nothing here"); printf(".\n"); - if (!playerPtr->has_backpack) return; + if (!playerPtr->has_backpack) + { + printf("\n\n"); + return; + } printf("I have: "); for (int i = 0;i < playerPtr->inventory_size; i++) { if (playerPtr->inventory[i] == NULL) continue; printf("|%s| ", playerPtr->inventory[i]); } - - printf("\n"); + printf("\n\n"); } void take(character * playerPtr, char * item, room * roomPtr, int room_items_size) { @@ -124,7 +125,8 @@ void take(character * playerPtr, char * item, room * roomPtr, int room_items_siz playerPtr->has_backpack = 1; playerPtr->current_room->items[i] = NULL; printf("\033[2J"); - print_room_summary(playerPtr); + printf("I can hold things now.\nThere's a note still here! I can [read note].\n\n\n\n"); + printf("Press enter to continue.\n"); return; } if (playerPtr->has_backpack == 0) @@ -147,75 +149,109 @@ void moveto(character*playerPtr, char *droom, room * rooms[], char * room_string { int connected = 0, found = 0; room *to_room; - for (int i = 0; ;i++) + for (int i = 0;;i++) { if (strcmp(room_strings[i], "END") == 0) break; if (strcmp(droom, room_strings[i]) == 0) + { + to_room = rooms[i]; + found = 1; + } + } + for (int i = 0;;i++) + { + if (found && strcmp(playerPtr->current_room->connected_rooms[i], to_room->room_name) == 0) + { + connected = 1; + break; + } + if (strcmp(playerPtr->current_room->connected_rooms[i], "END") == 0) + { + + if (i-1 == 0) { - to_room = rooms[i]; - found = 1; + moveto(playerPtr, playerPtr->current_room->connected_rooms[0], rooms, room_strings); + return; } + break; + } } - if (!found) + + if (!found) { - printf("I don't know where that is."); + if (strlen(droom) != 0) + printf("I don't know where that is."); + return; } + if (strcmp(playerPtr->current_room->room_name,droom) == 0) { printf("You're already here."); return; } - if (strcmp(playerPtr->current_room->room_name, "bedroom") == 0) + if (!connected) + { + printf("I can't get to the %s from here.", to_room->room_name); + return; + } + if (strcmp(playerPtr->current_room->room_name, "bedroom") == 0 && playerPtr->has_backpack == 0) { - if (playerPtr->has_backpack == 0) + printf("I should [take] my backpack before I go."); + return; + } + if (strcmp(to_room->room_name, "kitchen") == 0) + { + for (int i = 0; i < playerPtr->inventory_size; i++) { - printf("I should [take] my backpack before I go."); + if (playerPtr->inventory[i] != NULL && strcmp(playerPtr->inventory[i], "dog poo") == 0) + playerPtr->has_poo = 1; + } + if (!playerPtr->has_poo) + { + printf("I don't feel like going to the kitchen without something to cook."); return; } } - for (int i = 0; ;i++) + if (strcmp(to_room->room_name, "shack") == 0) { - if (strcmp(playerPtr->current_room->connected_rooms[i], to_room->room_name) == 0) + int has_rkey = 0; + for (int i = 0; i < playerPtr->inventory_size; i++) { - connected = 1; - break; + if (playerPtr->inventory[i] != NULL && strcmp(playerPtr->inventory[i], "rusty key") == 0) + has_rkey = 1; } - if (strcmp(playerPtr->current_room->connected_rooms[i], "END") == 0) + if (!has_rkey) { - break; + printf("I can't get into the shack without a key."); + return; } } - if (!connected) - { - printf("I can't get to the %s from here.", to_room->room_name); - return; - } playerPtr->current_room = to_room; printf("\033[2J"); - printf("%s\n", playerPtr->current_room->entrance_msg); - printf("Press enter to continue."); + printf("%s\n\n\n\n", playerPtr->current_room->entrance_msg); + printf("Press enter to continue.\n"); } void look(character* playerPtr) { printf("\033[2J"); - printf("%s\n", playerPtr->current_room->look_msg); + printf("%s\n\n\n\n", playerPtr->current_room->look_msg); + printf("Press enter to continue.\n"); } void note(character* playerPtr) { - static int notes_read = 0; for (int i = 0; i < playerPtr->inventory_size; i++) { if (playerPtr->inventory[i] != NULL && strcmp(playerPtr->inventory[i], "note") == 0) { - notes_read++; + playerPtr->notes_read++; playerPtr->inventory[i] = NULL; } } - if (notes_read == 0) + if (playerPtr->notes_read == 0) { printf("Read what?"); return; @@ -228,31 +264,29 @@ void note(character* playerPtr) switch (note_reader) { case 1: - printf("Hello\n"); + + printf(" MAP: |"); printf(" MY SICK RAP:\n"); break; case 2: - printf("You're the greatest, you know that?\n"); + printf("BEDROOM -> YARD<- |"); printf("but for me to rap like a computer must be in my genes\n"); break; case 3: - printf("I've been watching\n"); + printf(" | / | \\ |"); printf("I got a laptop in my back pocket\n"); + printf("KITCHEN<- PARK ->SHACK |"); printf("my pen'll go off when I half cock it\n"); break; case 4: - printf("is that weird? I didn't mean for it to be weird.\n"); + printf(" | |"); printf("got a fat knot from that rap profit\n"); break; case 5: - printf("anyway. I want to meet you!\n"); + printf(" | |"); printf("made a living and a killing off it\n"); break; case 6: - printf("I'm pretty sure you can't find anyone else to talk to you, anyway.\n"); - break; - case 7: - printf("Do you know where I am? You have to [goto] a very specific room from your bedroom\n"); - break; - case 8: - printf("You can find it. Try the first letter of all the notes I've left you. :) see you soon\n"); + printf(" RAP HERE |"); printf(" --\"Gap Rod\""); + break; } note_reader++; - } while (note_reader <= notes_read); + } while (note_reader <= playerPtr->notes_read); + printf("\n\n\nPress enter to continue\n"); } #endif // FUNC_H diff --git a/Game/game.c b/Game/game.c index cea3b37..0f4aa56 100644 --- a/Game/game.c +++ b/Game/game.c @@ -1,7 +1,5 @@ #include "func.h" - - void print_room_summary(character *playerPtr); void get_args(char**, char**, char*); void take(character*,char*,room*,int); @@ -9,38 +7,75 @@ void moveto(character*, char*, room**, char**); void look(character*); void note(character*); + + int main() { - int running = 1; - /* SET ROOMS -----------------------------------------------------------------*/ - /* SET START --------------------------------*/ - room start = {"start", {"bedroom", "END"}}; + /* SET START --------------------------------*/ + room start = {"start", {"bedroom","QUIT", "END"},{},{},{},{},0}; room * startPtr = &start; - strcpy(start.description , "C Project. [goto] the bedroom to start."); - /* SET START --------------------------------*/ + strcpy(start.description , "Rapper Quest.\n[goto] the bedroom to start.\ntype QUIT to exit at any time."); + strcpy(start.look_msg, "Get out of here already"); + /* SET START --------------------------------*/ - /* SET BEDROOM --------------------------------*/ - room bedroom = {"bedroom", {"start", "yard", "END"}, {"note", "key", "backpack"},{},{},{},3}; + /* SET BEDROOM --------------------------------*/ + room bedroom = {"bedroom", {"yard", "kitchen", "QUIT", "END"}, {"note", "homework assignment", "backpack"},{},{},{},3}; room * bedroomPtr = &bedroom; - strcpy(bedroom.entrance_msg, "I really have a \nheadache, among other things.\nI should [look] around."); - strcpy(bedroom.description, "My bedroom. Nothing special. "); - strcpy(bedroom.look_msg, "It's already late.\nI should [goto] the yard soon.\nWhere is everyone?\n"); - /* SET BEDROOM --------------------------------*/ - - /*SET YARD----------------------------------*/ - room yard = {"yard", {"bedroom", "park", "END"},{"note"},{},{},{},1}; + strcpy(bedroom.entrance_msg, "I walk to my bedroom and sit on the bed.\nI should [look] around."); + strcpy(bedroom.description, "My bedroom. Nothing special. My bed is still undone."); + strcpy(bedroom.look_msg, "Someone tore up all my notes!\nI should go look for them.\nI should [take] my stuff first."); + /* SET BEDROOM --------------------------------*/ + /*SET YARD----------------------------------*/ + room yard = {"yard", {"bedroom", "park", "kitchen", "shack", "QUIT", "END"},{"note","garden gnome"},{},{},{},2}; room * yardPtr = &yard; - strcpy(yard.look_msg, "There's nobody here.\nWait\nI think I see someone\nin the park.\nI could try to [yell] or go see who it is."); - /*SET YARD----------------------------------*/ + strcpy(yard.entrance_msg, "I walk outside."); + strcpy(yard.description, "I haven't mowed the lawn in a while. "); + strcpy(yard.look_msg, "There's nobody here.\nWait, I think I see someone in the park.\nI could try to [yell] or go see who it is."); + /*SET YARD----------------------------------*/ + + /*SET PARK - there are two versions of park, one with the man and one scared away. Going to park will make you lose.*/ + room park = {"park", {"QUIT", "END"}, {"nasty death incoming"},{},{},{},1}; + strcpy(park.entrance_msg, "I walk to the park. I try to say hello to the man here."); + strcpy(park.description, "There's a man here. Frightened,\nhe pulls out a knife and stabs me."); + strcpy(park.look_msg, "Oh. He's still stabbing me.\nI'm gonna die pretty soon."); + + room park_ran = {"park", {"yard", "treehouse", "QUIT", "END"}, {"note", "dog poo"}, {},{},{}, 2}; + strcpy(park_ran.entrance_msg, "I walk to the park."); + strcpy(park_ran.description, "The park looks nice today.\nThe birds are chirping,\nsun is shining."); + strcpy(park_ran.look_msg, "Who didn't clean up their dog's waste?"); + room * parkPtr = &park; + /*SET PARK-------------------------------------------------*/ + + /*SET KITCHEN -- dog poo is required to go to the kitchen. */ + room kitchen = {"kitchen", {"bedroom", "yard", "QUIT", "END"}, {NULL, NULL }, {},{},{}, 2}; + strcpy(kitchen.entrance_msg, "I go to my kitchen."); + strcpy(kitchen.description, "It's so gross in here.\nI should learn to cook sometime soon."); + strcpy(kitchen.look_msg, "I can probably use the oven to [cook] something.\nIt smells like dog poo in here."); + room * kitchenPtr = &kitchen; + /*SET KITCHEN -- dog poo is required to go to the kitchen. */ + /*SET SHACK - end of the game once you "rap" in the shack with all notes. */ + room shack = {"shack", {"yard", "QUIT", "END"}, {"note"}, {}, {}, {}, 2}; + strcpy(shack.entrance_msg, "I unlock the shack.\nI have never been in here before, actually.\nKinda sad."); + strcpy(shack.description, "I can feel the shack's magic energies.\nEither that, or the fumes are getting me high."); + strcpy(shack.look_msg, "Hmm..."); + room * shackPtr = &shack; - room * room_list[4] = {startPtr, bedroomPtr, yardPtr}; - char * room_list_strings[4] = {"start", "bedroom", "yard", "END"}; + /*SET QUIT- going to this room is equivalent to losing the game.*/ + room quit = {"QUIT", {},{"participation trophy", "cookie", "cake"},{},{},{},3}; + strcpy(quit.entrance_msg, "Game over!"); + strcpy(quit.description, "This is the room just for losers. Unless you won. Then..good for you."); + strcpy(quit.look_msg, "Stop looking around. Just leave."); + room *quitPtr = &quit; + /*SET QUIT*/ + + room * roomPtr_list[7] = {startPtr, bedroomPtr, yardPtr, parkPtr, kitchenPtr, shackPtr, quitPtr}; + char * room_list_strings[8] = {"start", "bedroom", "yard", "park", "kitchen", "shack", "QUIT", "END"}; /* SET ROOMS -----------------------------------------------------------------*/ /* SET PLAYER */ - character player = {NULL,0,6,{NULL,NULL,NULL,NULL,NULL,NULL}}; + character player = {NULL,0,6,{"note",NULL,NULL,NULL,NULL,NULL},0,0}; character * playerPtr = &player; player.current_room = startPtr; /* SET PLAYER */ @@ -48,15 +83,17 @@ int main() /* SETUP INTERFACE */ printf("\033[2J"); print_room_summary(playerPtr); - printf("\n\n"); //just for this one line so that everything lines up in the beginning + printf("\n"); //just for this one line so that everything lines up in the beginning - int guy_ran = 0; + //GAME LOOP ------------------------------------------------------------------------- + int running = 2; while (running) { /* GET INPUT */ int n = 3; char * command = malloc(n*sizeof(char)); + printf(">> "); fgets(command, n, stdin); //Take command size_t last = strlen(command); while (command[last-1] != '\n') //stolen from powerpoint @@ -66,7 +103,7 @@ int main() fgets(command+last, n/2, stdin); last = strlen(command); } - char *arg1, *arg2; + char *arg1 = "", *arg2 = ""; char ** arg1Ptr = &arg1; char ** arg2Ptr = &arg2; get_args(arg1Ptr, arg2Ptr, command); @@ -77,15 +114,15 @@ int main() print_room_summary(playerPtr); /* EXECUTE COMMANDS -------------------------------------------------------*/ - if (strcmp(arg1, "goto") == 0) + if (strcmp(arg1, "goto") == 0 || (strcmp(arg1, "\n") == 0 && strlen(arg2) == 0)) { - moveto(playerPtr, arg2, room_list, room_list_strings); + moveto(playerPtr, arg2, roomPtr_list, room_list_strings); } else if (strcmp(arg1, "take") == 0) { take(playerPtr, arg2, playerPtr->current_room, playerPtr->inventory_size); } - else if (strcmp(arg1, "look") == 0) + else if (strcmp(arg1, "look") == 0 || strcmp(arg1, "think") == 0) { look(playerPtr); } @@ -95,21 +132,59 @@ int main() } else if (strcmp(arg1, "yell") == 0) { - if (strcmp(playerPtr->current_room->room_name, "yard") == 0 && guy_ran == 0) + if (strcmp(playerPtr->current_room->room_name, "yard") == 0 && parkPtr != &park_ran) { printf("\033[2J"); - printf("The man in the park ran away."); - guy_ran = 1; + printf("The man in the park ran away.\n\n\n\nPress enter to continue.\n"); + strcpy(yardPtr->look_msg, "There's nobody around.\nIs it Tuesday today?"); + parkPtr = &park_ran; + roomPtr_list[3] = &park_ran; } else printf("In the command line, nobody can hear you scream."); } + else if (strcmp(arg1, "cook") == 0 && strcmp(arg2, "dog poo") == 0) + { + printf("\033[2J"); + for (int i = 0; i < playerPtr->inventory_size; i++) + { + if (playerPtr->inventory[i] != NULL && strcmp(playerPtr->inventory[i], "dog poo") == 0) + { + printf("This is so gross...\nOh, something's stuck in here!\nIt's a note.\nAnd a key!\n\n\nPress enter to continue.\n"); + playerPtr->inventory[i] = NULL; + kitchenPtr->items[0] = "note"; + kitchenPtr->items[1] = "rusty key"; + break; + } + else if (i < playerPtr->inventory_size-1); + else + { + printf("\033[2J"); + print_room_summary(playerPtr); + printf("I don't have any dog poo left to cook :(\n"); + } + } + } + else if (strcmp(arg1, "rap") == 0) + { + if (playerPtr->notes_read < 5) + printf("I don't know any lyrics!"); + else if (playerPtr->current_room != shackPtr) + printf("My rhythm isn't that good. Plus the acoustics in the %s aren't too great.", playerPtr->current_room->room_name); + else + { + running = 0; + printf("The shack's energies pour into me as I give the greatest rap ever delivered.\nTo myself.\nIn a shack.\n"); } + } else if (strcmp(arg1, "\n") == 0); + else if (strcmp(arg2, "QUIT") == 0 || strcmp(arg1, "QUIT") == 0) + running = 0; else (printf("I don't know how to do that.")); /* COMMANDS -------------------------------------------------------*/ free(*arg1Ptr); free(*arg2Ptr); - printf("\n\n"); + printf("\n"); + } return 0; } diff --git a/Game/rooms.h b/Game/rooms.h new file mode 100644 index 0000000..d36b5a6 --- /dev/null +++ b/Game/rooms.h @@ -0,0 +1,43 @@ +#ifndef ROOMS_H +#define ROOMS_H +#include +#include "func.h" +#include + +/* SET ROOMS -----------------------------------------------------------------*/ + /* SET START --------------------------------*/ +room start = {"start", {"bedroom", "END"}}; +room * startPtr = &start; +strcpy(start.description , "C Project. [goto] the bedroom to start."); + /* SET START --------------------------------*/ + + /* SET BEDROOM --------------------------------*/ +room bedroom = {"bedroom", {"start", "yard", "END"}, {"note", "key", "backpack"},{},{},{},3}; +room * bedroomPtr = &bedroom; +strcpy(bedroom.entrance_msg, "I should [look] around."); +strcpy(bedroom.description, "My bedroom. Nothing special. "); +strcpy(bedroom.look_msg, "It's already late.\nI should [goto] the yard soon.\n"); + /* SET BEDROOM --------------------------------*/ + /*SET YARD----------------------------------*/ +room yard = {"yard", {"bedroom", "park", "END"},{"note"},{},{},{},1}; +room * yardPtr = &yard; +strcpy(yard.description, "I haven't mowed the lawn in a while. "); +strcpy(yard.look_msg, "There's nobody here.\nWait\nI think I see someone in the park.\nI could try to [yell] or go see who it is."); + /*SET YARD----------------------------------*/ + + /*SET PARK-------------------------------------------------*/ +room park = {"park", {"QUIT", "END"}, {},{},{},{},4}; +strcpy(park.description, "this is park. hi"); + +room park_ran = park; +strcpy(park_ran.description, "this is park1. usuk"); +room * parkPtr = &park; + /*SET PARK-------------------------------------------------*/ + +room quit = {"QUIT"}; +room *quitPtr = &quit; + +room * roomPtr_list[5] = {startPtr, bedroomPtr, yardPtr, parkPtr, quitPtr}; +char * room_list_strings[6] = {"start", "bedroom", "yard", "park", "QUIT", "END"}; + /* SET ROOMS -----------------------------------------------------------------*/ +#endif // ROOMS_H From f8ce207a53898289de6d37cbd41f45c11a65d39d Mon Sep 17 00:00:00 2001 From: Christopher Liu Date: Fri, 15 Jul 2016 10:04:41 -0400 Subject: [PATCH 07/17] forgot the a.out --- Game/a.out | Bin 13280 -> 21584 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Game/a.out b/Game/a.out index 0d6a55a42b4ee570fcd16fc56c2fbf0f1ca8a81f..1be83f483a3fbf26b516233e3e7288164d573d8f 100755 GIT binary patch literal 21584 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 literal 13280 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 Ua|3;Pi01}3Q5x3gOiv;H0avgAoB#j- From bac8bdd74af6227cf9c76ec45a98a9c8d885d638 Mon Sep 17 00:00:00 2001 From: Christopher Liu Date: Fri, 15 Jul 2016 10:22:03 -0400 Subject: [PATCH 08/17] Revert "forgot the a.out" This reverts commit f8ce207a53898289de6d37cbd41f45c11a65d39d. --- Game/a.out | Bin 21584 -> 13280 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Game/a.out b/Game/a.out index 1be83f483a3fbf26b516233e3e7288164d573d8f..0d6a55a42b4ee570fcd16fc56c2fbf0f1ca8a81f 100755 GIT binary patch literal 13280 zcmeHOeQX@X6(8q=xQ6yjN?KY-vZ6Hv1dc;VWj@^c(p)ovGc`#Jh7dNF^CdR1eb>8l zlSm2JJ#X=_EHY}3hL*H$MJuZUDXnmoNWEa^!!|BW3=JV_5f}vRo&>^zv>2L_{@$BC z=X{}Ge^sh(rQP@5%zMB0=FQCR-0a@558wW1o)9Ioh3K3mgz(|4pDTnV3~)kx4yVLv zn)Uuwfx7~0zCookkCK_<$4Z2A5{jm|F3`AcrV85|Gs`^p02oEMwAG9yqxNDbP9LTjj$uq|BG?He{&eP!PTW<-hT%DU^ zRR#S3nT`oBIEt%;OZ4S3+y__%mr@j!g3|oY9rcj=AxwcbgVNZz7-wvm5T6Du{SxLm zDD_1>&io@ck8@Kqzb?o3U5hcC6Y?n87&tG$xwIn@U)tKTX=&4r)+WewT!NG0nDvDt z=LO^qbH4x7vY%dew65WcC@aS)&M)Khs+>$^IF_KjWM?d3ar#1js&O(VXi3=^(qD4c zH~g>Nkw`|`Dpyn@j+RZ@^l}jLw-NaudZi~*eu_si1H}v!Gf>PxF$2X66f;oF!2do2 z4N|=+Q*TvCCr~b(nt52GOEo0BhGJM1OLbJLfV)??cVhiH5;%=DB*+wno!WI;sK6V( z?hhcq@_A@Lv5FN>k%kIP*nv}a-RV@eEku zAxbchz#dj9w?u|VrQP64J2}<};Fs`gL4tg4O6O{SjUkZXKk4}T(#lQ=FOG9 z#oYuUIG^#SEE6vZg0?D@Iz#{&YmAs4O3F>>X)jcPpXF9XzFgz z-k>@r)o@T9bpL=QxU_fecHbdpXac=4;yy#X3iNQriM)!R>x#}1YbU~nN3m?MX9%dh zz5}yTQ$~*yMY*q=*8eu^5QMUtQR+G{Rzr50gzLv@eLotm?HM5b2Q9kxqkHJLOV-9k z+JW8&OJ&%@Xz1y=U>220%Dw^x?>kVH`l!rj(T_6iY`SZDhUb)t>Mr*B1Hfg zC~aOq`K{nqk`1!h>9x{pSvUQ((Jf_r>mriF>;c2Ob9hdP$mYdPC>%R6*%V{$>I6V1 zVy`C=vCo?syDlDf-@v59#K=&s-GK%-z{rv?!YCd><%pGpfB?Y7JWg3F!KE@Jm--w( zhl^~5Sp#$G$X@pm*rsTBgL)t|8@zOrC5KE*_E(I?etg~ZTa)u{*J1pYa5L<>KCs!< zUKQsRBY<{eFc0Q)@aJfMMr-%W5ipF|=dpTnIW@0P<3|ELTs;!#^wj#LT?My&(k@35 ze)9>kUErrFV9%E~HcTn276JP#R0!F1co1a6A@^R0-uta|*XL&!2_KgAn!8*>yzhMMBH8u)^ z&fNPzmJRy%Q(FRREa>dn{dbx~3;U=u?MtNEFg{|v@pf*^PJp9;gKE!7u&dQ?rONbz z3#wP88t4J1hNVh(a?uMxWo-v1l@kMT_hSb~+KyMmk=SXnhD9^QWoJlFc8%~8&1O7l zGn#u389U1jMC{*B%~`3&(4Hk9z`&^yx;^h9B|&Gwn@kp-0FlnZ$5>jv8zivoS^qP- zv8Pw7-y!&BI1H+H5d21PE9ohkZsfApF?H*i8<0%))PkTb)lBwOaiO(@N!kE$Phu-h z+7_w9m_xH2(t}kM1!|`?M!K4%3|S$FPDnx9gR**9O6$ndy)5k^r>naT^>gxHl{SY9 zJc`v_L4KX(7ovsdRIWe^}raQ{tr6V zHoL$SmFffpQbd6JNdFS8PrTInwnJgzPEX4!5A`qDR6}soOhlyv$gh8q>p3BqoWCc@ z;dDy%nt%T)Z^SBRFC#yX!A{(J@@L9=5{$c$8tBxtpnG8dUDzwD9~G(01YF|wbR~*L ztm6=9Lln;kVsopF+t_=}Bz3N`Mmb0(_5iEdpQY#4V%ExVwX*ui?M+mqtU+zTgjRI6 zLrT5_7nP(wEc10g3Xe8B9Gbv$T|;V|FgtKv1SRd|Q3S9bDKCgZ&SnpGnk|*J8?M#( zWAA?;?Jpw}Bw`5lQt2>e0x`6(iZW;}-X4^?4^fehH+u_ika#-mrPv*39}(sBGqL)J z*cq1W0WGDeP3|0>=vmzB18ild2?J@r^sGZ=b(6n$Y5X`f*C0)(Kh4r~x9-#3dJt~6 zLs=^7R^qr@lVtz(Qz%bm$PI4fS5RhB8S(~+mL0%;SY!7ATUjv}Wh=;y%|@8l_ai9x zVHEKL4q=Nd-G$F8EG31uoWd(yH`k%|Da)X_YtMZ^OG~uWrKKuJBi7>-42}_Nx5uS2 z#Lf0O*JwAK;4oK9`{^SD>3)PNj)xwqXv77GA@@vl92fQ&{&eFAYQwsgL7Ixe5mFd)sqseI55vVKcCc?5U9+IhQ%xHSck}I&Q-3PSDV>Q2C58i5b z3+mbP*$Wa+t%QqB?4lYjvSa)#o%=E>q%Gu)fpHzrvOz4cXjQP@f46^w{~o`Il@`pz znTkQ^o~by<*TZ}r=Ibb5$N2gjUyt&Y+I6Pl1->4~HRvpifcV#*sb~Q0Z6?_4pD;h0 zY3-7InYgQodx5y?i5n#@K->Z1))MzLaUtS190i!)4>OxHsBNX3~m|1scwBw36Dq7=_P}2^h zITDXlmWfN&Uwbox3WwUSNE%xrNh29GlFbo>WNeN{+j44&WGJ2#nUJ2O zeWh`$&V-SOMZzti)=E((Rz;H^)1=i#Q(SF5JCrlmuJPy{9=+S6A&*8p`l3hw z=+W~R|CbHS1yZEN3=}g^%s?>%#S9cPP|QFv1H}v!Gf>PxF$2X6{2yoF!pn^H{`Ep! zSZmU!>)7cq!_8aGEghkFlejHj-mA--TH0fxx0XJ*!-#a2sM5@tBrcvBiT}OHBNyV2;_=Y(}<6!X3#7 zzS+lCR9xJ|a3*aXnTd|JworVBs6~(_ZBmIqo4A?wU1p2UMYxO`_~bbHtqAtL8bdAZ zV#91Pc?HV*uJXoA=c4ghee?G6Rt*&q<0~oWTH05kH>*A{^(Z3Q@MQWPndHkoc@iI2 zlU(V^^f5WfD{z7m%f~ug^JUuJ%$L7eAm3jgf2TmEjlq2T?-j_87syW($WIo?0|j!X zK&DOIe1F(e=kL(*DiRxO`n&QAK=BQVz~?CZO+96kK2e#E6Gtt!x~Bg(g12|{8uQ=U z8u-Hh+_7Lz_dA9oy4P&eeXWPw%rP=!{_v=uQKDxQ7x83bZhA6!(?Cyv+|bVrdZIMk Ua|3;Pi01}3Q5x3gOiv;H0avgAoB#j- literal 21584 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 From 04b6aaf33c3ed8959b386df7118610a316ae7c3c Mon Sep 17 00:00:00 2001 From: Christopher Liu Date: Fri, 15 Jul 2016 10:22:50 -0400 Subject: [PATCH 09/17] Reorganized files --- Game/a.out | Bin 13280 -> 0 bytes Game/final | Bin 0 -> 21584 bytes Game/func.c | 289 ++++++++++++++++++++++++++++++++++++++++++++++++++ Game/func.h | 296 ++-------------------------------------------------- Game/game.c | 9 -- 5 files changed, 297 insertions(+), 297 deletions(-) delete mode 100755 Game/a.out create mode 100755 Game/final create mode 100644 Game/func.c diff --git a/Game/a.out b/Game/a.out deleted file mode 100755 index 0d6a55a42b4ee570fcd16fc56c2fbf0f1ca8a81f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13280 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 Ua|3;Pi01}3Q5x3gOiv;H0avgAoB#j- diff --git a/Game/final b/Game/final new file mode 100755 index 0000000000000000000000000000000000000000..1be83f483a3fbf26b516233e3e7288164d573d8f GIT binary patch literal 21584 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 literal 0 HcmV?d00001 diff --git a/Game/func.c b/Game/func.c new file mode 100644 index 0000000..8033435 --- /dev/null +++ b/Game/func.c @@ -0,0 +1,289 @@ +#include +#include +#include + + +typedef struct { + char * room_name; + char * connected_rooms[10]; + char * items[10]; + char entrance_msg[200]; + char description[200]; + char look_msg[200]; + int items_size; +} room; + +typedef struct { + room * current_room; + int has_backpack; + int inventory_size; + char * inventory[6]; + int notes_read; + int has_poo; + +} character; + +void get_args(char** arg1Ptr , char ** arg2Ptr, char* command) +{ + char * commandPtr = command; + char *arg1 = (char*) malloc(strlen(command)*sizeof(char)); + char *arg2 = (char*) malloc(strlen(command)*sizeof(char)); + + for(int i = 0; *commandPtr != ' ' && i <= (int) strlen(command); i++) + { + arg1[i] = *commandPtr; + commandPtr++; + if (*commandPtr == '\n' || *commandPtr == ' ') + { + arg1[i+1] = '\0'; + break; + } + } + realloc(arg1, (strlen(arg1)+1)*sizeof(char)); + for(int i = 0; *commandPtr != '\0'; i++) + { + commandPtr++; + arg2[i] = *commandPtr; + if (*commandPtr == '\n' || *commandPtr == '\0') + { + arg2[i] = '\0'; + break; + } + } + realloc(arg2, (strlen(arg2)+1)*sizeof(char)); + *arg1Ptr = arg1; + *arg2Ptr = arg2; +} + +void print_room_summary(character *playerPtr) +{ + int saw = 0, is_last = 0; + printf("|%s|\n", playerPtr->current_room->room_name); + printf("%s\n\n", playerPtr->current_room->description); + + printf("I see"); + for (int i = 0; i < playerPtr->current_room->items_size; i++) + { + is_last = 1; + for (int j = i+1; j < playerPtr->current_room->items_size; j++) + { + if (playerPtr->current_room->items[j] != NULL) is_last = 0; + } + if (playerPtr->current_room->items[i] == NULL) + ; + else if (is_last && saw == 1) + { + printf(" and a %s", playerPtr->current_room->items[i]); + } + else + { + printf(" a %s", playerPtr->current_room->items[i]); + if (playerPtr->current_room->items[i+1] != NULL) printf(","); + saw = 1; + } + + } + if (!saw) printf(" nothing here"); + printf(".\n"); + + if (!playerPtr->has_backpack) + { + printf("\n\n"); + return; + } + printf("I have: "); + for (int i = 0;i < playerPtr->inventory_size; i++) + { + if (playerPtr->inventory[i] == NULL) continue; + printf("|%s| ", playerPtr->inventory[i]); + } + printf("\n\n"); +} +void take(character * playerPtr, char * item, room * roomPtr, int room_items_size) +{ + int slot = 0; + while (playerPtr->inventory[slot] != NULL) + { + slot++; + } + if (slot+1 == playerPtr->inventory_size) + { + printf("\033[2J"); + printf("I have no room left in my bag. Might as well just sit here."); + return; + } + for (int i = 0; i < room_items_size; i++) + { + if (playerPtr->current_room->items[i] != NULL) + { + if(strcmp(playerPtr->current_room->items[i], item) == 0) + { + if (strcmp(item, "backpack") == 0) + { + playerPtr->has_backpack = 1; + playerPtr->current_room->items[i] = NULL; + printf("\033[2J"); + printf("I can hold things now.\nThere's a note still here! I can [read note].\n\n\n\n"); + printf("Press enter to continue.\n"); + return; + } + if (playerPtr->has_backpack == 0) + { + printf("I try to pick up the %s, but I hopelessly fumble and drop it.", item); + return; + } + playerPtr->inventory[slot] = playerPtr->current_room->items[i]; + roomPtr->items[i] = NULL; + printf("%s\n", playerPtr->current_room->items[i]); + printf("\033[2J"); + print_room_summary(playerPtr); + return; + } + } + } + printf("I can't find a %s here.", item); +} +void moveto(character*playerPtr, char *droom, room * rooms[], char * room_strings[]) +{ + int connected = 0, found = 0; + room *to_room; + for (int i = 0;;i++) + { + if (strcmp(room_strings[i], "END") == 0) + break; + if (strcmp(droom, room_strings[i]) == 0) + { + to_room = rooms[i]; + found = 1; + } + } + for (int i = 0;;i++) + { + if (found && strcmp(playerPtr->current_room->connected_rooms[i], to_room->room_name) == 0) + { + connected = 1; + break; + } + if (strcmp(playerPtr->current_room->connected_rooms[i], "END") == 0) + { + + if (i-1 == 0) + { + moveto(playerPtr, playerPtr->current_room->connected_rooms[0], rooms, room_strings); + return; + } + break; + } + } + + if (!found) + { + if (strlen(droom) != 0) + printf("I don't know where that is."); + + return; + } + + if (strcmp(playerPtr->current_room->room_name,droom) == 0) + { + printf("You're already here."); + return; + } + if (!connected) + { + printf("I can't get to the %s from here.", to_room->room_name); + return; + } + if (strcmp(playerPtr->current_room->room_name, "bedroom") == 0 && playerPtr->has_backpack == 0) + { + printf("I should [take] my backpack before I go."); + return; + } + if (strcmp(to_room->room_name, "kitchen") == 0) + { + for (int i = 0; i < playerPtr->inventory_size; i++) + { + if (playerPtr->inventory[i] != NULL && strcmp(playerPtr->inventory[i], "dog poo") == 0) + playerPtr->has_poo = 1; + } + if (!playerPtr->has_poo) + { + printf("I don't feel like going to the kitchen without something to cook."); + return; + } + } + if (strcmp(to_room->room_name, "shack") == 0) + { + int has_rkey = 0; + for (int i = 0; i < playerPtr->inventory_size; i++) + { + if (playerPtr->inventory[i] != NULL && strcmp(playerPtr->inventory[i], "rusty key") == 0) + has_rkey = 1; + } + if (!has_rkey) + { + printf("I can't get into the shack without a key."); + return; + } + } + playerPtr->current_room = to_room; + printf("\033[2J"); + printf("%s\n\n\n\n", playerPtr->current_room->entrance_msg); + printf("Press enter to continue.\n"); +} + +void look(character* playerPtr) +{ + printf("\033[2J"); + printf("%s\n\n\n\n", playerPtr->current_room->look_msg); + printf("Press enter to continue.\n"); +} +void note(character* playerPtr) +{ + for (int i = 0; i < playerPtr->inventory_size; i++) + { + if (playerPtr->inventory[i] != NULL && strcmp(playerPtr->inventory[i], "note") == 0) + { + playerPtr->notes_read++; + playerPtr->inventory[i] = NULL; + } + } + + if (playerPtr->notes_read == 0) + { + printf("Read what?"); + return; + } + + printf("\033[2J"); + int note_reader = 1; + do + { + switch (note_reader) + { + case 1: + + printf(" MAP: |"); printf(" MY SICK RAP:\n"); + break; + case 2: + printf("BEDROOM -> YARD<- |"); printf("but for me to rap like a computer must be in my genes\n"); + break; + case 3: + printf(" | / | \\ |"); printf("I got a laptop in my back pocket\n"); + printf("KITCHEN<- PARK ->SHACK |"); printf("my pen'll go off when I half cock it\n"); + break; + case 4: + printf(" | |"); printf("got a fat knot from that rap profit\n"); + break; + case 5: + printf(" | |"); printf("made a living and a killing off it\n"); + break; + case 6: + printf(" RAP HERE |"); printf(" --\"Gap Rod\""); + + break; + } + note_reader++; + } while (note_reader <= playerPtr->notes_read); + printf("\n\n\nPress enter to continue\n"); +} diff --git a/Game/func.h b/Game/func.h index ca223ae..cf4f2ef 100644 --- a/Game/func.h +++ b/Game/func.h @@ -1,292 +1,12 @@ #ifndef FUNC_H #define FUNC_H -#include -#include -#include +#include "func.c" +void print_room_summary(character *playerPtr); +void get_args(char**, char**, char*); +void take(character*,char*,room*,int); +void moveto(character*, char*, room**, char**); +void look(character*); +void note(character*); -typedef struct { - char * room_name; - char * connected_rooms[10]; - char * items[10]; - char entrance_msg[200]; - char description[200]; - char look_msg[200]; - int items_size; -} room; - -typedef struct { - room * current_room; - int has_backpack; - int inventory_size; - char * inventory[6]; - int notes_read; - int has_poo; - -} character; - -void get_args(char** arg1Ptr , char ** arg2Ptr, char* command) -{ - char * commandPtr = command; - char *arg1 = (char*) malloc(strlen(command)*sizeof(char)); - char *arg2 = (char*) malloc(strlen(command)*sizeof(char)); - - for(int i = 0; *commandPtr != ' ' && i <= (int) strlen(command); i++) - { - arg1[i] = *commandPtr; - commandPtr++; - if (*commandPtr == '\n' || *commandPtr == ' ') - { - arg1[i+1] = '\0'; - break; - } - } - realloc(arg1, (strlen(arg1)+1)*sizeof(char)); - for(int i = 0; *commandPtr != '\0'; i++) - { - commandPtr++; - arg2[i] = *commandPtr; - if (*commandPtr == '\n' || *commandPtr == '\0') - { - arg2[i] = '\0'; - break; - } - } - realloc(arg2, (strlen(arg2)+1)*sizeof(char)); - *arg1Ptr = arg1; - *arg2Ptr = arg2; -} - -void print_room_summary(character *playerPtr) -{ - int saw = 0, is_last = 0; - printf("|%s|\n", playerPtr->current_room->room_name); - printf("%s\n\n", playerPtr->current_room->description); - - printf("I see"); - for (int i = 0; i < playerPtr->current_room->items_size; i++) - { - is_last = 1; - for (int j = i+1; j < playerPtr->current_room->items_size; j++) - { - if (playerPtr->current_room->items[j] != NULL) is_last = 0; - } - if (playerPtr->current_room->items[i] == NULL) - ; - else if (is_last && saw == 1) - { - printf(" and a %s", playerPtr->current_room->items[i]); - } - else - { - printf(" a %s", playerPtr->current_room->items[i]); - if (playerPtr->current_room->items[i+1] != NULL) printf(","); - saw = 1; - } - - } - if (!saw) printf(" nothing here"); - printf(".\n"); - - if (!playerPtr->has_backpack) - { - printf("\n\n"); - return; - } - printf("I have: "); - for (int i = 0;i < playerPtr->inventory_size; i++) - { - if (playerPtr->inventory[i] == NULL) continue; - printf("|%s| ", playerPtr->inventory[i]); - } - printf("\n\n"); -} -void take(character * playerPtr, char * item, room * roomPtr, int room_items_size) -{ - int slot = 0; - while (playerPtr->inventory[slot] != NULL) - { - slot++; - } - if (slot+1 == playerPtr->inventory_size) - { - printf("\033[2J"); - printf("I have no room left in my bag. Might as well just sit here."); - return; - } - for (int i = 0; i < room_items_size; i++) - { - if (playerPtr->current_room->items[i] != NULL) - { - if(strcmp(playerPtr->current_room->items[i], item) == 0) - { - if (strcmp(item, "backpack") == 0) - { - playerPtr->has_backpack = 1; - playerPtr->current_room->items[i] = NULL; - printf("\033[2J"); - printf("I can hold things now.\nThere's a note still here! I can [read note].\n\n\n\n"); - printf("Press enter to continue.\n"); - return; - } - if (playerPtr->has_backpack == 0) - { - printf("I try to pick up the %s, but I hopelessly fumble and drop it.", item); - return; - } - playerPtr->inventory[slot] = playerPtr->current_room->items[i]; - roomPtr->items[i] = NULL; - printf("%s\n", playerPtr->current_room->items[i]); - printf("\033[2J"); - print_room_summary(playerPtr); - return; - } - } - } - printf("I can't find a %s here.", item); -} -void moveto(character*playerPtr, char *droom, room * rooms[], char * room_strings[]) -{ - int connected = 0, found = 0; - room *to_room; - for (int i = 0;;i++) - { - if (strcmp(room_strings[i], "END") == 0) - break; - if (strcmp(droom, room_strings[i]) == 0) - { - to_room = rooms[i]; - found = 1; - } - } - for (int i = 0;;i++) - { - if (found && strcmp(playerPtr->current_room->connected_rooms[i], to_room->room_name) == 0) - { - connected = 1; - break; - } - if (strcmp(playerPtr->current_room->connected_rooms[i], "END") == 0) - { - - if (i-1 == 0) - { - moveto(playerPtr, playerPtr->current_room->connected_rooms[0], rooms, room_strings); - return; - } - break; - } - } - - if (!found) - { - if (strlen(droom) != 0) - printf("I don't know where that is."); - - return; - } - - if (strcmp(playerPtr->current_room->room_name,droom) == 0) - { - printf("You're already here."); - return; - } - if (!connected) - { - printf("I can't get to the %s from here.", to_room->room_name); - return; - } - if (strcmp(playerPtr->current_room->room_name, "bedroom") == 0 && playerPtr->has_backpack == 0) - { - printf("I should [take] my backpack before I go."); - return; - } - if (strcmp(to_room->room_name, "kitchen") == 0) - { - for (int i = 0; i < playerPtr->inventory_size; i++) - { - if (playerPtr->inventory[i] != NULL && strcmp(playerPtr->inventory[i], "dog poo") == 0) - playerPtr->has_poo = 1; - } - if (!playerPtr->has_poo) - { - printf("I don't feel like going to the kitchen without something to cook."); - return; - } - } - if (strcmp(to_room->room_name, "shack") == 0) - { - int has_rkey = 0; - for (int i = 0; i < playerPtr->inventory_size; i++) - { - if (playerPtr->inventory[i] != NULL && strcmp(playerPtr->inventory[i], "rusty key") == 0) - has_rkey = 1; - } - if (!has_rkey) - { - printf("I can't get into the shack without a key."); - return; - } - } - playerPtr->current_room = to_room; - printf("\033[2J"); - printf("%s\n\n\n\n", playerPtr->current_room->entrance_msg); - printf("Press enter to continue.\n"); -} - -void look(character* playerPtr) -{ - printf("\033[2J"); - printf("%s\n\n\n\n", playerPtr->current_room->look_msg); - printf("Press enter to continue.\n"); -} -void note(character* playerPtr) -{ - for (int i = 0; i < playerPtr->inventory_size; i++) - { - if (playerPtr->inventory[i] != NULL && strcmp(playerPtr->inventory[i], "note") == 0) - { - playerPtr->notes_read++; - playerPtr->inventory[i] = NULL; - } - } - - if (playerPtr->notes_read == 0) - { - printf("Read what?"); - return; - } - - printf("\033[2J"); - int note_reader = 1; - do - { - switch (note_reader) - { - case 1: - - printf(" MAP: |"); printf(" MY SICK RAP:\n"); - break; - case 2: - printf("BEDROOM -> YARD<- |"); printf("but for me to rap like a computer must be in my genes\n"); - break; - case 3: - printf(" | / | \\ |"); printf("I got a laptop in my back pocket\n"); - printf("KITCHEN<- PARK ->SHACK |"); printf("my pen'll go off when I half cock it\n"); - break; - case 4: - printf(" | |"); printf("got a fat knot from that rap profit\n"); - break; - case 5: - printf(" | |"); printf("made a living and a killing off it\n"); - break; - case 6: - printf(" RAP HERE |"); printf(" --\"Gap Rod\""); - - break; - } - note_reader++; - } while (note_reader <= playerPtr->notes_read); - printf("\n\n\nPress enter to continue\n"); -} -#endif // FUNC_H +#endif diff --git a/Game/game.c b/Game/game.c index 0f4aa56..1e7f265 100644 --- a/Game/game.c +++ b/Game/game.c @@ -1,14 +1,5 @@ #include "func.h" -void print_room_summary(character *playerPtr); -void get_args(char**, char**, char*); -void take(character*,char*,room*,int); -void moveto(character*, char*, room**, char**); -void look(character*); -void note(character*); - - - int main() { /* SET ROOMS -----------------------------------------------------------------*/ From 385bd2d9d3353b2d121ce641842468e0ebe5b642 Mon Sep 17 00:00:00 2001 From: Christopher Liu Date: Fri, 15 Jul 2016 10:27:45 -0400 Subject: [PATCH 10/17] fixed recompile again --- Game/a.out | Bin 0 -> 21584 bytes Game/func.h | 1 - Game/game.c | 1 + 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100755 Game/a.out diff --git a/Game/a.out b/Game/a.out new file mode 100755 index 0000000000000000000000000000000000000000..cae99d60f90670f74a6a71df464a3b7c30c593cf GIT binary patch literal 21584 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 Date: Fri, 15 Jul 2016 11:48:36 -0400 Subject: [PATCH 11/17] Fixed memory leaks still room for optimization --- .gitignore | 4 ++++ Game/a.out | Bin 21584 -> 21584 bytes Game/func.c | 36 ++++++++++++++---------------------- Game/func.h | 2 +- Game/game.c | 15 ++++++++------- README.md | 46 ---------------------------------------------- 6 files changed, 27 insertions(+), 76 deletions(-) diff --git a/.gitignore b/.gitignore index f7fb7b3..04788f1 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,7 @@ Game/' *.swp Game/a.exe + +Game/a.out.dSYM/Contents/Resources/DWARF/a.out + +Game/a.out.dSYM/Contents/Info.plist diff --git a/Game/a.out b/Game/a.out index cae99d60f90670f74a6a71df464a3b7c30c593cf..d0636d09e6287e65167443dfe69b94fa977275e2 100755 GIT binary patch delta 5776 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 Y%4jK<*m4El%m|)m%N>oQZk+1;A5CsLr~m)} delta 5962 zcmZu#4RBP|6@D8MvOvOypM?CgBnHBdkRKKTbb%nNFB)Q0(lQn$X+T4z5*Fd0CXpgt{25b3yDH#YD{ZtE!XR$HbM6MAnwjjq_dDM? z=ey_rynX9$u=yKo_5PvN!xhD*D9X#}_`qNF@Xepk9FmwX(K!-S5=E|U){uo^bZr=2 zC~AP738Vf&5t4-8}{5_SS1bq zPR~ioo7-B~h9CjQ+Yzj`biYhUX-C>Yi3>DaLx6QPw)`#B9gT4)5%`m7Nb0cvfl4HBTugYY@EKMZuNj|-C>Z`*6HI2~Go z%tg$~F7oY&9H<0`QC$3!448D!$zWM16oR5|)oWl<`kH2%q(2R*$(JT=5Y}Ne0_*g2 zkvEbz%H&9rGKw#Oi^n(s<9hU*G9$KB+cVs);(tdtP%SXUbA^c`G|zL<`hCd2$qp@ z(_KlR?HTd>h%EaA_<_AdoEVXJ_jll7FrMjMV16TkWHcnW)@w(ccDYzEe<;mYlPP>_ zaIFk~OrqzL#a)R7lQ)oWrRN-q1<@pW#WMsfLhbmK=ag3;pBkvhGaNd`VIg)#pd+ngenTf7iA}~ zm6G&3(UzV(^gcOgXW_KubHv5;`=eYU_dU$5=o1Zv{g)_jd*n^g+3WPBx$rtK+gk3w3nFH z1>ge-9Auy!z;Ow*dl_j3vX3Jj30BKUr)8ualJ_~&nn5#|wm(=TX@8cqm68@VWteLJ~{g`T+{_pvSH)8t5 zX4Dbbip|(w9>q6cl-pW(*xpZ3=IS388?Hz2sF`O>Db`nZcWS9$hC&FV6zQi_y+yqc z3Ki>@RsFzh^z;r@_Z6U{>Su~|Uk-ZSVqME-#B`!5*3CpTmIud7HB4ftx|C!1$btaf zB+h7&UM&HPiVaOB(kveJg^GigqMA0kc#HMFsRoNs4VGZFAqpZ&| zWLSw%#pF( z1idMtiJ~Gi!Fz4wPXziwk^-p*fn5xcz*g>&z-Bg?jcBZgDWIWI9~R}hK&g+sp^sdx zESY*A&Z8`rxRf~}wt-B&gIVaSBKa1lcNZalmB{zk$+EJ||3N&{?FWo~b`UehK07A& z*+77v+>Z;7%8hnaZm4aDCO1?)dUN$pF_Sv^Md9e-Ueo=N^CwHIf+m-i zdUV1VprtL~9xZJSo6Kx9)-(!fXw;XRPOd4r(U~C14>7Degd6jQ10XU+4~=z_{j{{l zLzOc&k&xXIafnApC!}pfaj}js;_zY}BXIi^oADp<(x=(P3!^i=aqubDzl2&ldUE*` z#=eEx-g7jO=X=oLBCvR526*J_=0@|QvC=82p%D*W4HszwCK0fRjXd&6XJ0dqTF48F z*m@g=SUagg>%yp0Yv>7uP8#B0?;EMwoeon&E#>Pym zBDht;TXE=b*mCAJx_M0ZALJ8g88@+|@@8lhYsY4K%i%3=f(7Ww3YDTKZvvIAzS-Pp z1&o_HJTkM*Y}kf_`a>;{=c zu{OchsqIF>{>Xy5P$YzD;0F@>BTT(~JkeuS)y2Ex?HXjPQUG^@FZ=O?x9^G zLtO~2pFnv2dQ;O$hfvq{Qk@@Rny(Sh1RSScS|Q!Hn)kc53xpu<#SSVjgu40S;4m6$GeB?n~gxZEs29L4dY4$S; zV;rWPd@8m1qBh9j5-XP7S~Zofwvg_}!A3?AmFrwQM2gBH7g>B=s|U%-rRN}Cmt@E&uGdELCe{2QMbj??tUmbp z53o)l-PiZZJa}6l3O(03c)Ses0_?h0C*I1<@D2xrdxz%CFVXZ8yqN9lDG~j;1qB6Q zb!vQZ004!`iR4RgX;KOj%wLgmI^KPxs_=Fn;)YHVhHxZM(NcZS=BaJw(u9tpP{;np8+Nge&Icggq-1+qO5 z9vAW$`);CmVfNH`b&52<7N%7}uC3{@C=nsn-Dc12^X`jQKkepd(P4KPRR$ds+ZWVF zYy^8QLev-8NA)@P1+~wR!ESV(I-t+FrRkg7--wttBP^^>L7#J9u)cZyLcurrent_room->room_name); @@ -99,7 +91,7 @@ void print_room_summary(character *playerPtr) } printf("\n\n"); } -void take(character * playerPtr, char * item, room * roomPtr, int room_items_size) +void take(character * playerPtr, char * item, room * roomPtr, int room_items_size) // Transfers an item in the room to inventory. Had to hard code the backpack interaction though { int slot = 0; while (playerPtr->inventory[slot] != NULL) @@ -143,7 +135,7 @@ void take(character * playerPtr, char * item, room * roomPtr, int room_items_siz } printf("I can't find a %s here.", item); } -void moveto(character*playerPtr, char *droom, room * rooms[], char * room_strings[]) +void moveto(character*playerPtr, char *droom, room * rooms[], char * room_strings[]) //Moves character to a connected room. Converts strings to rooms first. Lots of hard coded interactions between rooms. { int connected = 0, found = 0; room *to_room; @@ -232,13 +224,13 @@ void moveto(character*playerPtr, char *droom, room * rooms[], char * room_string printf("Press enter to continue.\n"); } -void look(character* playerPtr) +void look(character* playerPtr) // Prints look statement. This function was not needed honestly { printf("\033[2J"); printf("%s\n\n\n\n", playerPtr->current_room->look_msg); printf("Press enter to continue.\n"); } -void note(character* playerPtr) +void note(character* playerPtr) // The note system. I could've just iterated but I already had the switch statements set up { for (int i = 0; i < playerPtr->inventory_size; i++) { diff --git a/Game/func.h b/Game/func.h index d0a1905..fe831fa 100644 --- a/Game/func.h +++ b/Game/func.h @@ -2,7 +2,7 @@ #define FUNC_H void print_room_summary(character *playerPtr); -void get_args(char**, char**, char*); +void get_args(char*, char*, char*); void take(character*,char*,room*,int); void moveto(character*, char*, room**, char**); void look(character*); diff --git a/Game/game.c b/Game/game.c index 622fe83..0e2afdc 100644 --- a/Game/game.c +++ b/Game/game.c @@ -95,12 +95,13 @@ int main() fgets(command+last, n/2, stdin); last = strlen(command); } - char *arg1 = "", *arg2 = ""; - char ** arg1Ptr = &arg1; - char ** arg2Ptr = &arg2; - get_args(arg1Ptr, arg2Ptr, command); + char *arg1 = (char*) malloc(strlen(command)*sizeof(char)); //Dynamically allocate args to size of command + char *arg2 = (char*) malloc(strlen(command)*sizeof(char)); + + if (strlen(command)) + get_args(arg1, arg2, command); free(command); - /* GET INPUT*/ + /* GET INPUT*/ printf("\033[2J"); print_room_summary(playerPtr); @@ -172,9 +173,9 @@ int main() running = 0; else (printf("I don't know how to do that.")); /* COMMANDS -------------------------------------------------------*/ + free(arg1); + free(arg2); - free(*arg1Ptr); - free(*arg2Ptr); printf("\n"); } diff --git a/README.md b/README.md index 6ff9dd5..e69de29 100644 --- a/README.md +++ b/README.md @@ -1,46 +0,0 @@ -# Final Project - -## Objectives -To review and implement concepts learned from class in a self-designed program. - -### Description -You will design, propose, and implement a project of your own choosing. Your project must implement or include each of the following concepts: - - Variables/data types - - Input/output - - Conditional statements - - Loops - - Functions - - Arrays/strings (either directly or as a pointer) - - Advanced data types (structures and enumerated lists)
- -If it is appropriate to use a header file and/or an external .c file containing utility functions, you should do so. If you have more than a few functions in your program, this applies to you. - -Your program must be well-commented and provide the user with information on how to use your program. Interaction with the program should be specified within the program as well as within a readme.txt document. Rules for games should also be included in the readme.txt document. -Additionally, your code must be written efficiently and handle invalid user input appropriately. This means that if you have the user enter a number, and the user enters a string or a character, your program should not crash, go into an infinite loop, or produce anything outside of the expected functionality. - -Examples of projects include (but are not limited to): game simulators (board games, battle arena, other games), text adventure games, artificial intelligence applications, etc. - -Note: There may be functionality you wish to include in your project that we have not gone over yet in class. You can check with your instructor (me) or your TA (Lesley) to see if we intend to go over it or if it is possible. You may wish to temporarily hardcode data, functionality, etc. until we go over it. Your final code for those sections should not be hardcoded. - -### Part 1: Proposal -You must submit a proposal that details the following: - - Descriptive overview of project (what it does, what game it implements/simulates, etc). This should be long enough to explain what your program is and what it does/does not do. - - Detailed examples of concept implementation (an example each of how you will use functions, loops, etc.). You do not need to explain how you will use variables or input/output unless it is not inherently obvious. - - Your reasons for picking this project (you are interested in game design and wanted to create a game, you think the application is interesting and why, etc.). - - Any external libraries you are considering using and what you will use them for. Keep in mind that most of your code should be your own, and we cannot provide any help for external libraries. This includes graphics libraries. You are responsible for learning and figuring them out on your own. Also detail any code you will use that is not yours. - -### Part 2: Project Implementation -You must implement the project as described in your proposal and conforming to the expectations in the Description section. - -Functions and large code blocks should be documented (have comments briefly explaining their purpose, as well as any parameters or return values, if applicable). - -You must include a readme.txt detailing how to run your project, a brief overview of what it does, and a brief explanation of interaction with the program (e.g. “You may enter commands at the >> prompt. For help/suggestions of commands to enter at any time, type ‘help’.” for a text adventure game). If your project is a game or game simulator, you should also include any rules as applicable (e.g. “Go Fish is a game of matching cards. If you suggest a card your opponent has, he/she must give you that card. Likewise, if the opponent asks for a card you have, you must give him/her that card. If no card matches, player draws from the pile. Otherwise, players continue asking for cards until they ask for a card no one has.”). - -Your readme.txt should also detail any changes made that do not follow your original proposal and explain why they differ. - - -### Deliverables -Your proposal should be submitted by 10am on Monday, July 11, 2016. It will either be approved or modification requested by Monday night. Note that if you submit your proposal early, it will likely be evaluated early, and you will be able to begin work on your project as soon as it is approved. Your proposal should be in a .doc, .pdf, or .txt document. - -Your project is due Friday, July 15, 2016 at 4pm. Please submit ALL files (source code, external libraries, data files, and executable). - From 6ec6ce93256cec91fa73a7ed7ea186d82269134c Mon Sep 17 00:00:00 2001 From: Christopher Liu Date: Fri, 15 Jul 2016 12:55:35 -0400 Subject: [PATCH 12/17] Polish, optimization, actually runs now moved the structs got rid of unnecessary variables changed park --- Game/a.out | Bin 21584 -> 21584 bytes Game/func.c | 64 +++++++++++++++++------------------------------- Game/func.h | 21 +++++++++++++++- Game/game.c | 30 ++++++++++++++--------- Game/start.bash | 0 README.md | 18 ++++++++++++++ 6 files changed, 79 insertions(+), 54 deletions(-) create mode 100644 Game/start.bash diff --git a/Game/a.out b/Game/a.out index d0636d09e6287e65167443dfe69b94fa977275e2..c9021884d8e072356d4b00c89afa7047912d648d 100755 GIT binary patch delta 6979 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 #include #include +#include "func.h" -typedef struct { - char * room_name; - char * connected_rooms[10]; - char * items[10]; - char entrance_msg[200]; - char description[200]; - char look_msg[200]; - int items_size; -} room; - -typedef struct { - room * current_room; - int has_backpack; - int inventory_size; - char * inventory[6]; - int notes_read; - int has_poo; - -} character; void get_args(char* arg1 , char * arg2, char* command) // The input sanitizer, it will return the first arg as the first word, the second as all words after { - for(int i = 0; i <= (int) strlen(command); i++) //Iterate through commands + int i = 0, j = 0; + for(;i <= (int) strlen(command); i++) //Iterate through commands { arg1[i] = command[i]; //Copy first word to char if (command[i] == '\n' || command[i] == ' ')//When you reach a space or newline, replace with end char { - arg1[i+1] = '\0'; + arg1[i] = '\0'; + i++; break; } } - //realloc(arg1, (strlen(arg1)+1)*sizeof(char)); //reallocate string size - for(int i = 0; command[i] != '\0'; i++) // repeat for second arg + for(; command[i] != '\0'; j++, i++) // repeat for second arg { - arg2[i] = command[i]; + arg2[j] = command[i]; if (command[i] == '\n') { - arg2[i] = '\0'; + arg2[j] = '\0'; break; } } - //realloc(arg2, (strlen(arg2)+1)*sizeof(char)); } void print_room_summary(character *playerPtr) // This prints the "HUD" for the player: inventory, items in the room @@ -91,7 +73,7 @@ void print_room_summary(character *playerPtr) // This prints the "HUD" for the p } printf("\n\n"); } -void take(character * playerPtr, char * item, room * roomPtr, int room_items_size) // Transfers an item in the room to inventory. Had to hard code the backpack interaction though +void take(character * playerPtr, char * item, room * roomPtr, int room_items_size) // Transfers an item in the room to inventory. Didn't know where else to put the backpack interaction { int slot = 0; while (playerPtr->inventory[slot] != NULL) @@ -135,15 +117,15 @@ void take(character * playerPtr, char * item, room * roomPtr, int room_items_siz } printf("I can't find a %s here.", item); } -void moveto(character*playerPtr, char *droom, room * rooms[], char * room_strings[]) //Moves character to a connected room. Converts strings to rooms first. Lots of hard coded interactions between rooms. +void moveto(character*playerPtr, char *droom, room * rooms[]) //Moves character to a connected room. Converts strings to rooms first. Also where I put the interactions with rooms { int connected = 0, found = 0; room *to_room; for (int i = 0;;i++) { - if (strcmp(room_strings[i], "END") == 0) + if (strcmp(rooms[i]->room_name, "END") == 0) break; - if (strcmp(droom, room_strings[i]) == 0) + if (strcmp(droom, rooms[i]->room_name) == 0) { to_room = rooms[i]; found = 1; @@ -156,42 +138,42 @@ void moveto(character*playerPtr, char *droom, room * rooms[], char * room_string connected = 1; break; } - if (strcmp(playerPtr->current_room->connected_rooms[i], "END") == 0) + if (strcmp(playerPtr->current_room->connected_rooms[i], "END") == 0) //If we've reached end of list { - if (i-1 == 0) + if (i-1 == 0) //If there's only one connected room { - moveto(playerPtr, playerPtr->current_room->connected_rooms[0], rooms, room_strings); - return; + moveto(playerPtr, playerPtr->current_room->connected_rooms[0], rooms);//move there instead + return; //cancel original moveto } break; } } - if (!found) + if (!found) //no rooms found { - if (strlen(droom) != 0) + if (strlen(droom) != 0) //if they wanted to move somewhere printf("I don't know where that is."); return; } - if (strcmp(playerPtr->current_room->room_name,droom) == 0) + if (strcmp(playerPtr->current_room->room_name,droom) == 0) //already in room { printf("You're already here."); return; } - if (!connected) + if (!connected) //room not connected { printf("I can't get to the %s from here.", to_room->room_name); return; } - if (strcmp(playerPtr->current_room->room_name, "bedroom") == 0 && playerPtr->has_backpack == 0) + if (strcmp(playerPtr->current_room->room_name, "bedroom") == 0 && playerPtr->has_backpack == 0) //hard coded { printf("I should [take] my backpack before I go."); return; } - if (strcmp(to_room->room_name, "kitchen") == 0) + if (strcmp(to_room->room_name, "kitchen") == 0) //hard coded { for (int i = 0; i < playerPtr->inventory_size; i++) { @@ -204,7 +186,7 @@ void moveto(character*playerPtr, char *droom, room * rooms[], char * room_string return; } } - if (strcmp(to_room->room_name, "shack") == 0) + if (strcmp(to_room->room_name, "shack") == 0) //hard coded again { int has_rkey = 0; for (int i = 0; i < playerPtr->inventory_size; i++) diff --git a/Game/func.h b/Game/func.h index fe831fa..c330fa3 100644 --- a/Game/func.h +++ b/Game/func.h @@ -1,10 +1,29 @@ #ifndef FUNC_H #define FUNC_H +typedef struct { + char * room_name; + char * connected_rooms[10]; + char * items[10]; + char entrance_msg[200]; + char description[200]; + char look_msg[200]; + int items_size; +} room; + +typedef struct { + room * current_room; + int has_backpack; + int inventory_size; + char * inventory[6]; + int notes_read; + int has_poo; + +} character; void print_room_summary(character *playerPtr); void get_args(char*, char*, char*); void take(character*,char*,room*,int); -void moveto(character*, char*, room**, char**); +void moveto(character*, char*, room**); void look(character*); void note(character*); diff --git a/Game/game.c b/Game/game.c index 0e2afdc..22a6556 100644 --- a/Game/game.c +++ b/Game/game.c @@ -1,5 +1,4 @@ #include "func.c" -#include "func.h" int main() { @@ -27,7 +26,7 @@ int main() /*SET YARD----------------------------------*/ /*SET PARK - there are two versions of park, one with the man and one scared away. Going to park will make you lose.*/ - room park = {"park", {"QUIT", "END"}, {"nasty death incoming"},{},{},{},1}; + room park = {"park", {"QUIT", "END"}, {},{},{},{},1}; strcpy(park.entrance_msg, "I walk to the park. I try to say hello to the man here."); strcpy(park.description, "There's a man here. Frightened,\nhe pulls out a knife and stabs me."); strcpy(park.look_msg, "Oh. He's still stabbing me.\nI'm gonna die pretty soon."); @@ -35,7 +34,7 @@ int main() room park_ran = {"park", {"yard", "treehouse", "QUIT", "END"}, {"note", "dog poo"}, {},{},{}, 2}; strcpy(park_ran.entrance_msg, "I walk to the park."); strcpy(park_ran.description, "The park looks nice today.\nThe birds are chirping,\nsun is shining."); - strcpy(park_ran.look_msg, "Who didn't clean up their dog's waste?"); + strcpy(park_ran.look_msg, "Who didn't clean up?"); room * parkPtr = &park; /*SET PARK-------------------------------------------------*/ @@ -61,9 +60,12 @@ int main() strcpy(quit.look_msg, "Stop looking around. Just leave."); room *quitPtr = &quit; /*SET QUIT*/ + + /* room END for the end of the room list just so I don't have to pass a room list size every time */ + room end = {"END"}; + room * endPtr = &end; - room * roomPtr_list[7] = {startPtr, bedroomPtr, yardPtr, parkPtr, kitchenPtr, shackPtr, quitPtr}; - char * room_list_strings[8] = {"start", "bedroom", "yard", "park", "kitchen", "shack", "QUIT", "END"}; + room * roomPtr_list[8] = {startPtr, bedroomPtr, yardPtr, parkPtr, kitchenPtr, shackPtr, quitPtr, endPtr}; /* SET ROOMS -----------------------------------------------------------------*/ /* SET PLAYER */ @@ -78,7 +80,7 @@ int main() printf("\n"); //just for this one line so that everything lines up in the beginning //GAME LOOP ------------------------------------------------------------------------- - int running = 2; + int running = 1; while (running) { @@ -107,9 +109,9 @@ int main() print_room_summary(playerPtr); /* EXECUTE COMMANDS -------------------------------------------------------*/ - if (strcmp(arg1, "goto") == 0 || (strcmp(arg1, "\n") == 0 && strlen(arg2) == 0)) + if (strcmp(arg1, "goto") == 0) { - moveto(playerPtr, arg2, roomPtr_list, room_list_strings); + moveto(playerPtr, arg2, roomPtr_list); } else if (strcmp(arg1, "take") == 0) { @@ -125,7 +127,7 @@ int main() } else if (strcmp(arg1, "yell") == 0) { - if (strcmp(playerPtr->current_room->room_name, "yard") == 0 && parkPtr != &park_ran) + if (playerPtr->current_room == yardPtr && parkPtr != &park_ran) { printf("\033[2J"); printf("The man in the park ran away.\n\n\n\nPress enter to continue.\n"); @@ -133,6 +135,8 @@ int main() parkPtr = &park_ran; roomPtr_list[3] = &park_ran; } + else if (playerPtr->current_room == &park) + printf("I try to yell for help, but there's a bug that distracts me."); else printf("In the command line, nobody can hear you scream."); } else if (strcmp(arg1, "cook") == 0 && strcmp(arg2, "dog poo") == 0) @@ -168,14 +172,16 @@ int main() running = 0; printf("The shack's energies pour into me as I give the greatest rap ever delivered.\nTo myself.\nIn a shack.\n"); } } - else if (strcmp(arg1, "\n") == 0); - else if (strcmp(arg2, "QUIT") == 0 || strcmp(arg1, "QUIT") == 0) + else if (strcmp(arg1, "") == 0); + else if (strcmp(arg2, "QUIT") == 0 || strcmp(arg1, "QUIT") == 0 ) running = 0; else (printf("I don't know how to do that.")); /* COMMANDS -------------------------------------------------------*/ free(arg1); free(arg2); - + + if (playerPtr->current_room == quitPtr) + running = 0; printf("\n"); } diff --git a/Game/start.bash b/Game/start.bash new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md index e69de29..b4f262f 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,18 @@ +# Final Project + +## Compliation +gcc game.c + +## How to play +Type in commands at the >> prompt. Available commands are: + - goto [location] will print out a statement when you move to the room then print out the new room summary + - take [item] will move the item into your inventory + - look - print a look summary + - read note - will display collected notes + - yell - will make you yell. (doesn't do anything unless you're in the yard) + - cook (only in kitchen) + - QUIT - Quits game + +## Differences from proposal + - Player has more variables, like inventory size, has_poo, has_backpack. + - From ed61e261dbf1cc2ef5e926828b484e26071ceba9 Mon Sep 17 00:00:00 2001 From: Christopher Liu Date: Fri, 15 Jul 2016 13:28:56 -0400 Subject: [PATCH 13/17] final comments --- Game/README.txt | 60 ++++++++++++++++++++++++++++++++++++++++++++++++ Game/a.out | Bin 21584 -> 21584 bytes Game/func.c | 33 ++++++++++++++------------ Game/func.h | 12 ++++++---- Game/game.c | 26 +++++++++++++-------- README.md | 42 +++++++++++++++++++++++++++++++-- 6 files changed, 141 insertions(+), 32 deletions(-) create mode 100644 Game/README.txt diff --git a/Game/README.txt b/Game/README.txt new file mode 100644 index 0000000..617e1e7 --- /dev/null +++ b/Game/README.txt @@ -0,0 +1,60 @@ +# Final Project + +It’s a text adventure game. +I picked a text adventure game to do because it seemed accomplishable and I like playing games. + +## Compliation +gcc game.c + +## How to play +Type in commands at the >> prompt. Available commands are: + - goto [location] will print out a statement when you move to the room then print out the new room summary + - take [item] will move the item into your inventory + - look - print a look summary + - read note - will display collected notes + - yell - will make you yell. (doesn't do anything unless you're in the yard) + - cook (only in kitchen) + - QUIT - Quits game + - help - prints this + +## Differences from proposal + - Player has more variables, like inventory size, has_poo, has_backpack, notes_read. + - never implemented enumerator, just used strings instead + - Room summaries can change, though none of them really do as I put in a separate "room" with a different functionality. Room pointers can point to different rooms too, so you can create multiple rooms with the same room name. + - Commands are each their own individual functions and could be called from the get_args function but I didn't have time to really change this so they're all in main. + - Look in bag not implemented, it just prints inventory all the time as it got cumbersome to try to just look in bag + - there is no Open command as it would have made it unnecessarily complicated + - Go is goto + - Help would be easy to put in, though I feel it was redundant as the game is pretty easy. + - put would have also made the game too complicated. + - there are new room-specific commands like cook and rap that help you to win the game. + +## How to win +Use these commands in this order: + - goto bedroom + - take backpack + - take note + - goto yard + - take note + - yell + - goto park + - take note + - take dog poo + - goto yard + - goto kitchen + - cook dog poo + - take note + - take rusty key + - goto yard + - goto shack + - take note + - read note + - rap + +Use these commands to lose the game: + - goto bedroom + - take backpack + - goto yard + - goto park + - goto anywhere +alternatively: QUIT or goto QUIT works well. \ No newline at end of file diff --git a/Game/a.out b/Game/a.out index c9021884d8e072356d4b00c89afa7047912d648d..703c727a04e732fb8c22301bc5c391f16aaf3e5b 100755 GIT binary patch delta 4380 zcmZu#4Nz3q6@I%2ELH@OUF2u+@v|r>zX~GG1~6=V7&K}$H9?~bZg7)@MOYEz7&K;0 zUbov(Z-{1Mrb$d1Ga;4?nqUnTja6f9Lldh`%numa>}Jx2j%k86k$&gix2>k#8SZ`O zJKy=vx#!;Z-Yx?Nbpr==y9VOcPL?E{BuUFtG2pXy^6sm5#2qda=zIZ6hYMMe?vA)o z4Sr06M+@2GfZK`$yChoRZAI+S>QpwOlP7hR3)d1YqN^uO|7(4$B`5M{dybVI>m0Yc zcFwudQZ_hlx_;Z#p7G)LO=JV{xwgP;$0rwvO)TFu-vt#%mHnWy0OS`Tara2!f^wbSb-$Fn9LX z6k2Z^R(y+4v*$!Cl7(@8ug^BTqhF`mhJ&w86ef?lfPGobF@+Ndsl_KskYfVxj zJOBdEuoFoZT{HV4X^lR13R9AEBKi;+_>8qDuSxVKAcofP#3Yg8ZulTs%SMuuR@cDG z7pS$mSU9r*tG0K7Q}l3e9YzDN;negT_!Xb+vf?X%hMv=Uga6>&v7z&DmZC?rfWQcA zNHJ$b3B}_`pxO=x4+$y+h-V~TH+wZ@LBzlmT-LL1Qs!mv#U<3^c}RCK3?V_J*Ai3Q z+eDU3Y^8Zogp;nj*z4w5b!8&ZVWeDL!R3e%fqrW~#6;mZAgT`XH`tW(5S!z?1$9FmM~lbAH}mkwS5)zP(S?EGl&Cv73dk;h{T$w&h9t@5n#Ur2F7VF zNk{V+JoG|vkZSc?&k0()pk3iKI(rSAc0PDi(5?&GQb8NfckV1`6#_`+z$pOv0?6** zNI#HNuJlf@Styl=6&M6>0jKqX_FbIV;%Y&Q5wszosM5x1-JlI{T30Y#(3S|=Zv@TG zY1I7J*h_M{VU_T9u=8?}tzari70(COdlu2^NyYCU_@3X?Ml`U-AD#wZjX!!dw~W!S z3i~UM8Nwu~O1)C!E1oB_JJXiv-egaw)fozKM?mjsb~DW)hY4dJ+EjUr)T`8wAb<8c zmp?F--I+dLca-f+&o*p|<#CJH+vyg=LSd|6!!XRkU~E!`N&mYvmYp$Q_aSp-WE*zJ z@R$U6;uE)@peL%LzOSg>!K-6qfpx+gOJ4SA#-!Xi0;u^>HNDq(HR-4oi_PP!jBaBo znTvE+*u$C24eKZJG)LI!Op9TjFn-Uj!I&tF&zNj6>3^HfN-gtsr`Q%txf6;YK^Fg3%|8{cOWDlldg-g4~Np0l7EOz#6|Xns0{L!Cs!`)XiZNr?(nj z8P65oXX?-$8qVXbJGbu(-m6Q1q5mGAqTk??aW;#|uEWl>WILkn ziQ>Zg$!st?Gb&wJ$z&NjO7Z*?+q7~B+w@NZQT_d&ld^F<7HBKHQh8kAr{$*N@7pyz zHil#uQBmb_I(0VndX2x6N~uvhW8tkh^V3P?Xw9t2pC5j1gy1+R;Z>cuOpaWWgE9_q0XQQmv2CMyTF{@Zp|pCD3R66+Qoa zegb_*x-lxg1awLD%9OHzllsVu$SDLZie&fByesN@1jQ9+8QDuSEgiA&r~}V_cb&dt z`1;61KMaJPuJL*4qDDO#*v5lGauU$M^8~5h7my)%H@(w++#T=|eqs>5Gl3O?vyWFN z+z;L2E{VWFpbp;RUl76W&rPpjbZ#`ozlDS4w|!UWR-tPxd$=(3x@+|)1 z%eV;wpR!}Q>4`&Mp|&u=*Ss&0_W=7gH$UmwFX4S_99Pr4Ysgz0&dT$Q9SU8SBbdLL zu>+y30eJ+0>u(E8BXV4boGZwDS^na`V=DsRg8n~3b4V!ZHla^&BL?0B#6HZMld%?x zSn?L4_^nUFr+P=RWMB;(D?Y}slE`nU4JqT;;`}6CfI0KitDXWEtQ$D}s&^RfARbdB z(j^>2+%ZTF;8M^88(r1<&`VXEWAEpia+A^Zz#({f^_Aj9*^J~+_W?fR{W*4mG*s`$ zEUut><|`;VP#TI@4iD0rL|P-I@moItMe#>RM6f3d3U!y+(SjLyJK=)ni*&Pxw)X<9 ztMV_{UcWVnXA}I};a9x_EUqwp!9J?yKSlo;guqg`d8G#^ug}|y;&!xGM8x>e3quX@iCsYpb3Axzw^u&JCr(U60PR=uad1oj#a z>!&bc1utOuZ<$xA%srs+GSLVrcu11sh@l;rI%@d_9i766yXblaD=12Mub6pnt8U%Fsn=di=%A3oGUlDJ#M+y<*v7TobIO8@+POtB{#P?n>@06qer&Otsc9_ z(ddA^X}zOK-t68eH@e##GQvFT9de7?-AETrw*(R1Mjz+n4BT}|(req%bBM!ON z2|bZV2!YKZ|hAS?_TOcPkaJ*@4w*yhbX9mP243dFv_Dba#_$Gb)fDaeC^pu59uwT~WOp(}s;s zPpjNuZ*=6bC(BcH{i$U(Z+IbvR@*%wQM{q8J2v)1rJ<0qPLzQ+B5GUXa- zP<+p>>hqB$gIQ9Tv@4s2JW0~yuzB2)+wN?V9s^Vad~hy?{xS^P@ZSUa3}&%COS9@i z|ErJz#h_7x__a;_%F^s@xcSJQsoAl3$dQe8a()GVFp^!S*}LL}y;!qj6MB-CmFWKs DgDJU1 delta 4005 zcmZu!3s6+o8NPRAVKE{I?7}WAkA+1*P~KH>0~l5>8FVo5!BmaZs;M)bh!r1WW5AN_ z^k%&VJ)xS1S{)~nYAOw;V$~6pQEZ)L+o+-1Bvj~hH?c};9N%ug|D21FPMP7J{lD+~ zzyCjvyZ5fIP4>0PExu@9tR%^jBo!s$fO1;+U52^E%lms}edFfPWpE zV|B_kY`t}fVJMFES+hfTA=7_~nQTj}%i~as=J5JBQDOo(SeCLTn{9CpSUy30sm+26 z2duhJ1mX>#Hw|I|u;Dbd(cl%YyHD}v!Q&dTu)=|F`Rcf_@*pQ;jc5XXAG>3-rv>79 zxjkHZB=9>Sg#qbqgY>tsA0*5SZKsdVvDXtyv(}50@66=h9vFp`0LtryDQ^df`_0Us zFe|i*K5t>AiG@pTBGJtg4+Z8TM+QX86CZuTy`OFOvwHwWcfn&HJ9~5mLh-$9OwZMDS+@segx?7J&qQKpS;yOd=L3OeH&d@YepGdwHD#RYF2CJf1`!`u8QNPQIb@t zUaj^P|2c_$mRuumW9cbNO;NZZ;Mc&mrZ`guqIj?YDHX@by;8jb``&xpz7TmS)8)6B zB{j>mKuB}h%v7f-TLi_d0l}k4ZnB2$O|=;2rLbeE)8!8KFf}WDwP5a;*+fTrc%_Jj z%xs|}JvUB7Isa3-^A;~{K$n==SU#nQ`RtHmmVBJucg!^@V|le!Hb2d2N)W+8){Njr z1ZPgM_B4xOb}H*ln=bEX&!js{D+MzfOf0KPA7`2-fMpz52Ov@a)$Gl5i~T-aQ9Km8 zgJoU82XiU!*S?&cPG2djEXTRVbO(aKwDVtlt&WOQ z@BtqpG(MPP*`D!Bu?>dI<>8aUx$(7VR-c(3ZV=G}ip(n}uF<=U=TjrSKE-xLWhH3IclO$0+@swKrHDsD=8IBtG zI`HQ_M?mAdNm4zrkTjp97!Q#fp+vSLz*O(UJmP%k$-`jWY(R+yZB!!Cl z@!fu)XREy)`cSQ&_9u<78v=^QTg`;H@-!m4`+0M>jJ&CxR8y4phdf1J6m-i|^goU4 zzywG696DTjhL=>DYamPYJ1vP%>53E_ z7pt4(m{}rP)puwu1pb?Vc-=RtuGd38%^S*%ks4l)sPv1%<~Ve!=LD@t9XmhC-pId{ zg`U4s(Yw}bT+~S-`VE2XI%JFc6fw2CkV}p{S=nEb?#asjnp&zHZV8i?0(C;5FK;Xk zwLc94@wzzj$laxd3>(hI$$hHy@CKKN>0AP-dfL$ji_BlvxD4NnXpU;BoJ@k}cSh1+$rHUns&-j5#L8k@EpfjFdZTy|^OyS`ozb zZ!Bb&%bwp>7t&Z;D1KZm)yJRe<2rq8(#JRS@hyGat&eT`_>n%I(8ra7&hNX88Cg< zz?x>5oWlmg#(h(T;fVfVQ24}PAC-7w(9u$LA*{rgC5@7ra_EvTNrqMHmN%@DR{dz@ zE7EI#ih=v4;nMEHWvD_-#h1ml&&gOi{G&MqXe5qa4GumADMOEkKv0~c$4&S(L@{k2 a>DzTZ`sT5OH!R|3>v21+T diff --git a/Game/func.c b/Game/func.c index 1483078..dc6599d 100644 --- a/Game/func.c +++ b/Game/func.c @@ -35,6 +35,7 @@ void print_room_summary(character *playerPtr) // This prints the "HUD" for the p printf("|%s|\n", playerPtr->current_room->room_name); printf("%s\n\n", playerPtr->current_room->description); + //PRINT ROOM'S ITEMS printf("I see"); for (int i = 0; i < playerPtr->current_room->items_size; i++) { @@ -60,6 +61,7 @@ void print_room_summary(character *playerPtr) // This prints the "HUD" for the p if (!saw) printf(" nothing here"); printf(".\n"); + //PRINT INVENTORY if (!playerPtr->has_backpack) { printf("\n\n"); @@ -78,9 +80,9 @@ void take(character * playerPtr, char * item, room * roomPtr, int room_items_siz int slot = 0; while (playerPtr->inventory[slot] != NULL) { - slot++; + slot++; //find a free slot. This might produce a segfault somehow but I have not been running into errors. } - if (slot+1 == playerPtr->inventory_size) + if (slot+1 == playerPtr->inventory_size) //no free slots { printf("\033[2J"); printf("I have no room left in my bag. Might as well just sit here."); @@ -88,17 +90,18 @@ void take(character * playerPtr, char * item, room * roomPtr, int room_items_siz } for (int i = 0; i < room_items_size; i++) { - if (playerPtr->current_room->items[i] != NULL) + if (playerPtr->current_room->items[i] != NULL) //if the item in the room exists. Just to prevent segfaults with strcmp { - if(strcmp(playerPtr->current_room->items[i], item) == 0) + if(strcmp(playerPtr->current_room->items[i], item) == 0) //if the item we're looking for is in the room { - if (strcmp(item, "backpack") == 0) + if (strcmp(item, "backpack") == 0) //hardcoded backpack interactions { - playerPtr->has_backpack = 1; - playerPtr->current_room->items[i] = NULL; + playerPtr->has_backpack = 1; //do NOT add to inventory! + playerPtr->current_room->items[i] = NULL; //delete from room printf("\033[2J"); printf("I can hold things now.\nThere's a note still here! I can [read note].\n\n\n\n"); printf("Press enter to continue.\n"); + return; } if (playerPtr->has_backpack == 0) @@ -106,9 +109,9 @@ void take(character * playerPtr, char * item, room * roomPtr, int room_items_siz printf("I try to pick up the %s, but I hopelessly fumble and drop it.", item); return; } - playerPtr->inventory[slot] = playerPtr->current_room->items[i]; - roomPtr->items[i] = NULL; - printf("%s\n", playerPtr->current_room->items[i]); + playerPtr->inventory[slot] = playerPtr->current_room->items[i]; //add a copy of the item to inventory + roomPtr->items[i] = NULL; //delete + printf("%s\n", playerPtr->current_room->items[i]); //reprint summary printf("\033[2J"); print_room_summary(playerPtr); return; @@ -123,17 +126,17 @@ void moveto(character*playerPtr, char *droom, room * rooms[]) //Moves character room *to_room; for (int i = 0;;i++) { - if (strcmp(rooms[i]->room_name, "END") == 0) + if (strcmp(rooms[i]->room_name, "END") == 0) //end of rooms list break; - if (strcmp(droom, rooms[i]->room_name) == 0) + if (strcmp(droom, rooms[i]->room_name) == 0) //we found a room { - to_room = rooms[i]; + to_room = rooms[i]; //convert the droom string to a room pointer found = 1; } } for (int i = 0;;i++) { - if (found && strcmp(playerPtr->current_room->connected_rooms[i], to_room->room_name) == 0) + if (found && strcmp(playerPtr->current_room->connected_rooms[i], to_room->room_name) == 0) //check for room in connected_room { connected = 1; break; @@ -230,7 +233,7 @@ void note(character* playerPtr) // The note system. I could've just iterated but } printf("\033[2J"); - int note_reader = 1; + int note_reader = 0; do { switch (note_reader) diff --git a/Game/func.h b/Game/func.h index c330fa3..0052f48 100644 --- a/Game/func.h +++ b/Game/func.h @@ -2,24 +2,26 @@ #define FUNC_H typedef struct { - char * room_name; - char * connected_rooms[10]; - char * items[10]; + char * room_name; //room's name + char * connected_rooms[10]; //names of connected rooms. Note that this is not pointers as I didn't know how to make an array of room pointers while in a room + char * items[10]; //names of items. There is no item struct, though that would have been a good idea. char entrance_msg[200]; char description[200]; char look_msg[200]; - int items_size; + int items_size; //size of items. Can't pass array size to function, so I have this. } room; typedef struct { room * current_room; - int has_backpack; + int has_backpack; int inventory_size; char * inventory[6]; int notes_read; int has_poo; } character; + +//function prototypes! void print_room_summary(character *playerPtr); void get_args(char*, char*, char*); void take(character*,char*,room*,int); diff --git a/Game/game.c b/Game/game.c index 22a6556..5fecf10 100644 --- a/Game/game.c +++ b/Game/game.c @@ -2,7 +2,7 @@ int main() { - /* SET ROOMS -----------------------------------------------------------------*/ + /* SET ROOMS ---------------This provides the strings for all the rooms that are coded.--------*/ /* SET START --------------------------------*/ room start = {"start", {"bedroom","QUIT", "END"},{},{},{},{},0}; room * startPtr = &start; @@ -62,23 +62,23 @@ int main() /*SET QUIT*/ /* room END for the end of the room list just so I don't have to pass a room list size every time */ - room end = {"END"}; + room end = {"END",{},{},{},{},{},0}; room * endPtr = &end; room * roomPtr_list[8] = {startPtr, bedroomPtr, yardPtr, parkPtr, kitchenPtr, shackPtr, quitPtr, endPtr}; /* SET ROOMS -----------------------------------------------------------------*/ - /* SET PLAYER */ + /* SET PLAYER - mainly all interaction and data modification is through the player/player pointer*/ character player = {NULL,0,6,{"note",NULL,NULL,NULL,NULL,NULL},0,0}; character * playerPtr = &player; - player.current_room = startPtr; + player.current_room = startPtr; //put him/her in start /* SET PLAYER */ /* SETUP INTERFACE */ printf("\033[2J"); print_room_summary(playerPtr); - printf("\n"); //just for this one line so that everything lines up in the beginning - + printf("\n"); //just so you don't have to press enter twice to start the game. + //GAME LOOP ------------------------------------------------------------------------- int running = 1; while (running) @@ -90,7 +90,7 @@ int main() printf(">> "); fgets(command, n, stdin); //Take command size_t last = strlen(command); - while (command[last-1] != '\n') //stolen from powerpoint + while (command[last-1] != '\n') //stolen from powerpoint on dynamic memory. Don't really understand how it works. { n *= 2; command = realloc(command, n); @@ -125,7 +125,7 @@ int main() { note(playerPtr); } - else if (strcmp(arg1, "yell") == 0) + else if (strcmp(arg1, "yell") == 0) //some hard-coded commands, yell, cook, rap that don't have their own functions. { if (playerPtr->current_room == yardPtr && parkPtr != &park_ran) { @@ -163,21 +163,27 @@ int main() } else if (strcmp(arg1, "rap") == 0) { - if (playerPtr->notes_read < 5) + if (playerPtr->notes_read < 6) printf("I don't know any lyrics!"); else if (playerPtr->current_room != shackPtr) printf("My rhythm isn't that good. Plus the acoustics in the %s aren't too great.", playerPtr->current_room->room_name); else { running = 0; + printf("\033[2J"); printf("The shack's energies pour into me as I give the greatest rap ever delivered.\nTo myself.\nIn a shack.\n"); } } else if (strcmp(arg1, "") == 0); else if (strcmp(arg2, "QUIT") == 0 || strcmp(arg1, "QUIT") == 0 ) running = 0; + else if (strcmp(arg1, "help") == 0) + { + printf("\033[2J"); + printf("Available commands are:\n - goto [location] will print out a statement when you move to the room then print out the new room summary\n - take [item will move the item into your inventory\n - look - print a look summary\n - read note - will display collected notes\n - yell - will make you yell.\n - cook (only in kitchen)\n - QUIT - quits game."); + } else (printf("I don't know how to do that.")); /* COMMANDS -------------------------------------------------------*/ - free(arg1); + free(arg1); free(arg2); if (playerPtr->current_room == quitPtr) diff --git a/README.md b/README.md index b4f262f..c383e0a 100644 --- a/README.md +++ b/README.md @@ -14,5 +14,43 @@ Type in commands at the >> prompt. Available commands are: - QUIT - Quits game ## Differences from proposal - - Player has more variables, like inventory size, has_poo, has_backpack. - - + - Player has more variables, like inventory size, has_poo, has_backpack, notes_read. + - never implemented enumerator, just used strings instead + - Room summaries can change, though none of them really do as I put in a separate "room" with a different functionality. Room pointers can point to different rooms too, so you can create multiple rooms with the same room name. + - Commands are each their own individual functions and could be called from the get_args function but I didn't have time to really change this so they're all in main. + - Look in bag not implemented, it just prints inventory all the time as it got cumbersome to try to just look in bag + - there is no Open command as it would have made it unnecessarily complicated + - Go is goto + - Help would be easy to put in, though I feel it was redundant as the game is pretty easy. + - put would have also made the game too complicated. + - there are new room-specific commands like cook and rap that help you to win the game. + +## How to win +Use these commands in this order: + - goto bedroom + - take backpack + - take note + - goto yard + - take note + - yell + - goto park + - take note + - take dog poo + - read note + - goto yard + - goto kitchen + - cook dog poo + - take note + - take rusty key + - goto yard + - goto shack + - take note + - read note + - rap + +Use these commands to lose the game: + - goto bedroom + - take backpack + - goto yard + - goto park + - goto anywhere From 5614d369fa4285d7fe3ef2cb23d4ee4ea315c744 Mon Sep 17 00:00:00 2001 From: Christopher Liu Date: Fri, 15 Jul 2016 13:30:12 -0400 Subject: [PATCH 14/17] updated a.out --- Game/a.out | Bin 21584 -> 21584 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Game/a.out b/Game/a.out index 703c727a04e732fb8c22301bc5c391f16aaf3e5b..6b19bc0fb59727bf8864f7d3a6cd19125fa3c456 100755 GIT binary patch delta 2976 zcmZ8j3s6+o8NPRUT{Jva*oB2%dF+BHEH5R3gve{l)j=vrjj0$xV(rjQK@G8!WKfCj zWNz1M)xSE;C<+tPpk*u##Gugz4HahUG+RR}H5m)ajJpX&T4E*7?RU<>nYPTZcmMDI z{_p?Jf6l#oz1_06TR!MDCdWvUEJ@PQh4{c<@}Y^9#&dZBEEkw`t}jnM85Di*Y+>=x z@uG^8RW-{V-0B#i@!$-(v@bj)E|MBzoN`y+ftU!{5Vw#zVjcN)Hc3+Tl4*AFyf~|R z9#`A1ZbL84HQp=vo)GE3;i9=d0g!2qlQu|-7-1C z|AHhcVyraZoLBR@i2k0)Dn>v)Du59Hs;6ys?`{Q&p(wXmXuT}br#XMnze}J$7AVm# z%tZw`2-N3Yld5M8jJIBnMmHDd4|rUYdk1CBHR=CtAP_*ehrp3ePo!CMv*oaeewV;) zYrJL*=@Ya&Zgplo;Jvd_lsgo2fVXK?FW3lxG-pMEWAmVGkBEb}r+E%#4NW z)^Xq(fZJ3YZ%wR0j3G}0xBv!L>pv!hcF>Oa$^~0RSux}^*C1HyXe2%-Vw%Z|vIGkS zTdG3)f%wL#){-W_O+UBP%TLh_OJ>-&sQ0DBQ+UEA%Wxcu*dq2BMGFs-knEs62??7H zAj?-cH|!Th@~40`*F}H40qM3$OaS}NHufjXna4GzdUByr$!P=rfAaCTFnc5mF{CZb zKzEU_zX;Gu3mo-O8n?Q z*O}El1jAQOcN1$uPqVL|Q?YgF=9fj?TP9Z5FL$#p+MhL7HyHJTG0bh80#HLATCL>~OiF8m%rG#!AT9VGnL^Bs%X|TbEEr8( zhVA(@Ic*z44`U#{X7p$@1cmcFvB*!=+Ih$ip=KrWO| zlbuvA0Cwk%Gv|8AJRx;K&=NU~oy60ecFliY(24|&1Z_2^jez#50O~j}1Yo-Wns#$! z5J&@8y6E2~ly(ZG)q?jLrwxEs#A*HhRf6_?L9+{*o6~whTfk{O{!~FbC}`g-;EUpwzzC|fE2^%0zu`CeI!v-!57~@dwI0#IBhwm0 zd4px|DM6A{seN4SDR_mhC)LU`gBB&R^N7R*KHiV?o`IK^lDVn}b$xuFu;zjF` zinX*~W=~mF`%u-~hbUpmaT4RDA4Td`%B^;Lc`9pjd5f21ppCiyeUN_#>1;bUC3 zo8C%GQ?f)bK%)o(^LgeIlGDvLgOHm*3&`EW5UX|58onR4H)&aVll&5$NPj`OJC7Gd zp(vJ|i;T(z0Tgmz!y@A{T>wilnE&3yU*F|pixWpAT#W4=jv@NA(#b`Q2GcwW%GjbD z3g;clsU;&#*&>2E1m>;c_GTOQ>;yJ!InR~k@_zc@9j0%pzzSV?AD6wa^5gSeweCJR z83wMyoy%c8gGYKY zE|pq`6&K%C1x`I~27%7ns2)9+o?YA)$JnZN!}AU!s-7b%<1bWbYO!s-$ms*ju;)lA zE7Oi}`yTEA_ucIyzHkw?r&HMVpFWK9M=MoE5?VZ_ipjWFsZuX^GyW-mu z%1z7(OpjA_W}CB?ZKLNB1AX^G*iMz)1P`7bvgncLDQMv5^WT{T@=40ds*=}JYnE!b zb)Wu_<&>vrD$8PcaG%1QwWdv|L-{MgT$}0E_?t delta 2921 zcmZ8j3s6+o8NPRU?b=2YrTs;BJqGI@P}bGlyETyfIc3|EEKDM?DWwvSyx zKb%oQi1StBk^Yi zS|HFCTAsPM@?T84(H~VpE717PGX_*k;QUC)AKg15tNv*G_1W23RC^0J(oq{lGPhb+ ziRcG5-u5!Cxr+1}sxvPyaRS~uBc%nCF$eTEt%NHb;KUN|CB7@V8MD!V*_C(J%56SI zR`pN7=1l?Ex$gx4zoolohdmWBhCB^mHyBuL{6%3@K^2y!`&~kIm*+;nN~fP&%JqG$ zOCh^zp;61yTR}l0c80K=Z0M=l0|@3|Eah|gLHco6TrT+jV(rA3Hh%oAul{MoEC|H!N=pr?2)X- zkk|rZ)0q^pIr4PE@-!-_{(<;$!G!}Oni#Ql(;}eVzF+M3GC@ldv?-wI($8sqpiOXEZ#-Af zRtnllL2KnSwiUJm=yGvl>4amsZ?HPkTUb!x+Nlb*F;TuE?ugKJ~YveJd^xK+MoBJW>ilX@^W;l zo~yR9R66NgM%@~LJSUJvE~BD4~ys~PUSZ@@aRAJ$gTiJg?IQx{|3L97Sj5H zHqHAwdb{9B?ISwwt)cQlw>DPrJ@e6gj+zpqNsxk?wZtpC~9{- z$IhcxHSQEO?42rLtY9IhyyU_qc8GNl;t+_eoDvGJr2L|GvzM!`ga#Q=33W5)*rzFU zvdEbya^VPTJk(v!WNJ5C#<}1CK5--^@)S49zo#9=mW*ts^ro;%!#zx*1}*eb@uPA+ zeNmiWWk6b;c;WUP_Sz5{W+4`$W$0KS6l6C6^=zy&`I`pP6g8K$ml4|&;TroaiA}Ti zI(Y0WghioY)}k8xY7!kBp_!6Od5S!xOXU}6SE-`Oo~Dt~GWm1*yws|xnkHRYi)jON zkpDE1n;ph+QiC(Jt*lVKMMulBU&-5H30?^Bx!^C+7vxY}r#8qVbHM&El1EnVUAv)l#%e{dtNGYP{wQyI1r-bk(?>9ozUQ6NtATs(2DchGsi+vB+ z7KkZq;G8~I`_&n?H%Xmzz-KbBFWl7)YZ}%ytY7%_|6kuHy8gc} zxtJi&qu1-4diJim5I*dGu>Ws$`;C>8`BH*(u!wzlBuTSv*QTA@q;0KRwo1)l$%Q@5MJ8NE#M3iFZF-r2M(K6OFOBbS^gFrGmw*IOEsj<%PvH UbMZm!I*Xg Date: Fri, 15 Jul 2016 13:36:52 -0400 Subject: [PATCH 15/17] updated readme --- .gitignore | 10 ---------- Game/func.h.gch | Bin 166368 -> 0 bytes Game/rooms.h | 43 ------------------------------------------- Game/start.bash | 0 README.md | 6 +++++- 5 files changed, 5 insertions(+), 54 deletions(-) delete mode 100644 .gitignore delete mode 100644 Game/func.h.gch delete mode 100644 Game/rooms.h delete mode 100644 Game/start.bash diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 04788f1..0000000 --- a/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ - -Game/' - -*.swp - -Game/a.exe - -Game/a.out.dSYM/Contents/Resources/DWARF/a.out - -Game/a.out.dSYM/Contents/Info.plist diff --git a/Game/func.h.gch b/Game/func.h.gch deleted file mode 100644 index a0aac08841bf28555ac2052e13a68c9e7e1bd438..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166368 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 XptHc|8K;&{9V{0%y>WJ)2n7BMaV|M5 diff --git a/Game/rooms.h b/Game/rooms.h deleted file mode 100644 index d36b5a6..0000000 --- a/Game/rooms.h +++ /dev/null @@ -1,43 +0,0 @@ -#ifndef ROOMS_H -#define ROOMS_H -#include -#include "func.h" -#include - -/* SET ROOMS -----------------------------------------------------------------*/ - /* SET START --------------------------------*/ -room start = {"start", {"bedroom", "END"}}; -room * startPtr = &start; -strcpy(start.description , "C Project. [goto] the bedroom to start."); - /* SET START --------------------------------*/ - - /* SET BEDROOM --------------------------------*/ -room bedroom = {"bedroom", {"start", "yard", "END"}, {"note", "key", "backpack"},{},{},{},3}; -room * bedroomPtr = &bedroom; -strcpy(bedroom.entrance_msg, "I should [look] around."); -strcpy(bedroom.description, "My bedroom. Nothing special. "); -strcpy(bedroom.look_msg, "It's already late.\nI should [goto] the yard soon.\n"); - /* SET BEDROOM --------------------------------*/ - /*SET YARD----------------------------------*/ -room yard = {"yard", {"bedroom", "park", "END"},{"note"},{},{},{},1}; -room * yardPtr = &yard; -strcpy(yard.description, "I haven't mowed the lawn in a while. "); -strcpy(yard.look_msg, "There's nobody here.\nWait\nI think I see someone in the park.\nI could try to [yell] or go see who it is."); - /*SET YARD----------------------------------*/ - - /*SET PARK-------------------------------------------------*/ -room park = {"park", {"QUIT", "END"}, {},{},{},{},4}; -strcpy(park.description, "this is park. hi"); - -room park_ran = park; -strcpy(park_ran.description, "this is park1. usuk"); -room * parkPtr = &park; - /*SET PARK-------------------------------------------------*/ - -room quit = {"QUIT"}; -room *quitPtr = &quit; - -room * roomPtr_list[5] = {startPtr, bedroomPtr, yardPtr, parkPtr, quitPtr}; -char * room_list_strings[6] = {"start", "bedroom", "yard", "park", "QUIT", "END"}; - /* SET ROOMS -----------------------------------------------------------------*/ -#endif // ROOMS_H diff --git a/Game/start.bash b/Game/start.bash deleted file mode 100644 index e69de29..0000000 diff --git a/README.md b/README.md index c383e0a..be099bd 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ # Final Project +It’s a text adventure game. +I picked a text adventure game to do because it seemed accomplishable and I like playing games. + ## Compliation gcc game.c @@ -12,6 +15,7 @@ Type in commands at the >> prompt. Available commands are: - yell - will make you yell. (doesn't do anything unless you're in the yard) - cook (only in kitchen) - QUIT - Quits game + - help - prints this ## Differences from proposal - Player has more variables, like inventory size, has_poo, has_backpack, notes_read. @@ -36,7 +40,6 @@ Use these commands in this order: - goto park - take note - take dog poo - - read note - goto yard - goto kitchen - cook dog poo @@ -54,3 +57,4 @@ Use these commands to lose the game: - goto yard - goto park - goto anywhere +alternatively: QUIT or goto QUIT works well. From 51af3e940255efeb74354b8d635994c8c306a9e2 Mon Sep 17 00:00:00 2001 From: Christopher Liu Date: Fri, 15 Jul 2016 13:38:07 -0400 Subject: [PATCH 16/17] deleted --- Game/final | Bin 21584 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 Game/final diff --git a/Game/final b/Game/final deleted file mode 100755 index 1be83f483a3fbf26b516233e3e7288164d573d8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21584 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 From 27909149e5f2997211fe2701c55aeb5255f20a57 Mon Sep 17 00:00:00 2001 From: Christopher Liu Date: Fri, 15 Jul 2016 13:40:52 -0400 Subject: [PATCH 17/17] Final update to readme --- Game/README.txt | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Game/README.txt b/Game/README.txt index 617e1e7..a0ce2db 100644 --- a/Game/README.txt +++ b/Game/README.txt @@ -1,6 +1,6 @@ # Final Project -It’s a text adventure game. +It’s a text adventure game. You play as a rap god trying to collect his rap lyric notes. You win when you rap by yourself in a shack. I picked a text adventure game to do because it seemed accomplishable and I like playing games. ## Compliation diff --git a/README.md b/README.md index be099bd..34a7e48 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Final Project -It’s a text adventure game. +It’s a text adventure game. You play as a rap god trying to collect his rap lyric notes. You win when you rap by yourself in a shack. I picked a text adventure game to do because it seemed accomplishable and I like playing games. ## Compliation