[VB.NET]反弹球

反弹球

实例说明

在本实例中,我们制作一个反弹球的应用程序,当球到达边缘后,则自动弹回。程序运行结果如图85-1所示。

图85-1 运行结果

技术要点

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

l Timer控件

l 改变图形位置

l 判断是否到达边界

实现过程

■ 新建项目

打开Visual Studio.NET,选择"新建项目",在项目类型窗口中选择"Visual Basic项目",在模板窗口中,选择"Windows应用程序",在名称域中输入"RebouncePic",然后选择保存路径。单击"确认"。

■ 添加控件

向窗体上添加一个Timer控件、一个Button控件和一个Picture控件。

■ 设置属性

对窗体和窗体上的控件设置属性,如表85-1所示。

表85-1 窗体/属性的属性值

窗体/控件 属性 值

Form1 Text 反弹球

Timer1 Interval 1

Picture1 Name PicBall

Image C:/windwos/ball.bmp

Button Text 开始演示

■ 添加代码

Dim Motion As Short

Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click

If Command1.Text = "开始演示" Then

Command1.Text = "停止演示"

Timer1.Enabled = True

Else

Command1.Text = "开始演示"

Timer1.Enabled = False

End If

End Sub

Private Sub CtlMoveDemo()

Select Case Motion

Case 1

picBall.SetBounds(picBall.Left - 2, picBall.Top - 2, 0, 0, Windows.Forms.BoundsSpecified.X Or Windows.Forms.BoundsSpecified.Y)

' 如果图形到达左边界,则向右移动

If VB6.PixelsToTwipsX(picBall.Left) <= 0 Then

Motion = 2

'如果图形到达上边界,则向下移动

ElseIf VB6.PixelsToTwipsY(picBall.Top) <= 0 Then

Motion = 4

End If

Case 2

picBall.SetBounds(picBall.Left + 2, picBall.Top - 2, 0, 0, Windows.Forms.BoundsSpecified.X Or Windows.Forms.BoundsSpecified.Y)

'如果图形到达右边界,则向左移动

If picBall.Left >= (Form1.DefInstance.Width - picBall.Width) Then

Motion = 1

'如果图形到达上边界,则向下移动

ElseIf picBall.Top <= 0 Then

Motion = 3

End If

Case 3

picBall.SetBounds(picBall.Left + 2, picBall.Top + 2, 0, 0, Windows.Forms.BoundsSpecified.X Or Windows.Forms.BoundsSpecified.Y)

If picBall.Left >= (Form1.DefInstance.Width - picBall.Width) Then

Motion = 4

ElseIf picBall.Top >= (Form1.DefInstance.Height - picBall.Height) - 20 Then

Motion = 2

End If

Case 4

picBall.SetBounds(picBall.Left - 2, picBall.Top + 2, 0, 0, Windows.Forms.BoundsSpecified.X Or Windows.Forms.BoundsSpecified.Y)

If picBall.Left <= 0 Then

Motion = 3

ElseIf picBall.Top >= (Form1.DefInstance.Height - picBall.Height) - 20 Then

Motion = 1

End If

End Select

End Sub

Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load

Timer1.Enabled = False

Motion = 1

End Sub

Private Sub Timer1_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer1.Tick

CtlMoveDemo()

End Sub

■ 运行程序

单击菜单"调试|启动" 或单击图标运行程序。

小结

本实例通过使用Timer控件来不断更改Picture控件的位置,当到达边界后,立刻变换方向。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值