[VB.NET]反弹球

前端之家收集整理的这篇文章主要介绍了[VB.NET]反弹球前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
反弹球

实例说明

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

图85-1 运行结果

技术要点

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,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,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,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,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控件的位置,当到达边界后,立刻变换方向。

原文链接:https://www.f2er.com/vb/264279.html

猜你在找的VB相关文章