回 帖 发 新 帖 刷新版面

主题:老师布置的作业

我们是职业学校的,学的是软件,老师布置了个作业, 题目是, 一个图片中有球, 先向左移动后撞到墙然后掉落,在上升,无意发现这个网站,希望大家能帮一下我[em8]

回复列表 (共5个回复)

沙发

定义2个全局变量,一个是球每次水平移动的距离,一个是球每次垂直移动的距离。
窗体上添加一个计时器,在Timer1_Timer事件中编写代码,只要5句代码来说明球的4个方向移动以及碰到“墙壁”的处理。
球可用shape控件。

板凳

不不不,
给定初速度两个方向的分量和初始位置,每过单位时间,使用抛物线公式计算新位置和新速度分量。
至于碰墙只是水平速度分量换个方向而已。
至于落地反弹,只是垂直速度分量换个方向而已。

但要进一步做好,就要使用“空气阻力公式”衰减速度。

3 楼


谢谢了,有点启发!

4 楼

2楼搞得太复杂了,干嘛还要抛物线公式和空气阻力公式?难道是军事科技大学布置的航天模拟作业?

我的就很简单实用
窗体上添加一个计时器和一个shape控件,把shape控件改名为ball并设置为圆,宽、高均为375,代码如下:
Option Explicit

Dim x As Integer
Dim y As Integer

Private Sub Form_Click()
Timer1.Enabled = Not Timer1.Enabled
End Sub

Private Sub Form_Load()
x = 100 '每个时间周期内小球在X轴的移动距离
y = 100 '每个时间周期内小球在Y轴的移动距离
Timer1.Interval = 100
End Sub

Private Sub Form_Resize()
If ball.Top <= 0 Then ball.Top = -25: y = -y
If ball.Top >= (Form1.Height - 420) Then ball.Top = (Form1.Height - 445) - ball.Height: y = -y
If ball.Left <= 0 Then ball.Left = -25: x = -x
If ball.Left >= (Form1.Width - 100) Then ball.Left = (Form1.Width - 125) - ball.Width: x = -x
End Sub

Private Sub Timer1_Timer()
ball.Move ball.Left + x, ball.Top + y
If ball.Top <= 0 Then y = -y                  '小球顶部碰到窗体上边界
If ball.Top >= Form1.Height - 800 Then y = -y '小球底部碰到窗体下边界
If ball.Left <= 0 Then x = -x                 '小球左部碰到窗体左边界
If ball.Left >= Form1.Width - 500 Then x = -x '小球右部碰到窗体右边界
End Sub

单击窗体停止小球运行。

5 楼

问题都没说清楚,到底是抛物线(立体),还是碰撞(平面)的

我来回复

您尚未登录,请登录后再回复。点此登录或注册