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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

Visual C++游戏开发笔记十五 游戏人工智能一 运动型游戏AIWord文件下载.docx

1、2. (3. P=rand()%3;/取随机数除以3的余数4. If(p!=1)/余数不为1时进行追逐5. 6. If(枭兽X7. 枭兽X-;8. else9. 枭兽X+;10. If(枭兽Y躲避移动其实躲避移动和追逐移动的算法差不多,就是把+的地方和-对调就行了,让怪物与人物的空间坐标相互远离。具体代码如下:【算法3】2. 枭兽X+;4. 枭兽X-;6. 枭兽Y-;8. 枭兽Y+;二、在实例中将知识融会贯通依旧,我们看一个实例,来将本节的知识融会贯通。这是一个小鸟追逐小女孩的场景,我们需要用键盘的【】【】【】【】键来躲避小鸟的追击,具体键盘输入消息的知识点还不太了解的朋友,请移步笔记十二,这

2、里给出链接:【Visual C+】游戏开发笔记十二 游戏输入消息处理(一) 键盘消息处理下面依旧是贴图详细注释的源代码:1. #includestdafx.h2. #includestdio.h3. 4. /全局变量声明5. HINSTANCEhInst;6. HBITMAPgirl4,bg,bird;7. HDChdc,mdc,bufdc;8. HWNDhWnd;9. 10. DWORDtPre,tNow,nowX,nowY;11. POINTp3;/用于记录3只小鸟的贴图坐标12. intnum,dir,x,y;/x,y变量为人物贴图坐标,dir为人物移动方向,这里我们中以0,1,2,3代

3、表人物上,下,左,右方向上的移动:num为连续贴图中的小图编号13. 14. /全局函数声明15. ATOMMyRegisterClass(HINSTANCEhInstance);16. BOOLInitInstance(HINSTANCE,int);17. LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);18. voidMyPaint(HDChdc);19. 20. /*WinMain函数,程序入口点函数*21. intAPIENTRYWinMain(HINSTANCEhInstance,22. HINSTANCEhPrevInstance,2

4、3. LPSTRlpCmdLine,24. intnCmdShow)25. 26. MSGmsg;27. 28. MyRegisterClass(hInstance);29. 30. /初始化31. if(!InitInstance(hInstance,nCmdShow)32. 33. returnFALSE;34. 35. 36. GetMessage(&msg,NULL,NULL,NULL);/初始化msg37. /消息循环38. while(msg.message!=WM_QUIT)39. 40. if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)41. 42

5、. TranslateMessage(msg);43. DispatchMessage(44. 45. else46. 47. tNow=GetTickCount();48. if(tNow-tPre40)49. MyPaint(hdc);50. 51. 52. 53. msg.wParam;54. 55. 56. /*设计一个窗口类,类似填空题,使用窗口结构体*57. ATOMhInstance)58. 59. WNDCLASSEXwcex;60. 61. wcex.cbSizesizeof(WNDCLASSEX);62. wcex.styleCS_HREDRAW|CS_VREDRAW;63

6、. wcex.lpfnWndProc(WNDPROC)WndProc;64. wcex.cbClsExtra0;65. wcex.cbWndExtra66. wcex.hInstancehInstance;67. wcex.hIconNULL;68. wcex.hCursor69. LoadCursor(NULL,IDC_ARROW);70. wcex.hbrBackground(HBRUSH)(COLOR_WINDOW+1);71. wcex.lpszMenuName72. wcex.lpszClassNamecanvas;73. wcex.hIconSm74. 75. RegisterCl

7、assEx(&wcex);76. 77. 78. /*初始化函数*79. /加载位图并设定各种初始值80. BOOLInitInstance(HINSTANCE81. 82. HBITMAPbmp;83. hInst84. 85. hWndCreateWindow(,浅墨的绘图窗口WS_OVERLAPPEDWINDOW,86. CW_USEDEFAULT,0,NULL);87. 88. hWnd)89. 90. 91. 92. 93. MoveWindow(hWnd,10,10,640,480,true);94. ShowWindow(hWnd,nCmdShow);95. UpdateWind

8、ow(hWnd);96. 97. hdcGetDC(hWnd);98. mdcCreateCompatibleDC(hdc);99. bufdc100. 101. 102. /建立空的位图并置入mdc中103. bmpCreateCompatibleBitmap(hdc,640,480);104. SelectObject(mdc,bmp);105. 106. 107. /设定人物贴图初始位置和移动方向108. x300;109. y250;110. dir111. num112. nowX113. nowY114. 115. 116. /载入各连续移动位图及背景图117. girl0(HBI

9、TMAP)LoadImage(NULL,girl0.bmp,IMAGE_BITMAP,440,148,LR_LOADFROMFILE);118. girl1girl1.bmp,IMAGE_BITMAP,424,154,LR_LOADFROMFILE);119. girl2girl2.bmp,IMAGE_BITMAP,480,148,LR_LOADFROMFILE);120. girl3girl3.bmp121. bgbg.bmp,IMAGE_BITMAP,640,480,LR_LOADFROMFILE);122. 123. 124. birdbird.bmp,IMAGE_BITMAP,122,

10、122,LR_LOADFROMFILE);125. 126. p0.x30;127. p0.y100;128. 129. p1.x130. p1.y131. 132. p2.x500;133. p2.y400;134. 135. 136. 137. 138. TRUE;139. 140. 141. /*自定义绘图函数*142. /1.人物贴图坐标修正及窗口贴图143. /进行AI行为判断并贴图144. voidhdc)145. 146. w,h,i;147. 148. /先在mdc中贴上背景图149. SelectObject(bufdc,bg);150. BitBlt(mdc,0,0,640

11、,480,bufdc,0,0,SRCCOPY);151. 152. /按照目前的移动方向取出对应人物的连续走动图,并确定截取人物图的宽度与高度153. SelectObject(bufdc,girldir);154. switch(dir)155. 156. case0:157. w55;158. h74;159. break;160. 1:161. 53;162. 77;163. 164. 2:165. 60;166. 167. 168. 3:169. 170. 171. 172. 173. /按照目前的X,Y的值在mdc上进行透明贴图,然后显示在窗口画面上174. BitBlt(mdc,x

12、,y,w,h,bufdc,num*w,h,SRCAND);175. BitBlt(mdc,x,y,w,h,bufdc,num*w,0,SRCPAINT);176. 177. 178. 179. 180. /贴出鸟的图片181. SelectObject(bufdc,bird);182. 183. 184. for(i=0;i3;i+)185. 186. 187. if(rand()%3!1)/有2/3几率进行追踪188. 189. if(pi.yy-16)190. pi.y-=5;191. 192. +=193. 194. if(pi.xx-25)195. pi.x196. 197. 198.

13、 199. 200. /判断小鸟的移动方向,从而选择合适的位图朝向201. 202. BitBlt(mdc,pi.x,pi.y,61,61,bufdc,61,61,SRCAND);203. BitBlt(mdc,pi.x,pi.y,61,61,bufdc,0,61,SRCPAINT);204. 205. 206. 207. BitBlt(mdc,pi.x,pi.y,61,61,bufdc,61,0,SRCAND);208. BitBlt(mdc,pi.x,pi.y,61,61,bufdc,0,0,SRCPAINT);209. 210. 211. 212. BitBlt(hdc,0,0,640,

14、480,mdc,0,0,SRCCOPY);213. 214. 215. 216. 217. tPre/记录此次绘图时间218. 219. num+;220. if(num=8)221. 222. 223. 224. 225. /*消息处理函数*226. /1.按下【Esc】键结束程序227. /2.按下方向键重设贴图坐标228. LRESULTWndProc(HWNDhWnd,UINTmessage,WPARAMwParam,LPARAMlParam)229. 230. switch(message)231. 232. WM_KEYDOWN:/按下键盘消息233. /判断按键的虚拟键码234. (wParam)235. 236. VK_ESCAPE:/按下【Esc】键237. PostQuitMessage(0/结束程序238. 239. VK_UP:/按下【】键240. /先按照目前的移动方向来进行贴图坐标修正,并加入人物往上移动的量(每次按下一次按键移动10个单位),来决定人物贴图坐标的X与Y值,接着判断坐标是否超出窗口区域,若有则再次修正241. 242. 243. 244. 10;245. 246. 247.

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

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