Listing 6. Beginning of the moveBall function.
void moveBall(){
//Save current location of ball.
tempX = x;
tempY = y;
//The code in the switch statement is identical to the
// code in the earlier version of the program.
switch(dir){
case 0:
//Direction is northwest.
if((x <= radius) || (y <= radius)){
//Ball has collided with either the left wall or
// the top wall.
//Get a new direction. Note that if the new
// direction is the same as the old one, control
// will come back to here to get still another
// direction the next time the function is called.
dir = rand() % 4;
}else{
//No collision, set new location for the ball
--x;
--y;
}//end else
break;
case 1:
//Direction is southwest.
if(((x <= radius) || (y >= (height - radius)))){
//get a new direction
dir = rand() % 4;
}else{
//set new location for the ball
--x;
++y;
}//end else
break;
case 2:
//Direction is northeast.
if(((x >= (width - radius)) || (y <= radius))){
//get a new direction
dir = rand() % 4;
}else{
//set new location for the ball
++x;
--y;
}//end else
break;
case 3:
//Direction is southeast
if((((x >= (width - radius)) ||
(y >= (height - radius))))){
//get a new direction
dir = rand() % 4;
}else{
//set new location for the ball
++x;
++y;
}//end else
}//end switch
|