>_<:Only a little change in the function of MyPaint(...),besides the initial value have some changes.

>_<:resource

>_<:code:

  

  1 #include <windows.h>
  2 // C 运行时头文件
  3 #include <stdlib.h>
  4 #include <cstdio>
  5 #include <malloc.h>
  6 #include <memory.h>
  7 #include <tchar.h>
  8 #include <time.h>
  9 #include <string>
 10 #include <cmath>
 11
 12 // 全局变量:
 13 HINSTANCE hInst;                                // 当前实例
 14 HBITMAP bg , ball[2];
 15 HDC hdc,mdc,bufdc;
 16 HWND hWnd;
 17 RECT rect;//窗口矩形
 18 int x[2] , y[2];//位置
 19 int vx[2] , vy[2];//速度
 20 int ax[2] , ay[2];//加速度
 21 int t=1 , num=0;//时间
 22
 23 // 此代码模块中包含的函数的前向声明:
 24 ATOM                MyRegisterClass(HINSTANCE hInstance);
 25 BOOL                InitInstance(HINSTANCE, int);
 26 LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
 27 INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);
 28 void                MyPaint(HDC hdc);
 29
 30
 31 int APIENTRY _tWinMain(HINSTANCE hInstance,
 32                      HINSTANCE hPrevInstance,
 33                      LPTSTR    lpCmdLine,
 34                      int       nCmdShow){
 35
 36     MSG msg;
 37     MyRegisterClass(hInstance);
 38     // 执行应用程序初始化:
 39     if (!InitInstance (hInstance, nCmdShow)){
 40         return FALSE;
 41     }
 42     // 主消息循环:
 43     while (GetMessage(&msg, NULL, 0, 0)){
 44         TranslateMessage(&msg);
 45         DispatchMessage(&msg);
 46     }
 47     return (int) msg.wParam;
 48 }
 49
 50 //  函数: MyRegisterClass()
 51 //
 52 //  目的: 注册窗口类。
 53 ATOM MyRegisterClass(HINSTANCE hInstance){
 54     WNDCLASSEX wcex;
 55
 56     wcex.cbSize = sizeof(WNDCLASSEX);
 57
 58     wcex.style            = CS_HREDRAW | CS_VREDRAW;
 59     wcex.lpfnWndProc    = WndProc;
 60     wcex.cbClsExtra        = 0;
 61     wcex.cbWndExtra        = 0;
 62     wcex.hInstance        = hInstance;
 63     wcex.hIcon            = NULL;
 64     wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
 65     wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
 66     wcex.lpszMenuName    = "Beautifulzzzz";
 67     wcex.lpszClassName    = "Beautifulzzzz";
 68     wcex.hIconSm        = NULL;
 69
 70     return RegisterClassEx(&wcex);
 71 }
 72
 73 //
 74 //   函数: InitInstance(HINSTANCE, int)
 75 //
 76 //   目的: 保存实例句柄并创建主窗口
 77 //
 78 //   注释:
 79 //
 80 //        在此函数中,我们在全局变量中保存实例句柄并
 81 //        创建和显示主程序窗口。
 82 //        棋盘拼接以及调用InitGame()开始棋局
 83 BOOL InitInstance(HINSTANCE hInstance, int nCmdShow){
 84    HBITMAP bmp;
 85    hInst = hInstance; // 将实例句柄存储在全局变量中
 86
 87    hWnd = CreateWindow("Beautifulzzzz","Beautifulzzzz", WS_OVERLAPPEDWINDOW,
 88       CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
 89
 90    if (!hWnd)
 91    {
 92       return FALSE;
 93    }
 94
 95    MoveWindow(hWnd,10,10,600,450,true);
 96    ShowWindow(hWnd, nCmdShow);
 97    UpdateWindow(hWnd);
 98
 99    hdc=GetDC(hWnd);
100    mdc=CreateCompatibleDC(hdc);
101    bufdc=CreateCompatibleDC(hdc);
102
103    bmp=CreateCompatibleBitmap(hdc,600,480);
104    SelectObject(mdc,bmp);
105
106    bg=(HBITMAP)LoadImageA(NULL,"bg.bmp",IMAGE_BITMAP,640,480,LR_LOADFROMFILE);
107    ball[0]=(HBITMAP)LoadImageA(NULL,"ball0.bmp",IMAGE_BITMAP,52,26,LR_LOADFROMFILE);
108    ball[1]=(HBITMAP)LoadImageA(NULL,"ball1.bmp",IMAGE_BITMAP,52,26,LR_LOADFROMFILE);
109
110    GetClientRect(hWnd,&rect);//取得内部窗口区域的大小;
111
112    x[0]=0;y[0]=100;vx[0]=5;vy[0]=0;ax[0]=0;ay[0]=1;
113
114    SetTimer(hWnd,1,10,NULL);
115    MyPaint(hdc);
116
117    return TRUE;
118 }
119
120 //
121 //  函数: WndProc(HWND, UINT, WPARAM, LPARAM)
122 //
123 //  目的: 处理主窗口的消息。
124 //
125 //  WM_COMMAND    - 处理应用程序菜单
126 //  WM_PAINT    - 绘制主窗口
127 //  WM_DESTROY    - 发送退出消息并返回
128 //
129 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){
130     int wmId, wmEvent;
131     PAINTSTRUCT ps;
132
133     switch (message){
134     case WM_TIMER:
135         A:MyPaint(hdc);
136         break;
137     case WM_PAINT:
138         hdc = BeginPaint(hWnd, &ps);
139         goto A;// TODO: 在此添加任意绘图代码...
140         EndPaint(hWnd, &ps);
141         break;
142     case WM_DESTROY:
143         DeleteDC(mdc);
144         DeleteDC(bufdc);
145         DeleteObject(bg);
146         DeleteObject(ball[0]);
147         DeleteObject(ball[1]);
148
149         KillTimer(hWnd,1);
150         ReleaseDC(hWnd,hdc);
151
152         PostQuitMessage(0);
153         break;
154     default:
155         return DefWindowProc(hWnd, message, wParam, lParam);
156     }
157     return 0;
158 }
159
160 //MyPaint()
161 //1、窗口贴图
162 //2、计算小球贴图坐标并判断小球是否碰撞窗口边缘
163 void MyPaint(HDC hdc){
164     SelectObject(bufdc,bg);
165     BitBlt(mdc,0,0,640,480,bufdc,0,0,SRCCOPY);
166
167     SelectObject(bufdc,ball[0]);
168     BitBlt(mdc,x[0],y[0],26,26,bufdc,26,0,SRCAND);
169     BitBlt(mdc,x[0],y[0],26,26,bufdc,0,0,SRCPAINT);
170
171     BitBlt(hdc,0,0,640,480,mdc,0,0,SRCCOPY);
172
173     for(int i=0;i<1;i++){
174         //计算x轴方向坐标及速度
175         vx[i]+=ax[i];
176         x[i]+=vx[i];
177
178         if(x[i]<=0){
179             x[i]=0;
180             vx[i]=-vx[i];
181         }else if(x[i]>=rect.right-26){
182             x[i]=rect.right-26;
183             vx[i]=-vx[i];
184         }
185         //计算y轴方向坐标及速度
186         vy[i]+=ay[i];
187         y[i]+=vy[i];
188
189         if(y[i]<=0){
190             y[i]=0;
191             vy[i]=-vy[i]-1;
192         }else if(y[i]>=rect.bottom-26){
193             y[i]=rect.bottom-26;
194             vy[i]=-vy[i]-1;
195         }
196     }
197 }
本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/3735185.html,如需转载请自行联系原作者

[游戏模版21] Win32 物理引擎 能量守恒相关推荐

  1. 七巧板平台html5游戏开发之初识物理引擎

    七巧板平台html5游戏开发之初识物理引擎 七巧板平台是用于Web App.中轻度HTML5游戏及富媒体类应用开发,集开发.运营于一体的平台.它基于HTML5技术开发,具有进入门槛极低.开发极简单.跨 ...

  2. unity3D游戏开发十一之物理引擎

    Unity内置了NVIDIA的Physx物理引擎,Physx是目前使用最为广泛的物理引擎,被很多游戏大作所采用,开发者可以通过物理引擎高效.逼真地模拟刚体碰撞.车辆驾驶.布料.重力等物理效果,使游戏画 ...

  3. [游戏模版18] Win32 五子棋

    >_<:Learning its AI logic. >_<:resource >_<:code: 1 #include <windows.h> 2 / ...

  4. [游戏模版15] Win32 飞机射击

    >_<:Only give you the code,try to understand it! >_<:picture resource 1 #include <win ...

  5. [游戏模版17] Win32 推箱子 迷宫

    >_<:Here introduce a simple game: >_<:resource >_<:only can push a box and finally ...

  6. [游戏模版3] Win32 画笔 画刷 图形

    >_<:introduce the functions of define\create\use pen and brush to draw all kinds of line and s ...

  7. 【Unity3D】射箭打靶游戏(简单工厂+物理引擎编程)

    打靶游戏:     1.靶对象为 5 环,按环计分:     2.箭对象,射中后要插在靶上:     3.游戏仅一轮,无限 trials: 增强要求:  添加一个风向和强度标志,提高难度 游戏成品图: ...

  8. Unity3D游戏开发初探—3.初步了解U3D物理引擎

    一.什么是物理引擎? 四个世纪前,物理学家牛顿发现了万有引力,并延伸出三大牛顿定理,为之后的物理学界的发展奠定了强大的理论基础.牛顿有句话是这么说的:"如果说我看得比较远的话,那是因为我站在 ...

  9. Ophone平台2D游戏引擎实现——物理引擎(一)(二)

    http://dev.10086.cn/cmdn/wiki/index.php?doc-view-4271.html http://dev.10086.cn/cmdn/wiki/index.php?d ...

最新文章

  1. 如何解决Linux下侦听端口被占用
  2. 回顾2018,正在改变未来游戏规则的技术
  3. 前端开发常见问题精选(五)
  4. 编译器的普遍翻译步骤
  5. 阿里云服务器外网访问问题
  6. 未到期的应收票据贴现时如何记账
  7. 揭秘腾讯会议背后的视频编码“神器”
  8. maven打jar包pom配置
  9. 如何添加地图控件到Windows Phone 8的页面中
  10. django-中间件
  11. mysql 5.7 编译_MySQL5.7.20编译安装
  12. 从Label Smoothing和Knowledge Distillation理解Soft Label
  13. 适合android平板的浏览器,推荐5款安卓平板Pad版应用浏览器
  14. 曾经优秀的人,怎么就突然不优秀了。
  15. Guideline 2.3.3 -- We noticed that your screenshots do not sufficiently reflect your app in use
  16. SringBoot实现PDF签字盖章
  17. Recorder Point Guideline
  18. 用友nc65 uap开发找产品功能源代码
  19. MG本地服务器如何改ip
  20. c语言的字符数组strlen的详细使用

热门文章

  1. Spring - Java/J2EE Application Framework 应用框架 第 5 章 Spring AOP: Spring之面向方面编程G
  2. JVM 调优 —— GC 长时间停顿问题及解决方法
  3. OpenCV简介及图像处理示例教程
  4. 程序员面试题精选100题(25)-在从1到n的正数中1出现的次数[算法]
  5. 个人申请并部署阿里云免费Symantec SSL过程浅谈
  6. 【iOS-cocos2d-X 游戏开发之四】Cocos2dX创建Android NDK新项目并编译导入Eclipse中正常运行!...
  7. Gartner:大数据投资增长,但计划投资的组织机构却在减少
  8. 【ionic App问题总结系列】ionic 如何更新app版本
  9. Self Service Password (SSP)
  10. javascript--拖动图片时取消浏览器默认提示