重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
新建窗口,添加picture控件
创新互联建站坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站制作、成都做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的王益网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
利用line()方法画线
line(开始x坐标,开始y坐标)-(结束x坐标,结束y坐标),线的颜色,画线的方式(默认为线,B为矩形无填充,BF为填充的矩形)
For i = 1 To 16
Picture1.Line (0, Picture1.Height / 2)-(i * (Picture1.Width / 16), 0), RGB(255, 0, 0)
Picture1.Line (0, Picture1.Height / 2)-(i * (Picture1.Width / 16), Picture1.Height), RGB(255, 0, 0)
Picture1.Line (Picture1.Width, Picture1.Height / 2)-(i * (Picture1.Width / 16), 0), RGB(0, 255, 0)
Picture1.Line (Picture1.Width, Picture1.Height / 2)-(i * (Picture1.Width / 16), Picture1.Height), RGB(0, 255, 0)
Next i
如果要在窗口上画也可以调用窗口的line方法即form.line()
复杂的不会,来点儿简单的,借用在listbox里按下鼠标时再移动,会高亮显示选择行,并且会随鼠标移动而变化的这一特点改进的,不足之处是在listbox里,此时处于鼠标左键在按下状态。
Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Public Const MOUSEEVENTF_LEFTDOWN = H2 '模拟鼠标左键按下
Private Sub ListBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles ListBox1.MouseMove
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
End Sub
定理:穿越于一组互不相交的多边形障碍物S之间、从Pstart通往Pgoal的任何一条最短路径,都是一条多边形路径,其中所有的内部顶点都是S的顶点。
推广:所有最短路径问题。
结论:只有普遍适用的算法,没有普遍适用的代码。
补充:只有问题实例化才能写出适用代码。
你所遇到的可不只是寻路问题,二维寻路相对简单点,我猜测你的问题产生在“碰撞”上,建议你多学习一下“计算几何学”、“计算机图形学”、“机器人运动学”等,当然,编程的基本功也很重要。其实,带有运动的游戏编程是很复杂的。你也可以将你的程序包发给我等我有时间帮你看看。
最近我也在整这个呢,据说找最短路径的是A*算法,不过我不喜欢看别人的代码(因为看不懂)只看原理,你可以找一下AStar算法方面的资料,原理比较简单,不过实现起来比较麻烦,我用的是VB.NET实现的,我用用它来走迷宫,而且找的是最短路径,经过几天努力,基本实现了(见 ),不过还有很多有待改进的地方。我不是计算机专业的,当然也没学过数据结构,你那两个问题我都搞不懂,不过有一点提示就是A星算法。