Question: please help in c , i have following header files: #ifndef DUNGEON _ INFO _ H #define DUNGEON _ INFO _ H #include #include #include

please help in c, i have following header files:
#ifndef DUNGEON_INFO_H
#define DUNGEON_INFO_H
#include
#include
#include "dungeon_settings.h"
//This is the name we will use for our shared memory.
const char* dungeon_shm_name ="/DungeonMem";
//These are the names for the levers when getting the treasure at the end.
const char* dungeon_lever_one ="/LeverOne";
const char* dungeon_lever_two ="/LeverTwo";
struct Barbarian{
int attack;
};
struct Rogue{
float pick;
};
struct Wizard{
char spell[SPELL_BUFFER_SIZE];
};
struct Barrier{
char spell[SPELL_BUFFER_SIZE +1];
};
struct Enemy{
int health;
};
struct Trap{
char direction;
bool locked;
};
struct Dungeon{
bool running;
pid_t dungeonPID;
struct Barbarian barbarian;
struct Rogue rogue;
struct Wizard wizard;
struct Barrier barrier;
struct Enemy enemy;
struct Trap trap;
char treasure[4];
char spoils[4];
};
#ifndef DUNGEON_SETTINGS_H
#define DUNGEON_SETTINGS_H
#include
//This specifies how many possible characters you can have in your spell buffer. It is a char array. Default: 100
#define SPELL_BUFFER_SIZE (100)
//This is how many rounds the dungeon will play at a minimum. Default: 10
#define NUM_ROUNDS (10)
//This is how long the game will allow the rogue to try to guess the correct number for picking the lock. Default: 4
#define SECONDS_TO_PICK (4)
//This is how many seconds the wizard will have to guess decode the message for the barrier. Default: 2
#define SECONDS_TO_GUESS_BARRIER (2)
//This is how long the barbarian has to attack the monster. Default: 2
#define SECONDS_TO_ATTACK (2)
//This is the tolerance for guessing the rogue's pick. Lower values will be more difficult. Default: 2.5
#define LOCK_THRESHOLD (2.5)
//If true, the barbarian rounds can run. If false, barbarian rounds will not be run. Default: true
#define ALLOW_BARBARIAN true
//If true, the rogue rounds can run. If false, rogue rounds will not be run. Default: true
#define ALLOW_ROGUE true
//If true, the wizard rounds can run. If false, rogue rounds will not be run. Default: true
#define ALLOW_WIZARD true
//How often the dungeon will check the value of the rogue's pick to see if the lock angle was guessed correctly.
//Lower values will increase the rate of checks, but will also put more messages in the terminal. Default: 10000
#define TIME_BETWEEN_ROGUE_TICKS (10000)
//The maximum angle used for the rogue's picking challenge. Default: 100
#define MAX_PICK_ANGLE (100)
//This is the signal that the dungeon will use
//Call this method to begin running the dungeon. Valid pid's must be passed for it to work.
void RunDungeon(pid_t wizard, pid_t rogue, pid_t barbarian);
#endif
Semaphore Overview
After your characters have successfully arrived at the end of the dungeon, they will have one final challenge. The
treasure room door must be held open by two party members in order to let the Rogue in to get the treasure! It
doesn't matter which party member holds which lever, only that both levers are held down by two separate party
members long enough for the Rogue to get all of the treasure. The last four points will be for releasing the
semaphores after the Rogue leaves the treasure room. Appropriate methods will be declared, and the names of the
semaphores will be given in the dungeon_info. h file. We will be using the Named Semaphores defined in
sem_overview. Be sure to read the definitions for sem_post and sem_wait, remembering that in this case, "holding"
the door for the Rogue here would be preventing the dungeon from accessing the room while the Rogue gets the
treasure. This is the final part of this assignment that is graded, so make sure everything else works first before
tackling this!
The dungeon will send a new signal, defined in dungeon_settings. h as SEMAPHORE_SIGNAL. Make sure that your
classes can handle it without crashing! After your Rogue gets all four letters from the "treasure" field, copy them into
the "spoils" field of the Dungeon, and release the semaphores. Note: The treasure field will only give one character at
a time, and it will pause between adding additional characters. It will also not be null terminated, so make sure you
plan around tackling that problem!
Once the Rogue has gotten all of the treasure, it is up to you how you want to handle re-opening the semaphores. Do
you want the Wizard and Barbarian to wait until the Rogue has four characters in the spoils field, and then
immediately release the door? Do you want the Rogue to send a signal to the Wizard and Barbarian to release the
door? This part is up to you to figure out. By now, if you've gotten this far, you should have at least one or two ideas
of how to tackle this.
Note: Your semaphores should be created before you call RunDungeon. Also, the treasure and spoils fields will be
initialized to null terminators before their values are used. This can be useful to note.
please help in c , i have following header files:

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!