Dungeon_Space_Room *generateMultipleRooms(int *seed) { int seed_local; int num_room; if(seed <= 0) { seed_local = time(NULL); *seed = seed_local; } else if(seed > 0) { seed_local = *seed; } srand(seed_local); num_room = (rand()%3)+5; //printf("Number of rooms is %d\n", num_room); Dungeon_Space_Room *room_collection = malloc(sizeof(Dungeon_Space_Room) * (num_room+1)); Dungeon_Space_Room *room_collection_ptr; for(room_collection_ptr = room_collection; room_collection_ptr != room_collection + num_room; room_collection_ptr++) { *room_collection_ptr = generateRoom(); } *room_collection_ptr = Dungeon_Space_Room_create(-1, -1); return room_collection; }
MapNode* generateMapTree(int maxRooms) { MapNode* rootNode = new MapNode(); std::vector<MapNode*>* leafList = new std::vector<MapNode*>(); rootNode->refBlock.dimensions.x = MAX_X_SIZE; rootNode->refBlock.dimensions.y = MAX_Y_SIZE; rootNode->refBlock.position.x = 0; rootNode->refBlock.position.y = 0; generateMapHelper(rootNode, 1, maxRooms); //Now we need to create rooms in the leaves. getLeafNodes(rootNode, leafList); //for each leaf node... for(int i = 0; i < leafList->size(); i++) { //generate a room somewhere in this node. generateRoom((*leafList)[i]); } //Connect some corridors for(int i = 0; i < leafList->size(); i+=2) { //connect the two nodes together connectRooms((*leafList)[i], (*leafList)[i+1]); } return rootNode; }
int generateDungeon(gridCell_t*** gridPtr, room_t** roomsPtr) { int roomCount; unsigned int seed; seed = (unsigned int)time(NULL); //1453848819; srand(seed); printf("Seed: %d\n", seed); roomCount = MIN_ROOMS + (rand() % (MAX_ROOMS - MIN_ROOMS + 1)); printf("Room count: %d\n", roomCount); if (!(*roomsPtr = malloc(sizeof(room_t) * roomCount))) { return -1; } for (int i = 0; i < roomCount; i++) { generateRoom(&(*roomsPtr)[i], *roomsPtr, i); } *gridPtr = populateGrid(*roomsPtr, roomCount); connectRooms(*gridPtr, *roomsPtr, roomCount); return roomCount; }
int generateDungeon(dungeon_t* dungeonPtr) { dungeonPtr->roomCount = MIN_ROOMS + (rand() % (MAX_ROOMS - MIN_ROOMS + 1)); printf("Room count: %d\n", dungeonPtr->roomCount); if (!(dungeonPtr->rooms = malloc(sizeof(room_t) * dungeonPtr->roomCount))) { return -1; } for (int i = 0; i < dungeonPtr->roomCount; i++) { generateRoom(&dungeonPtr->rooms[i], dungeonPtr->rooms, i); } if (populateGrid(dungeonPtr)) { return -2; } connectRooms(dungeonPtr->grid, dungeonPtr->rooms, dungeonPtr->roomCount); initMonsters(dungeonPtr); turnInit(dungeonPtr); return 0; }
int main(){ nameGenerator(); //inventory = (Weapon)calloc(1,sizeof(Weapon)); srand(time(NULL)); seed = getpid(); while(1){ system("clear"); printf("Welcome to Generic Crawler #%d!\nType Play to start playing, or Exit to Quit the game.\n",rand_lim(545)); fgets(mainMenu, sizeof(mainMenu), stdin); if(strcasecmp("Play\n", mainMenu) == 0){ /// printf("Game is Go\n"); printf("Load Game?\n"); fgets(input,sizeof(input), stdin); int bob = 2; if(strcasecmp(input,"Yes\n") == 0) bob = 1; switch(bob){ case 1: if(!LoadChooser()){ printf("Test\n"); break; } else printf("There is no save file present. Creating new Character\n"); case 2: Player = (Character *)calloc(1, sizeof(Character)); printf("Please enter your Name:\n"); fgets(user,sizeof(user),stdin); strcpy(Player->name,user); printf("Generating Stats\n"); generatePlayer(); printStats(); system("clear"); printf("Would You Like to see the Help Page?\n"); while(quit){ fgets(input,sizeof(input),stdin); if(strcasecmp("Yes\n",input) == 0){ DisplayHelp(); break; } else if(strcasecmp("No\n",input) == 0){ system("clear"); break; } else{ printf("Sorry. I don't understand what you said\n"); } } DRoom = calloc(1,sizeof(Room)); generateRoom(); } while(Player->hp > 0 && quit){ signal(SIGINT, sigHandle); system("clear"); printf("Your life: %d \n", Player->hp); if(!DRoom->roomClear) printf("There is a %s in this room\n", Enemy->name); printf("What would you like to do?\n"); fgets(input,sizeof(input), stdin); interpretGame(); } printf("YOU LOST!\n"); sleep(2); } else if(strcasecmp("Exit\n",mainMenu) == 0){ printf("Goodbye\n"); break; } else if(strcasecmp("What What?\n",mainMenu) == 0){ printf("NO. WE ARE NOT DOING THAT!\n"); sleep(1); } else{ printf("Sorry. I don't understand what you said\n"); sleep(2); } } return 1; }
void interpretGame(){ if(strcasecmp(input,"Help\n") == 0){ system("clear"); DisplayHelp(); } else if(strcasecmp(input,"Stats\n") == 0){ system("clear"); printStats(); } else if(strcasecmp(input,"Room\n") == 0){ system("clear"); printRoomInfo(); } else if(strcasecmp(input,"Attack\n") == 0){ battle(); } else if(strcasecmp(input,"down forward low punch\n") == 0){ printf("Hadoken \n"); sleep(1); if(DRoom->roomClear) printf("A blue orb comes out of your hands and hits the wall\n"); else printf("%s: ... \n", Enemy->name); sleep(1); } else if(strcasecmp(input,"Advance\n") == 0){ if(!DRoom -> roomClear){ printf("The room isn't clear yet!\n"); sleep(1); } else{ printf("You move into the next room\n"); generateRoom(); } } else if(!strcasecmp(input,"Save\n")){ dump(); printf("Game saved\n"); } else if(!strcasecmp(input,"OSave\n")){ dump(); char buff[256]; printf("Enter the ip adress of the save server\n"); fgets(buff, sizeof(buff), stdin); OSave(2, buff); } else if(strcasecmp(input,"Inventory\n") == 0){ if(Player->weaponNum == 0){ printf("You have no weapons!\n"); getchar(); } else if(Player->weaponNum == 1){ printf("Your weapons give you a +%d bonus to attack.\n",Player->slot1.attk); getchar(); } else if(Player->weaponNum == 2){ printf("Your weapons give you a +%d bonus to attack.\n",Player->slot1.attk + Player->slot2.attk); getchar(); } } else if(strcasecmp(input,"Quit\n") == 0 || strcasecmp(input,"Exit\n") == 0){ quit = 0; } else{ printf("Sorry, I don't understand that\n"); sleep(1); system("clear"); } }