|
|
近日发现windows游戏编程的一处错误
来自第十二章的demo12_3.cpp, void Init_Rocks() 函数
#define ROCK_LARGE 0
#define ROCK_MEDIUM 1
#define ROCK_SMALL 2
int rock_sizes[3] = {96,56,32};
rocks[rock].varsI[0] = rand()%3;
rocks[rock].varsI[1] = rock_sizes[rocks[rock].varsI[0]];
//这时rocks[rock].varsI[1]的值为rock_sizes数组中之一
//而switch中的case语句 为 o,1,2,这样switch语句不会执行,此处多余
switch(rocks[rock].varsI[1])
{
case ROCK_LARGE:
{
// copy dd bitmap surfaces
memcpy(rocks[rock].images,rock_l.images,sizeof(LPDIRECTDRAWSURFACE)
*MAX_BOB_FRAMES);
// set width and height (incase)
rocks[rock].width = rock_l.width;
rocks[rock].height = rock_l.height;
} break;
case ROCK_MEDIUM:
{
// copy dd bitmap surfaces
memcpy(rocks[rock].images,rock_m.images,sizeof(LPDIRECTDRAWSURFACE)
*MAX_BOB_FRAMES);
// set width and height (incase)
rocks[rock].width = rock_m.width;
rocks[rock].height = rock_m.height;
} break;
case ROCK_SMALL:
{
// copy dd bitmap surfaces
memcpy(rocks[rock].images,rock_s.images,sizeof(LPDIRECTDRAWSURFACE)
*MAX_BOB_FRAMES);
// set width and height (incase)
rocks[rock].width = rock_s.width;
rocks[rock].height = rock_s.height;
} break;
default: break;
} // end switch*/ |
|