win32强化练习3.5_弹球游戏(键盘+定时器)
2016-11-22 20:21
267 查看
弹球游戏
见程序运行图,其实就是1通过定时器使小球运动+2键盘控制下方挡板,挡住则小球反弹,挡不住则失败。
这个相当于3.1和3.3的组合体,并且增加了一些碰撞的判断,实现步骤如下:
1. 声明全局变量和常量(小球和板的坐标,小球的运动方向)
2. 处理WM_PAINT消息,选绘制小球和板,使用相对坐标(基准+偏移)
3. 处理WM_KEYDOWN消息,使板能左右移动 (左右边界偷懒没有控制)
4. 在WM_CREATE消息处理中,开启定时器
5. 最后,处理WM_TIMER消息,让小球坐标变化,并进行各种反弹判定和失败判定
int gXball, gYball, gXbat; //小球x,y坐标;板的x坐标
const int gYbat= 220; //板的Y坐标不变
int vx = 1, vy = 1; //小球的x,y向速度
由这个练习看到,基础还是和3.1和3.3是一样的,不论处理定时器还是键盘消息都是和基础相同的,只是增加了一些判断。
这一些小小的台阶,就让我们的小游戏初步的可以玩了~
基础非常重要,而基础之间的连接和组合更加的重要!
见程序运行图,其实就是1通过定时器使小球运动+2键盘控制下方挡板,挡住则小球反弹,挡不住则失败。
这个相当于3.1和3.3的组合体,并且增加了一些碰撞的判断,实现步骤如下:
1. 声明全局变量和常量(小球和板的坐标,小球的运动方向)
2. 处理WM_PAINT消息,选绘制小球和板,使用相对坐标(基准+偏移)
3. 处理WM_KEYDOWN消息,使板能左右移动 (左右边界偷懒没有控制)
4. 在WM_CREATE消息处理中,开启定时器
5. 最后,处理WM_TIMER消息,让小球坐标变化,并进行各种反弹判定和失败判定
int gXball, gYball, gXbat; //小球x,y坐标;板的x坐标
const int gYbat= 220; //板的Y坐标不变
int vx = 1, vy = 1; //小球的x,y向速度
case WM_PAINT: { PAINTSTRUCT ps; HDC hdc = BeginPaint(hwnd, &ps); Rectangle(hdc, gXbat, gYbat, gXbat + 80, gYbat + 10); Ellipse(hdc, gXball, gYball, gXball+30, gYball+30); EndPaint(hwnd, &ps); } break;
case WM_KEYDOWN: { switch(wParam) { case VK_LEFT: gXbat -= 10; break; case VK_RIGHT: gXbat += 10; break; default: break; } InvalidateRect(hwnd, NULL, TRUE); //重绘 } break;
case WM_CREATE: SetTimer(hwnd, 10, 10, NULL); break;
case WM_TIMER: { RECT rt; GetClientRect(hwnd, &rt); if (gXball < 0 || gXball > rt.right - 30) vx *=-1; //左右反弹 if (gYball < 0) vy*= -1; //上边界反弹 if (gYball + 30 == 220) //是否碰到板反弹 { if (gXball + 15 > gXbat && gXball + 15 < gXbat + 80) vy *= -1; } if (gYball + 30 == rt.bottom) //失败判定 { KillTimer(hwnd, 10); MessageBox(hwnd, "失败","",0); } gXball += vx; gYball += vy; InvalidateRect(hwnd, NULL, TRUE); //重绘 } break;
由这个练习看到,基础还是和3.1和3.3是一样的,不论处理定时器还是键盘消息都是和基础相同的,只是增加了一些判断。
这一些小小的台阶,就让我们的小游戏初步的可以玩了~
基础非常重要,而基础之间的连接和组合更加的重要!
相关文章推荐
- win32强化练习3.3_定时器与弹球
- win32强化练习3.1_键盘控制小球移动
- win32强化练习3.4_绘制坦克及四向移动(键盘进阶)
- win32强化练习4.3_粗糙的SPY获取别人的窗口
- win32强化练习4.6_自定义图标或图像的工具栏
- Java基础知识强化之IO流笔记51:IO流练习之 键盘录入学生信息按照总分排序写入文本文件中的案例
- win32强化练习2.1_简单加法计算器(界面文本与数据的读取和显示)
- win32强化练习4.7_快速建立TreeView
- win32强化练习2.2_单选与复选控件
- win32强化练习3.6_贪吃蛇半部
- win32强化练习4.1_更改别人的菜单
- 在framebuffer 下 用C语言做弹球游戏,键盘控制. linux C
- win32强化练习2.3_四则计算器(组合框控件)
- 在framebuffer 下 用C语言做弹球游戏,键盘控制. linux C
- win32强化练习0.1_开发环境搭建
- win32强化练习3.7_拖动窗口
- win32强化练习2.4_双击播放MP3(列表框与通知码)
- win32强化练习1.1_MessageBox简单应用及手动编译
- win32强化练习4.0_资源相关练习简介
- win32强化练习2.5_滚动条初步