| yuqiubo 侠客文章 |
|---|
mdc = CreateCompatibleDC(hdc); // 获得与hdc兼容的DC
SelectObject(mdc,hBitmap); // 选择位图到mdcBitBlt(hdc,x,y,63,63,mdc,0,0,SRCPAINT); // 贴小球到hdc 即窗口上
//>>>>>>>>>>>>>>小球矩形区域重新赋值<<<<<<<<<<<<<<<<用于重绘客户区
ballrect.left=x-20;ballrect.right=x+BALL_BMP_SIZE+20;ballrect.top=y-20;ballrect.bottom=y+BALL_BMP_SIZE+20;ReleaseDC(hwnd,hdc); // 与GetDC 对应
DeleteDC(mdc); // 与CreateCompatibleDC对应if(
(x+BALL_BMP_SIZE*1/3) > (random%(rect.right-BALL_BMP_SIZE*1/3-2*FRAME_WIDTH) )
// 小球的左上角横坐标在篮筐左边框内&&(x+BALL_BMP_SIZE*2/3) < (random%(rect.right-BALL_BMP_SIZE*1/3-2*FRAME_WIDTH)+2*FRAME_WIDTH+BALL_BMP_SIZE*1/3 )// 小球的右上角横坐标在篮筐右边框内&&(y+BALL_BMP_SIZE*1/3) > (random%(rect.bottom-BALL_BMP_SIZE*1/3-2*FRAME_WIDTH) )// 小球的左上角纵坐标在篮筐上边框内&&(y+BALL_BMP_SIZE*2/3) < (random%(rect.bottom-BALL_BMP_SIZE*1/3 -2*FRAME_WIDTH )+2*FRAME_WIDTH+BALL_BMP_SIZE*1/3 )// 小球的左下角纵坐标在篮筐下边框内) //if语句 如果
{KillTimer(hwnd,1); // 销毁计时器int result = MessageBox(hwnd,TEXT("哦也!球进了!!!\n\n是否重新开始?"),TEXT(" 哦也!恭喜! "),MB_YESNO);if(IDYES == result) // 选择了重新开始
{InvalidateRect(hwnd,&rectangle,1); // 刷新篮筐矩形InvalidateRect(hwnd,&ballrect,1); // 刷新小球矩形srand((unsigned)time(NULL)); // 重新获得随即数random=rand(); // 重新获得随机数SetTimer(hwnd,1,90,NULL); // 重新设置计时器
x=y=-21; // 把小球放在0,0位置xstep=BALL_X_MOVE; // 设置水平移动速度ystep=BALL_Y_MOVE; // 设置垂直移动速度}else // 没有选择重新开始{result = MessageBox(hwnd,TEXT("是否真要退出游戏?"),TEXT("BOSS!请选择!"),MB_YESNO);if(IDYES == result) // 选择了退出
{DestroyWindow(hwnd);}else // 没有选择退出{result = MessageBox(hwnd,TEXT(" 从新开始:\"是\"\n\n 退出游戏:\"否\""),TEXT("BOSS!请再选择!"),MB_YESNO);if(IDYES == result) // 重新开始{InvalidateRect(hwnd,&rectangle,1); // 重绘篮筐区域InvalidateRect(hwnd,&ballrect,1); // 重绘小球区域srand((unsigned)time(NULL)); // 重设随机数random=rand(); // 获得随机数SetTimer(hwnd,1,90,NULL); // 重设计时器
x=y=-21; // 把小球放在0,0位置xstep=BALL_X_MOVE; // 设置水平移动速度ystep=BALL_Y_MOVE; // 设置垂直移动速度}
else // 否则退出{DestroyWindow(hwnd);} //else} // else} //else} // if//************************************************************
x+=xstep; // 水平移动
y+=ystep; // 垂直移动// 判断是否到边界,越界则重设
if(x+BALL_BMP_SIZE*2/3 > rect.right) // 右边界{xstep = -xstep;x = rect.right-BALL_BMP_SIZE*2/3;}if(y+BALL_BMP_SIZE*2/3 > rect.bottom) // 上边界{ystep = -ystep;y = rect.bottom-BALL_BMP_SIZE*2/3;}if(x < -BALL_BMP_SIZE*1/3) // 左边界{xstep = -xstep;x = -BALL_BMP_SIZE*1/3;}if(y < -BALL_BMP_SIZE*1/3) // 下边界{ystep = -ystep;y=-BALL_BMP_SIZE*1/3;}| 标题 | 作者 | 发布时间 |
|---|