问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

VB 超简易迷宫 代码

发布网友 发布时间:2024-10-22 11:56

我来回答

2个回答

热心网友 时间:2024-10-22 18:31

'API函数,判断两个矩形是否相交(包括边界重合)
Private Declare Function IntersectRect Lib "user32" (lpDestRECT As RECT, lpSrc1RECT As RECT, lpSrc2RECT As RECT) As Long
Private Type RECT
X1 As Long
Y1 As Long
X2 As Long
Y2 As Long
End Type
Dim xyStart As RECT '定义小人开始所在区域
Dim xyEnd As RECT '定义小人走出迷宫所在区域,用来判断是否成功
Dim spRECT(12) As RECT '我这里只有13个shape画的墙,用来记录所有墙覆盖的区域
Dim menRECT As RECT '小人覆盖的区域
Const bu As Long = 10 '定义小人移动的步长
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim temp As RECT
Select Case KeyCode
Case vbKeyUp
menRECT.Y1 = menRECT.Y1 - bu
menRECT.Y2 = menRECT.Y2 - bu
If zq(menRECT) Then spMen.top = spMen.top - bu
Case vbKeyDown
menRECT.Y1 = menRECT.Y1 + bu
menRECT.Y2 = menRECT.Y2 + bu
If zq(menRECT) Then spMen.top = spMen.top + bu
Case vbKeyLeft
menRECT.X1 = menRECT.X1 - bu
menRECT.X2 = menRECT.X2 - bu
If zq(menRECT) Then spMen.left = spMen.left - bu
Case vbKeyRight
menRECT.X1 = menRECT.X1 + bu
menRECT.X2 = menRECT.X2 + bu
If zq(menRECT) Then spMen.left = spMen.left + bu
End Select
menRECT.X1 = spMen.left
menRECT.Y1 = spMen.top
menRECT.X2 = spMen.left + spMen.Width
menRECT.Y2 = spMen.top + spMen.Height
If IntersectRect(temp, menRECT, xyEnd) > 0 Then
MsgBox "抵达终点了"
End If
End Sub
Private Sub Form_Load()
xyStart.X1 = 0 '开始的位置你自己定义
xyStart.Y1 = 0
xyStart.X2 = 360
xyStart.Y2 = 360
xyEnd.X1 = Me.ScaleWidth - 360 '结束的位置你自己定义
xyEnd.Y1 = 0
xyEnd.X2 = Me.ScaleWidth
xyEnd.Y2 = 360
Me.AutoRedraw = True
Line (xyStart.X1, xyStart.Y1)-(xyStart.X2, xyStart.Y2), vbYellow, BF '开始的地方画方框标记
Line (xyEnd.X1, xyEnd.Y1)-(xyEnd.X2, xyEnd.Y2), vbGreen, BF '结束的地方画方框标记
spMen.Shape = 3 'spmen是SHAPE控件表示人,用圆形表示
spMen.Width = 255: spMen.Height = 255 '人物大小
spMen.top = (xyStart.Y2 - xyStart.Y1 - spMen.Height) / 2 '让小人在开始位置居中
spMen.left = (xyStart.X2 - xyStart.X1 - spMen.Width) / 2
menRECT.X1 = spMen.left '记录开始小人的区域
menRECT.Y1 = spMen.top
menRECT.X2 = spMen.left + spMen.Width
menRECT.Y2 = spMen.top + spMen.Height
For i = 0 To 12 '记录开始时所有墙的区域
spRECT(i).X1 = sp(i).left
spRECT(i).Y1 = sp(i).top
spRECT(i).X2 = sp(i).left + sp(i).Width
spRECT(i).Y2 = sp(i).top + sp(i).Height
Next
End Sub
Private Function zq(Men As RECT) As Boolean
'判断是否撞墙并且没有出窗体的界限,超出界限返回假
zq = True
Dim temp As RECT
For i = 0 To 12
If IntersectRect(temp, Men, spRECT(i)) > 0 Then
zq = False
Exit Function
End If
Next
If Men.X1 < 0 Then zq = False: Exit Function
If Men.X2 > Me.ScaleWidth Then zq = False: Exit Function
If Men.Y1 < 0 Then zq = False: Exit Function
If Men.Y2 > Me.ScaleHeight Then zq = False: Exit Function
End Function

热心网友 时间:2024-10-22 18:28

  每点一个键运动之前,把小人的坐标备份为x,y。如果小人运动后的坐标与边框重合,就令其限坐标为备份的坐标,否则为运动后应有的坐标。

  dim prex,prey

  prex=xiaoren.x

  prey=xiaoren.y

  (这里省略移动的代码)

if xiaoren.坐标 在 线.坐标内 then        '这里可以用”点到线段两端距离等于线段距离“实现!!

x=prex

y=pre.y

else

ehd if

加点处可定义为函数(应该是这么叫吧,就是那个sub),然后call它就行了,这样更方便一点。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
门?049期父母欲其改娶五字金口决,开是什么特号生肖 支付宝怎么把银行卡的钱转到余额里呢? 下载wampserver5,安装并启动后不能启用apache、mysql的功能,请问这是怎... wampserver安装多个版本phpmysqlapache 四季豆有哪些吃法值得推荐? 四季豆牛肉馅饼的家常做法是什么? 香煎四季豆豆腐饼怎么做好吃 腾讯会议没声音怎么修复-腾讯会议没有声音修复办法 西安市高新区所有幼儿园 西安高新第二初级中学学区有哪些小区 光绪皇帝是因什么而死的 清朝皇帝光绪是怎么死的? 光绪皇帝死于何时? 安龙特产大全(黔西南州安龙县十大特产) 哥们 再推荐点经典英文歌曲呗 地铁1号线 换4号线 是不是要出1号线 站 在进入4号线站 混动版艾力绅换电池多少钱(试驾最新款艾力绅混动) 是不是琥珀色的眼睛在强光下能变成金色 天生舞男影片评价 智能电饭煲怪病,继电器焊上就不工作,拆下继电器,用导线从原接线点接... 菱空调muz-xc72vA变频空调压缩机不启动什么原因 大言不惭,倒悬之危。是三个什么数字? 数字3大2小与成语含义 危如怎么造句 简单好做的荤菜有哪些? 我的农行信用卡11月1号还的,请问什么时候可以再刷 农行信用卡10号出帐,如果本月11号刷卡10000,下月9号还进去10000,那么下... ...日,11号我就还进去了,请问过两天可以在刷出来吗,这个月需要还吗?还... 美的微电脑电饭锅按键正常指示灯显示煮饭,主加热不工作,只有在保温时... 我的女朋友被她前男朋友的妈妈告上了法院,我该不该去陪着的, 请高手回... RECTRECT类 我朋友在微信朋友圈里发了个说说然后自己在下面统一回复了,别人都能... 补牙时疼吗 补牙哪个过程最痛 补牙的时候疼吗? 育种的方法有哪些 我的煤气灶漏气了怎么办?好多的火从开关哪出来,好害怕 ,但是饭还得... 湖南农大到湖南师范大学树达学院公交怎么走 从长沙市火车站到湖南师范大学树达学院,搭公交车,怎么去? 树达学院和涉外哪个好 世界男排大冠军赛是那几个国家? 复式楼房用TP-LINK哪个型号无线路由器好? 我家复式楼,300M的路由器放在二楼书房!我的房间在一楼,但是WI-FI信号... 倾城之恋中“死生契阔—与子相悦”与诗经中不符 java中联合主键的应用 在联合主键的对象关系映射文件中用什么标签表示 当归能祛斑怎么用法 妖孽夫,桃花妻的作品目录 求《妖孽夫,桃花妻》第五十五回~~~下到的全五十五回都不对~~急求!!! 风扇费电多少