- 1、本文档共26页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
罗培羽—教你用VB制作RPG游戏 第3节.ppt
罗培羽—教你用VB制作RPG游戏 第三节 NPC事件 NPC Events 罗培羽 作品 网名 碧俐千仞 QQ:345697666 E_mail:tyxxxx@ 博客:/mhqy 假设我们的地图最多有10个NPC(你可以根据实际情况修改) 添加picturebox对象,命名为Npc,然后创建控件数组,共10个。 定义 我们在每张地图的定义中加上 NpcPicture(9) As String’Npc的图片 NpcX(9) As Single’ Npc的横坐标 NpcY(9) As Single’ Npc的纵坐标 定义NPC 我们先添加一个文件夹npc用来放Npc的图片 我们把GoDimMap()添加以下 With map1 npc定义 .NpcX(0) = 800 .NpcY(0) = 400 .NpcPicture(0) = AppDisk + npc/sm.bmp End With MapStart()中我们添加 npc处理 For i = 0 To 9 With main.Npc(i) .Picture = LoadPicture(mapx.NpcPicture(i)) .Left = mapx.NpcX(i) .Top = mapx.NpcY(i) End With Next i 让Npc显示 在Draw()中添加 画Npc(角色之下) For i = 0 To 9 GdiTransparentBlt main.hDC, main.Npc(i).Left + Xm, main.Npc(i).Top + Ym, main.Npc(i).Width, main.Npc(i).Height, main.Npc(i).hDC, 0, 0, main.Npc(i).Width, main.Npc(i).Height, RGB(255, 255, 255) 画图 Next i 但……我们通过两次画Npc来解决 画Npc底(角色之下) For i = 0 To 9 If Ym + main.Npc(i).Top + main.Npc(i).Height / 1.5 = Ys + main.Role.Height / 1.5 Then GdiTransparentBlt …… End if Next i ‘画Npc底(角色之上) For i = 0 To 9 If Ym + main.Npc(i).Top + main.Npc(i).Height / 1.5 Ys + main.Role.Height / 1.5 Then GdiTransparentBlt …… End if Next i NPC事件 先让点击NPC时有反应 Form_MouseDown()添加 For i = 0 To 9 If x main.Npc(i).Left + Xm And x main.Npc(i).Left + main.Npc(i).Width + Xm And y main.Npc(i).Top + Ym And y main.Npc(i).Top + main.Npc(i).Height + Ym Then MsgBox 你好 Exit Sub End If Next i 事件 添加Do_Npc模块 在地图模块中添加变量 Public MapNow As String ‘标记现在在用那张地图 在地图启动函数中添加 MapNow = mapx.Bottom 我们把地图的底层图片地址当作图片的特征标识 Public Sub CallNpc(i As Integer) If MapNow = map1.Bottom And i = 0 Then MsgBox 你好 Exit Sub End If End Sub Npc模块中 Form_MouseDown中 把msgbox换成Call CallNpc(i) 我们要定义一下i Dim i As Integer 地图转换 完善下MapMove() 相应位置添加代码,以便使地图转换时不会发生意外 Xm = 0 Xm = main.Width / 15 - main.MapB.Width Ym = 0 Ym = main.Height / 15 - main.MapB.Height 地图转换 地图1中定义NPC .NpcX(1) = 1000 .NpcY(1) = 880 .NpcPicture(1) = AppDisk + npc/door.bmp 地图转换 地图2中定义NPC With map2 npc定义 .NpcX(0) = 2350 .NpcY(0) = 216 .NpcPicture(
文档评论(0)