Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Introduction to C Programming Problem: Dragon Training! Movies about dragons and dragon training were very popular this summer. Your friend has not stopped talking about

Introduction to C Programming

Problem: Dragon Training!

Movies about dragons and dragon training were very popular this summer. Your friend has not stopped talking about how awesome dragons are and how cool it would be to train them. To amuse your friend, you have decided to create a dragon-training simulator using your C programming skills.

The basic idea behind the simulation is as follows: 1) You will simulate 10 days of dragon training. 2) In the beginning the user gets a new dragon with some initial statistics for strength, intellect, and agility. 3) At the beginning of each day the user receive a weather report. 4) Based on that, the user can determine which tasks their dragon should complete that day. 5) Then, the days activity is simulated.

After 10 days the simulation ends and the user is told whether or not they have completed training. Training may be completed earlier than 10 days if the obstacle course is completed.

You must fill in the seven functions that are currently empty in the skeleton. After you write each function, you should test it before moving on. The main function should not be modified for the final submission (you may modify it during testing, as long as you return it to its initial form).

Descriptions of each function are given in the skeleton along with the function Pre- and Post-conditions. The output samples at the end of this document show the wording you should use and how the program should run when completed. Points are allotted for following the precise wording shown.

Skeleton code

// Fill in your own header comment

#include

#include

#include

#include

// Constants to be used.

// Passing score

#define SCORE 70

// Symbolic constants for true and false.

#define FALSE 0

#define TRUE 1

// Function prototypes - do not change these

void set_stats(int * d_strength, int * d_intel, int * d_agil);

void print_stats(int strength, int intelligence, int agility, char name[]);

int menu();

int weather();

int train_strength(int weather, char name[]);

int train_intelligence(int weather, char name[]);

int train_agility(int weather, char name[]);

int obstacle_course(int weather, int strength, int intel, int agility);

void end_message(int completed, char name[]);

// Main function

int main() {

int num_day, ans, weather_value, score = 0, completed = FALSE;

int dragon_strength, dragon_intelligence, dragon_agility;

char name[20], answer[4];

srand(time(0));

printf("Welcome to Dragon Training! ");

printf("You've been assigned a new dragon! Would you like to give it a name? (yes/no) ");

scanf("%s", answer);

if(strcmp(answer, "yes") == 0) {

printf("Great! What would like to call your dragon? ");

scanf("%s", name);

}

else

strcpy(name, "your dragon");

printf(" To complete training, %s must finish the final obstacle course with a score of 70 or better. ", name);

printf(" You may attempt the obstacle course at any time, but you must finish within 10 days. ");

printf(" Better get started! ");

set_stats(&dragon_strength, &dragon_intelligence, &dragon_agility);

for (num_day = 1; num_day <= 10; num_day++) {

printf(" It is Day #%d. ", num_day);

print_stats(dragon_strength, dragon_intelligence, dragon_agility, name);

weather_value = weather();

ans = menu();

switch(ans) {

case 1:

dragon_strength += train_strength(weather_value, name);

break;

case 2:

dragon_intelligence += train_intelligence(weather_value, name);

break;

case 3:

dragon_agility += train_agility(weather_value, name);

break;

case 4:

score = obstacle_course(weather_value, dragon_strength, dragon_intelligence, dragon_agility);

printf("%s scored a %d on their obstacle course run! ", name, score);

break;

}

if(score >= SCORE) {

completed = TRUE;

break;

}

}

end_message(completed, name);

return 0;

}

// Pre-conditions: d_strength, d_intel, and d_agil are pointers to variables that store

// the dragon's strength, intelligence, and agility statistics.

// Post-condition: Each of the dragon's statistics are set to a pseudorandom

// initial value.

//

// What to do in this function: Set each of the dragon's values to a

// pseudorandom initial value.

// Strength should be a random value from 0-99. Then add 5 to make sure the

// dragon has at least 5 strength.

// Intellect should be a random value from 1-10.

// Agility should be a random value from 0-19. Then add 2 to make sure the

// dragon has at least 2 agility.

void set_stats(int * d_strength, int * d_intel, int * d_agil) {

}

// Pre-conditions: There are no parameters for this function.

// Post-condition: The user is presented with a menu and given

// the opportunity to respond. If they respond with

// a valid menu option, return the user's choice.

//

// What to do in this function: Prompt the user with the menu and

// read in their response. If their answer is less than 1 or greater

// than 4, continue to prompt them until they provide a valid answer.

// Then, return their answer.

int menu() {

}

// Author: Arup Guha

// Pre-condition: None

// Post-condition: The weather report for the day is printed and the

// corresponding weather status in between 1 and 5,

// inclusive, is returned.

int weather() {

// Get the weather status value.

int retval = rand()%5 + 1;

printf(" Here is today's weather forecast: ");

// Print out the appropriate forecast for that status. ");

if (retval == 1)

printf("It is cloudy with a high chance of rain. ");

else if (retval == 2)

printf("It is partly cloudy and windy. ");

else if (retval == 3)

printf("It is partly sunny with low humidity. ");

else if (retval == 4)

printf("It is warm and sunny with medium winds. ");

else

printf("It's a perfect beach day. Sunny and hot! ");

printf(" ");

return retval; // Return this status value.

}

// Pre-condition: strength, intelligence, agility, and name are variables

// that represent the name of the dragon and it's stats

// Post-condition: A listing of the dragon's stats are printed

//

// What to do with this function: This is fairly self-explanatory from the

// pre and post conditions. Look to the sample given in the assignment for

// the format.

void print_stats(int strength, int intelligence, int agility, char name[]) {

}

// Pre-condition: weather is an integer from 1-5 that represents the

// current day's forecast. name is the dragon's name.

// Post-condition: A day's strength taining is carried out. The current

// gain in strength is printed and returned.

//

// What to do with this function: First, determine the maximum possible

// gain in strength by mutliplying the weather by 3 and adding 5.

// If the maximum possible gain is less than 10, set it to 10.

// Then, determine the actual gain by generation a psuedorandom

// number between 1 and the maximum gain.

// Print the amount of strength gained according to the sample run,

// and return that value

int train_strength(int weather, char name[]) {

}

// Pre-condition: weather is an integer from 1-5 that represents the

// current day's forecast. name is the dragon's name.

// Post-condition: A day's knowkedge taining is carried out. The current

// gain in knwoledge is printed and returned.

//

// What to do with this function: First, determine the maximum possible

// gain in knowledge by dividing 15 by the weather and adding 5.

// If the maximum possible gain is less than 10, set it to 10.

// Then, determine the actual gain by generation a psuedorandom

// number between 1 and the maximum gain.

// Print the amount of intellect gained according to the sample run,

// and return that value

int train_intelligence(int weather, char name[]) {

}

// Pre-condition: weather is an integer from 1-5 that represents the

// current day's forecast. name is the dragon's name.

// Post-condition: A day's agility taining is carried out. The current

// gain in agility is printed and returned.

//

// What to do with this function: First, determine the maximum possible

// gain in agility using the following function: 13 + weather%5 + (weather+4)%5

// Then, determine the actual gain by generation a psuedorandom

// number between 1 and the maximum gain.

// Print the amount of agility gained according to the sample run,

// and return that value

int train_agility(int weather, char name[]) {

}

// Pre-condition: weather is an integer from 1-5 that represents the

// current day's forecast. strength, intel, and agility

// are variables representing the dragon's stats

// Post-condition: A day's obstacle course is run and a score for the

// run is returned.

int obstacle_course(int weather, int strength, int intel, int agility){

return 10 + 2*weather + strength/4 + intel + agility/2;

}

// Pre-condition: completed is an integer that represents either TRUE or FALSE

// name is the dragon's name.

// Post-condition: The user's overall result is printed out.

//

// What to do with this function: See if the dragon completed the obstacle

// course. Print the appropriate response according to the sample run.

void end_message(int completed, char name[]) {

}

Output Sample #1

Welcome to Dragon Training! You've been assigned a new dragon! Would you like to give it a name? (yes/no)yes Great! What would like to call your dragon? Toothful

To complete training, Toothful must finish the final obstacle course with a score of 70 or better. You may attempt the obstacle course at any time, but you must finish within 10 days. Better get started!

It is Day #1. Here are Toothful's current stats:

Strength: 85 Intelligence: 1 Agility: 16

Here is today's weather forecast: It is partly cloudy and windy.

What would you like to do today? 1 - Train Strength 2 - Train Knowledge 3 - Train Agility

4 - Attempt the Obstacle Course

3

After running sprints, Toothful gained 11 agility!

It is Day #2. Here are Toothful's current stats:

Strength: 85 Intelligence: 1 Agility: 27

Here is today's weather forecast: It is cloudy with a high chance of rain.

What would you like to do today? 1 - Train Strength 2 - Train Knowledge 3 - Train Agility

4 - Attempt the Obstacle Course

2

After hitting the books, Toothful gained 19 intellect!

It is Day #3. Here are Toothful's current stats:

Strength: 85 Intelligence: 20 Agility: 27

Here is today's weather forecast: It is partly cloudy and windy.

What would you like to do today? 1 - Train Strength 2 - Train Knowledge 3 - Train Agility

4 - Attempt the Obstacle Course

3

After running sprints, Toothful gained 12 agility!

It is Day #4. Here are Toothful's current stats:

Strength: 85 Intelligence: 20 Agility: 39

Here is today's weather forecast: It is partly sunny with low humidity.

What would you like to do today? 1 - Train Strength 2 - Train Knowledge 3 - Train Agility

4 - Attempt the Obstacle Course

4

Toothful scored a 76 on their obstacle course run! Congratulations! Toothful completed their training!

Output Sample #2 Welcome to Dragon Training! You've been assigned a new dragon! Would you like to give it a name? (yes/no)no

To complete training, your dragon must finish the final obstacle course with a score of 70 or better. You may attempt the obstacle course at any time, but you must finish within 10 days. Better get started!

It is Day #1. Here are your dragon's current stats:

Strength: 14 Intelligence: 2 Agility: 21

Here is today's weather forecast: It is partly cloudy and windy.

What would you like to do today? 1 - Train Strength 2 - Train Knowledge 3 - Train Agility

4 - Attempt the Obstacle Course

1

After lifting weights, your dragon gained 10 strength!

It is Day #2. Here are your dragon's current stats:

Strength: 24 Intelligence: 2 Agility: 21

Here is today's weather forecast: It is warm and sunny with medium winds.

What would you like to do today? 1 - Train Strength 2 - Train Knowledge 3 - Train Agility

4 - Attempt the Obstacle Course

1

After lifting weights, your dragon gained 9 strength!

It is Day #3. Here are your dragon's current stats:

Strength: 33 Intelligence: 2 Agility: 21

Here is today's weather forecast:

It is warm and sunny with medium winds.

What would you like to do today? 1 - Train Strength 2 - Train Knowledge 3 - Train Agility

4 - Attempt the Obstacle Course

2

After hitting the books, your dragon gained 2 intellect!

It is Day #4. Here are your dragon's current stats:

Strength: 33 Intelligence: 4 Agility: 21

Here is today's weather forecast: It is cloudy with a high chance of rain.

What would you like to do today? 1 - Train Strength 2 - Train Knowledge 3 - Train Agility

4 - Attempt the Obstacle Course

1

After lifting weights, your dragon gained 6 strength!

It is Day #5. Here are your dragon's current stats:

Strength: 39 Intelligence: 4 Agility: 21

Here is today's weather forecast: It's a perfect beach day. Sunny and hot!

What would you like to do today? 1 - Train Strength 2 - Train Knowledge 3 - Train Agility

4 - Attempt the Obstacle Course

2

After hitting the books, your dragon gained 4 intellect!

It is Day #6. Here are your dragon's current stats:

Strength: 39 Intelligence: 8

Agility: 21

Here is today's weather forecast: It is warm and sunny with medium winds.

What would you like to do today? 1 - Train Strength 2 - Train Knowledge 3 - Train Agility

4 - Attempt the Obstacle Course

4

your dragon scored a 45 on their obstacle course run!

It is Day #7. Here are your dragon's current stats:

Strength: 39 Intelligence: 8 Agility: 21

Here is today's weather forecast: It is cloudy with a high chance of rain.

What would you like to do today? 1 - Train Strength 2 - Train Knowledge 3 - Train Agility

4 - Attempt the Obstacle Course

3

After running sprints, your dragon gained 13 agility!

It is Day #8. Here are your dragon's current stats:

Strength: 39 Intelligence: 8 Agility: 34

Here is today's weather forecast: It is partly sunny with low humidity.

What would you like to do today? 1 - Train Strength 2 - Train Knowledge 3 - Train Agility

4 - Attempt the Obstacle Course

1

After lifting weights, your dragon gained 11 strength! It is Day #9.

Here are your dragon's current stats: Strength: 50

Intelligence: 8 Agility: 34

Here is today's weather forecast: It's a perfect beach day. Sunny and hot!

What would you like to do today? 1 - Train Strength 2 - Train Knowledge 3 - Train Agility

4 - Attempt the Obstacle Course

4

your dragon scored a 57 on their obstacle course run!

It is Day #10. Here are your dragon's current stats:

Strength: 50 Intelligence: 8 Agility: 34

Here is today's weather forecast: It is cloudy with a high chance of rain.

What would you like to do today? 1 - Train Strength 2 - Train Knowledge 3 - Train Agility

4 - Attempt the Obstacle Course

4

your dragon scored a 49 on their obstacle course run! Sorry, your dragon did not complete training. Better luck next time.

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access with AI-Powered Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Students also viewed these Databases questions