ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:263.60KB ,
资源ID:21997941      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21997941.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Visual C++游戏开发笔记之十一 基础动画显示四 排序贴图Word下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Visual C++游戏开发笔记之十一 基础动画显示四 排序贴图Word下载.docx

1、11. 12. if(popj+1.y4. /定义一个结构体5. structdragon/定义dragon结构,代表画面上的恐龙,其结构成员x和y为贴图坐标,dir为目前恐龙的移动方向6. x,y;dir;9. ;11. /定义常数12. constdraNum12;/定义常数draNum,代表程序在画面上要出现的恐龙数目,在此设定为12个13. /全局变量定义14. HINSTANCEhInst;15. HBITMAPdraPic4,bg;/draPic4储存恐龙上下左右移动的连续图案,bg为存储背景图16. HDChdc,mdc,bufdc;17. HWNDhWnd;18. DWORDt

2、Pre,tNow;19. intpicNum;20. dragondradraNum;/按照draNum的值建立数组dra,产生画面上出现的恐龙。23. /全局函数声明24. ATOMMyRegisterClass(HINSTANCEhInstance);25. BOOLInitInstance(HINSTANCE,int);26. LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);27. voidMyPaint(HDChdc);28. 29. /*WinMain函数,程序入口点函数*30. intAPIENTRYWinMain(HINSTANCE

3、hInstance,31. HINSTANCEhPrevInstance,32. LPSTRlpCmdLine,33. nCmdShow)34. 35. MSGmsg;36. 37. MyRegisterClass(hInstance);38. 39. /初始化40. if(!InitInstance(hInstance,nCmdShow)41. 42. returnFALSE;43. 44. GetMessage(&msg,NULL,NULL,NULL);/初始化msg45. /消息循环46. while(msg.message!=WM_QUIT)47. 48. if(PeekMessage

4、(&msg,NULL,0,0,PM_REMOVE)49. 50. TranslateMessage(msg);51. DispatchMessage(52. 53. else54. 55. tNowGetTickCount();56. if(tNow-tPre100)57. MyPaint(hdc);58. 59. 60. 61. msg.wParam;62. 63. 64. /*设计一个窗口类,类似填空题,使用窗口结构体*65. ATOMhInstance)66. 67. WNDCLASSEXwcex;68. 69. wcex.cbSizesizeof(WNDCLASSEX);70. wce

5、x.styleCS_HREDRAW|CS_VREDRAW;71. wcex.lpfnWndProc(WNDPROC)WndProc;72. wcex.cbClsExtra0;73. wcex.cbWndExtra74. wcex.hInstancehInstance;75. wcex.hIconNULL;76. wcex.hCursor77. LoadCursor(NULL,IDC_ARROW);78. wcex.hbrBackground(HBRUSH)(COLOR_WINDOW+1);79. wcex.lpszMenuName80. wcex.lpszClassNamecanvas;81.

6、 wcex.hIconSm82. 83. RegisterClassEx(&wcex);84. 85. 86. /*初始化函数*87. /加载位图并设定各初始值88. BOOLInitInstance(HINSTANCE89. 90. HBITMAPbmp;91. hInst92. i;93. 94. hWndCreateWindow(,绘图窗口WS_OVERLAPPEDWINDOW,95. CW_USEDEFAULT,0,NULL);96. 97. hWnd)98. 99. 100. 101. 102. MoveWindow(hWnd,10,10,640,480,true);103. Sho

7、wWindow(hWnd,nCmdShow);104. UpdateWindow(hWnd);105. 106. hdcGetDC(hWnd);107. mdcCreateCompatibleDC(hdc);108. bufdc109. 110. bmpCreateCompatibleBitmap(hdc,640,480);/建立一个空位图并放入mdc中111. SelectObject(mdc,bmp);112. 113. 114. /加载各张恐龙跑动图及背景图,这里以0,1,2,3来代表恐龙的上,下,左,右移动115. draPic0(HBITMAP)LoadImage(NULL,dra0

8、.bmp,IMAGE_BITMAP,528,188,LR_LOADFROMFILE);116. draPic1dra1.bmp,IMAGE_BITMAP,544,164,LR_LOADFROMFILE);117. draPic2dra2.bmp,IMAGE_BITMAP,760,198,LR_LOADFROMFILE);118. draPic3dra3.bmp119. bgbg.bmp,IMAGE_BITMAP,640,480,LR_LOADFROMFILE);120. 121. 122. /设定所有恐龙初始的贴图坐标都为(200,200),初始的移动方向都为向左。123. draNum;12

9、4. 125. drai.dir3;/起始方向126. drai.x200;/贴图的起始X坐标127. drai.y/贴图的起始Y坐标128. 129. 130. 131. 132. TRUE;133. 134. 135. /气泡排序136. void137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. if(draj+1.ydraj.y)148. 149. draj+1;150. draj+1draj;151. draj152. 153. 154. 155. 156. 157. 158. 159. 160. /*自定义绘图函数*161.

10、 /1.对窗口中跑动的恐龙进行排序贴图162. /2.恐龙贴图坐标修正163. voidhdc)164. 165. w,h,i;166. 167. if(picNum=8)168. picNum169. 170. /在mdc中先贴上背景图171. SelectObject(bufdc,bg);172. BitBlt(mdc,0,0,640,480,bufdc,0,0,SRCCOPY);173. 174. BubSort(draNum);/贴上恐龙图之前调用BubSort()函数进行排序175. 176. 177. /下面这个for循环,按照目前恐龙的移动方向drai.dir,选取对应的位图到b

11、ufdc中,并设定截切的大小。每一张要在窗口上出现的恐龙图案依次先在mdc上进行透明贴图的操作。178. 179. 180. SelectObject(bufdc,draPicdrai.dir);181. switch(drai.dir)182. 183. case0:184. w66;185. h94;186. 187. 1:188. 68;189. 82;190. 191. 2:192. 95;193. 99;194. 195. 3:196. 197. 198. 199. 200. BitBlt(mdc,drai.x,drai.y,w,h,bufdc,picNum*w,h,SRCAND);

12、201. BitBlt(mdc,drai.x,drai.y,w,h,bufdc,picNum*w,0,SRCPAINT);202. 203. 204. /将最后画面显示在窗口中205. BitBlt(hdc,0,0,640,480,mdc,0,0,SRCCOPY);206. 207. tPre/记录此次绘图时间208. picNum+;209. 210. 211. /下面这个for循环,决定每一只恐龙下一次的移动方向及贴图坐标212. 213. 214. switch(rand()%4)/随机数除以4的余数来决定下次移动方向,余数0,1,2,3分别代表上,下,左,右215. 216. /cas

13、e0里面的代码,按照目前的移动方向来修正因为各个方向图案尺寸不一致而产生的贴图坐标误差,加入恐龙每次移动的单位量(上,下,左,右每次20个单位)而得到下次新的贴图坐标217. /上218. 219. 220. 221. -=20;222. 223. 224. +=2;225. 31;226. 227. 228. 14;229. 230. 231. 232. 233. 234. 235. 236. /在计算出新的贴图坐标之后,还需判断此新的坐标会不会使得恐龙贴图超出窗口边界,若超出,则将该方向上的坐标设定为刚好等于临界值237. if(drai.y0)238. 239. 240. 241. /其他方向按照和上面相同的方法计算242. /下243. 244. 245. 246. 247. 248. 249.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1