カテゴリー
Visual Basic

ゲーム画面でボールを動かす

デフォルトで作成されたフォーム上にボールになるコントロールを配置します。
Labelで十分です。
ツールボックスからLabelをフォームの中央付近に追加します。
名前がLabel1だとあとでわかりにくくなるので、Nameプロパティを「Ball」に変更しておきましょう。
Textプロパティは「●」にします。
AutoSizeプロパティをFalseにして、サイズを固定します。
これで画面上にボールの配置ができました。

次にボールを動かしてみます。
タイマーイベントを使いましょう。
ツールボックスのコンポーネント内にあるTimerをダブルクリックして、Timerを追加します。

フォーム画面の何もないところをダブルクリックして、Form_Loadイベントプロシージャを作成します。
Form_Load内でTimer1を有効化してタイマーイベントが発生するようにします。

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Timer1.Enabled = True
        Timer1.Interval = 5
    End Sub

次にTimer1をダブルクリックして、タイマーイベントのイベントプロシージャを作成します。

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick

    End Sub

この中でボールを動かします。
ボールの動く速度を決めないといけませんが、これはフォーム内の変数として定義します。ついでにボールのxy座標を示す変数も定義しておきます。そしてForm_Load内で初期化します。

    Dim x, y, dx, dy As Integer

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Timer1.Enabled = True
        Timer1.Interval = 5
        dx = 2
        dy = 2
    End Sub

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        x = x + dx
        y = y + dy
        Ball.Left = x
        Ball.Top = y
    End Sub

これでボールが動くようになりましたが、画面の外に消えて行ってしまいます。

壁に当たったら跳ね返るようにします。
画面左側は0でいいのですが、右側で跳ね返るようにするために、フォーム自身を表す「Me」を使用して画面の幅「Me.Width」を使ってみます。

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        If x + dx <= 0 Or x + Ball.Width + dx > Me.Width Then
            dx = -dx
        End If
        If y + dy <= 0 Or y + Ball.Height + dy > Me.Height Then
            dy = -dy
        End If
        x = x + dx
        y = y + dy
        Ball.Left = x
        Ball.Top = y
    End Sub

すると、画面の右側より少し先で跳ね返っているようです。
これは、フォーム画面に枠があり、それはフォームのサイズより小さいからです。そのサイズを保持しているのがClientSizeという変数です。
MeではなくClientSizeを使ってみましょう。

    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        If x + dx <= 0 Or x + Ball.Width + dx > ClientSize.Width Then
            dx = -dx
        End If
        If y + dy <= 0 Or y + Ball.Height + dy > ClientSize.Height Then
            dy = -dy
        End If
        x = x + dx
        y = y + dy
        Ball.Left = x
        Ball.Top = y
    End Sub

これで画面の上下左右でボールが跳ね返るようになりました。

カテゴリー
Visual Basic

プロジェクトを作成する

Visual Studioでプロジェクトを新規作成します。
プロジェクトの種類は、Visual BasicのWindowsフォームアプリケーションを選択します。
プロジェクト名は適当につけてかまいません。
ここでは、ブロック崩しの英語名である「breakout」としておきます。