| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3618 人关注过本帖
标题:用VB做一个小球移动的问题
只看楼主 加入收藏
stzwq2815
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-11-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:16 
用VB做一个小球移动的问题
用VB做一个小球移动的问题,代码是:
Sub Form_KeyDown(keycode As Integer, shift As Integer)
Select Case keycode
    Case vbKeyUp: Shape1.Move Shape1.Left, Shape1.Top - 100
    Case vbKeyDown: Shape1.Move Shape1.Left, Shape1.Top + 100
    Case vbKeyLeft: Shape1.Move Shape1.Left - 100, Shape1.Top
    Case vbKeyRight: Shape1.Move Shape1.Left + 100, Shape1.Top
    Case vbKeyUp And vbKeyLeft: Shape1.Move Shape1.Left - 100, Shape1.Top - 100
    Case vbKeyUp And vbKeyRight: Shape1.Move Shape1.Left + 100, Shape1.Top - 100
    Case vbKeyDown And vbKeyLeft: Shape1.Move Shape1.Left - 100, Shape1.Top + 100
    Case vbKeyDown And vbKeyRight: Shape1.Move Shape1.Left + 100, Shape1.Top + 100
   End Select
End Sub
怎样才能限制小球移动的区域?
顺便还问下,这个程序控制小球斜着走必须两个方向键同时按下去才可以,怎样才能优化成不管同不同时按下两个键就可以斜着走呢?
搜索更多相关主题的帖子: 小球 
2009-11-15 09:01
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:0 
【怎样才能优化成不管同不同时按下两个键就可以斜着走呢?】
可以用小键盘。...还是辅助键盘?
【怎样才能限制小球移动的区域?】
自己搞吧!~也都是些加加减减的东西。
2009-11-15 10:08
msgj
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:190
专家分:914
注 册:2009-10-3
收藏
得分:0 
把代码改了一下,做个参考吧!小键盘控制小球斜着走,7、9、1、3
Sub Form_KeyDown(keycode As Integer, shift As Integer)
Select Case keycode
    Case vbKeyUp: Shape1.Move Shape1.Left, Shape1.Top - 100
      If Shape1.Top < 0 Then Shape1.Move Shape1.Left, Shape1.Top + 100
    Case vbKeyDown: Shape1.Move Shape1.Left, Shape1.Top + 100
      If Shape1.Top > Screen.Height Then Shape1.Move Shape1.Left, Shape1.Top - 100
    Case vbKeyLeft: Shape1.Move Shape1.Left - 100, Shape1.Top
      If Shape1.Left < 0 Then Shape1.Move Shape1.Left + 100, Shape1.Top
    Case vbKeyRight: Shape1.Move Shape1.Left + 100, Shape1.Top
      If Shape1.Left > Screen.Width Then Shape1.Move Shape1.Left - 100, Shape1.Top
   
    Case 33: Shape1.Move Shape1.Left - 100, Shape1.Top - 100
    Case 34: Shape1.Move Shape1.Left + 100, Shape1.Top + 100
    Case 35: Shape1.Move Shape1.Left - 100, Shape1.Top + 100
    Case 36: Shape1.Move Shape1.Left + 100, Shape1.Top - 100
   End Select
End Sub
2009-11-15 11:03
stzwq2815
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-11-15
收藏
得分:0 
回复 3楼 msgj
关键是我想用组合键来控制小球斜着走...我写的代码也可以做到,不过就是要求两个键在同时按下才可以
2009-11-15 18:14
stzwq2815
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-11-15
收藏
得分:0 
回复 2楼 bczgvip
我是想同时按两个方向键控制小球,方向键设成光标键,我那段代码也可以,但是必须同时按下才可以做到小球斜着走,怎样能做到不管同不同时,只要按两个相邻的光标键就可以斜着走?
2009-11-15 18:19
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:0 
还是没能明白你的意思!~
2009-11-16 07:10
stzwq2815
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-11-15
收藏
得分:0 
回复 6楼 bczgvip
就是说,我之前写的代码,想让小球斜着走,必须让它向左上方移动,就必须同时按下光标左键和光标上键,如果先按左键不放,再按下右键,小球是向左移动的而不是向左上方移动的...   怎样能做到,先按左键再按下上键,小球向左上方移动?
2009-11-16 08:45
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:15 
呵呵!~终于理解了 !~
程序代码:
Option Explicit

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Dim b(0 To &HFF) As Byte
    Debug.Print KeyCode, Shift, Hex$(GetKeyState(40)), GetKeyboardState(b(0)), CBool(b(40) And &H80)
End Sub
2009-11-16 09:22
xslslx
Rank: 2
等 级:论坛游民
帖 子:58
专家分:65
注 册:2009-11-10
收藏
得分:5 
声明一个变量,数值型和T/F型都可以,
然后按下键子时为1,松开时自动为0,然后移动的时候加个判断就可以了。
例子:
dim a,b
cmd1_keydown
a=1
cmd1_keyUP
a=0
cmd2_keydown
b=1
cmd2_keyUP
b=0
cmd_timer
if a=1 and b=1 then 执行斜线运动
代码完全没有格式,只是思路,请注意

老师的学生,学生的老师
2009-11-16 09:35
stzwq2815
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-11-15
收藏
得分:0 
回复 8楼 bczgvip
这段代码是什么意思?能不能解释下啊...谢谢啦~
我加上了好像没什么变化...
2009-11-16 10:05
快速回复:用VB做一个小球移动的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013390 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved