TEST BANK FOR Beginning C++ Through Game Programming 2nd Edition By Michael Dawson
- A-Grades
- Rating : 0
- Grade : No Rating
- Questions : 0
- Solutions : 275
- Blog : 0
- Earned : $35.00
Beginning C++ Game Programming
Chapter Discussion Question and Exercise Solutions
Chapter 1
Discussion Questions
1. How does having a widely adopted C++ standard help game programmers?
Solution:
Having a widely adopted standard helps game programmers in several ways. First, it helps to ensure consistency among compilers—this means that the same program, written to the standard, should compile successfully across multiple compilers that implement the standard. Second, the standard makes it easier to write cross-platform code—code written to the standard should compile and work correctly across different operating systems (again, given compilers that faithfully implement the standard). Third, it helps ensure that multiple programmers can work more seamlessly together—if both are writing to the standard their code should have fewer conflicts.
2. What are the advantages and disadvantages of employing the using directive?
Solution:
The major advantage of a employing the using directive is that it saves typing. If a programmer puts using namespace std; in his program, he saves having to prefix every element in the namespace std with std::. One could also argue that removing all of the std:: references from a program makes it less cluttered and easier to read. A disadvantage of employing a using directive is that it may not be clear where different objects and functions originate—what namespace they‘re from. Another disadvantage with employing a using directive is that you run the risk of name conflicts. For example, if you employed the using directive for two namespaces that had elements with the same name, there would be a name conflict. This, of course, is the very thing that namespaces were created to prevent.
3. Why might you define a new name for an existing type?
Solution:
You might define a new name for an existing type if you simply wanted a shorter name for a type that you use often in a program. For example, you might do something like:
typedef unsigned short int ushort;
so that you can use the concise ushort instead of the much longer unsigned short int. But you could also argue that the name a programmer creates for an existing type might be clearer than the syntax for the existing type. For example, ushort might scan better than the longer unsigned short int.
4. Why are there two versions of the increment operator? What‘s the difference
between them?
Solution:
Both versions of the increment operator increment a variable, but there‘s a subtle and important difference in the way the two operators work. The prefix increment operator is placed before the variable to be incremented, as in ++score, while the postfix increment operator is placed after the variable to be incremented, as in score++. The prefix increment operator increments a variable before the evaluation of a larger expression involving the variable while the postfix increment operator increments a variable after the evaluation of a larger expression involving the variable.
5. How can you use constants to improve your code?
Solution:
Constants can provide two important benefits. First, they can make programs clearer. MAX_HEALTH more clearly conveys the intention of a value than some literal, like say 100. Second, constants make changes easier. If you want to change the value of a constant, you only need to make a change in one place: where it was defined. If you used the same literal value throughout a program, you‘d have to change that literal everywhere (while making sure not to change the literal value where it‘s not related to the constant value).
Exercises
1. Create a list of six legal variable names -- three good and three bad choices. Explain why each name falls into the good or bad category.
Solution:
Responses will vary, but the following is a set of possible answers:
Good Names
health A clear, short name
numEnemies Clear that variable represents a number; descriptive
isGameOver Clear that variable represents a bool
Bad Names
HeAlTh While it‘s legal to used a mixed-case name, it‘s unconventional and distracting
TotalNumberofCurrentEnemies While it may be clear, the name is cumbersome; there must be a shorter, yet-still-clear name
igo Short but not clear; a little more typing may be worthwhile for the sake of clarity
2. What‘s displayed by each line in the following code snippet? Explain each result.
cout << "Seven divided by three is " << 7 / 3 << endl;
cout << "Seven divided by three is " << 7.0 / 3 << endl;
cout << "Seven divided by three is " << 7.0 / 3.0 << endl;
Solution:
cout << "Seven divided by three is " << 7 / 3 << endl; displays 2. That‘s because both numbers in the expression 7 / 3 are integers, making the operation integer division, which always results in an integer.
cout << "Seven divided by three is " << 7.0 / 3 << endl; displays 2.33333. That‘s because at least one number in the expression 7.0 / 3 is a floating point number. A division operation with at least one floating point number yields a floating point result.
cout << "Seven divided by three is " << 7.0 / 3.0 << endl; displays 2.33333. That‘s because at least one number in the expression 7.0 / 3.0 is a floating point number. A division operation with at least one floating point number yields a floating point result.
3. Write a program that gets three game scores from the user and displays the average.
Solution:
The source code is in the file bcppgp_solutions\source\chap01\chap01_exercise03.cpp.
Chapter 2
Exercises
1. Rewrite the Menu Chooser program from this chapter using an enumeration to represent difficulty levels.
Solution:
The source code is in the file bcppgp_solutions\source\chap02\chap02_exercise01.cpp.
2. What‘s wrong with the following loop?
int x = 0;
while (x)
{
++x;
cout << x << endl;
}
Solution:
The problem is that since x is set to 0 just before the loop, the loop will never be entered—it may as well not exist in the program. A student might say that the loop, if entered, would be infinite, but that‘s not necessarily true. If x were initialized with a negative value, it would eventually be incremented to 0, at which point the loop would end.
3. Write a new version of the Guess My Number program in which the player and the computer switch roles. That is, the player picks a number and the computer must guess what it is.
Solution:
The source code is in the file bcppgp_solutions\source\chap02\chap02_exercise03.cpp.
Chapter 3
Discussion Questions
1. What are some of the things from your favorite game that you could represent as objects? What might their data members and member functions be?
Solution
Responses will vary, but the following is a set of possible answers:
Ogre
Data Members
position
speed
health
Methods
Move()
Attack()
Die()
Sword
Data Members
damage
weight
price
Methods
Swing()
2. What are the advantages of using an array over a group of individual variables?
Solution:
While you could represent a set of values with individual variables, using an array has advantages – especially if the values are related and will need to have the same operations applied to them. Using an array allows you to easily iterate through a set of values instead of being forced to access a group of individual variables. For example, if you wanted to represent a set of 10 high scores with individual variables, you‘d have to send each variable to cout to display all of the values, as in:
cout << "High Scores";
cout << score1;
cout << score2;
cout << score3;
cout << score4;
cout << score5;
cout << score6;
cout << score7;
cout << score8;
cout << score9;
cout << score10;
But using an array allows a shorter and more elegant solution:
for (int i = 0; i < numScores; ++i)
cout << score[i] << endl;
3. What are some limitations imposed by a fixed array size?
Solution:
The major limitation imposed by a fixed array is that it can‘t grow in size. Once you establish the number of elements for the array, you can‘t change it. So, as a game programmer, you‘re forced to know the largest possible number of elements you will need to store with an array. Another disadvantage is that a fixed array can‘t shrink in size. Once you declare an array of a certain size, the memory needed to store all of the values in the array is allocated, even if only a few values are actually ever stored in the array as elements.
[Solved] TEST BANK FOR Beginning C++ Through Game Programming 2nd Edition By Michael Dawson
- This solution is not purchased yet.
- Submitted On 10 Feb, 2022 12:27:03
- A-Grades
- Rating : 0
- Grade : No Rating
- Questions : 0
- Solutions : 275
- Blog : 0
- Earned : $35.00