1

Visual Basic 2010でボールの跳ね返りアプリケーションをコーディングしようとしています。2つのクラスがあります。1つはボールオブジェクトの作成とボールの移動で、もう1つはボールの位置と速度を含むボールクラスです。

私のメインクラス:

Public Class Bouncer 'start of main class

    Private ball As BouncyBall 'private ball object field

    'form load event handler
    Private Sub CST8333_Lab3_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        ball = New BouncyBall(Me) 'call ball constructor
    End Sub 'end form load event handler

    'timer event handler to control ball movement
    Private Sub Timer_Tick(sender As System.Object, e As System.EventArgs) Handles Timer.Tick
        ball.MoveBall() 'move the ball object
    End Sub 'end timer event handler
End Class 'end main class

私のボールクラス:

Class BouncyBall 'start of ball class

    'private field variables
    Private ballX As Integer
    Private ballY As Integer
    Private ballMovementX As Integer
    Private ballMovementY As Integer
    Private location As Point
    Private _bouncer As Bouncer

    'ball object constructor
    Sub New(bouncer As Bouncer)
        'instantiate variables
        _bouncer = bouncer
        ballX = 50
        ballY = 50
        ballMovementX = 5
        ballMovementY = 5
        location = New Point(ballX, ballY)
    End Sub 'end ball object constructor

    'subroutine to move ball
    Public Sub MoveBall()
        If (ballX >= _bouncer.Width) Then 'check if ball hits right side
            ballMovementX = -ballMovementX
        ElseIf (ballX <= 0) Then 'check if ball hits left side
            ballMovementX = -ballMovementX
        End If
        If (ballY >= _bouncer.Height) Then 'check if ball hits bottom
            ballMovementY = -ballMovementY
        ElseIf (ballY <= 0) Then 'check if ball hits top
            ballMovementY = -ballMovementY
        End If
        'move ball
        ballX += ballMovementX
        ballY += ballMovementY
        Me.location = New Point(ballX, ballY)
    End Sub 'end subroutine to move ball
End Class 'end ball class

ボールオブジェクトは、フォーム内を移動するラベルで構成されます。ボールオブジェクトはBouncyBallと呼ばれ、MoveBall()サブルーチンのルールで、フォームの周りでボールをガイドする必要があります。しかし、私のボールはまったく動きません。私のタイマーは有効になっていて、50ミリ秒の間隔があるので、それは私の問題ではありません。私の問題は、MoveBall()ルールが、ラベルのプロパティを実際に更新しない変数を使用していることだと思います。

変数を使用してBouncyBallボールの位置を更新する方法を見つけた後も、ボールはまだ動いていません。ルールを含むBouncyBallクラスを、フォーム上の実際のラベル(BouncyBallとも呼ばれます)にリンクする必要があると思います。

誰かが私のボールを動かすのを手伝ってくれますか?アイデアが足りなくなり始めています。ありがとう!

4

0 に答える 0