Как мне вызвать графический блок, имя которого изменилось во время выполнения? - PullRequest
0 голосов
/ 06 июня 2019

Я создаю шутер в стиле космических захватчиков, в котором пришельцы генерируются во время выполнения и размещаются в случайных местах.Я пытаюсь заставить столкновение между игроками лазеров игроков и инопланетян работать, но проблема в том, что у меня нет способа определить, какой инопланетянин получил удар.

Инопланетяне объявляются в таком цикле:

spawncount = 20
Do Until spawncount = 0
            spawncount = spawncount - 1
            spawnID = spawnID + 1 //This is initialized as zero in separate code
            alien = New PictureBox

            With alien
                .Name = "Alien" & Str(spawnID)
                //location, image, etc.

                Next
            End With

            Controls.Add(alien)
Loop

И в таймере у меня есть этот код, который проверяет, сталкивался ли какой-либо из лазеров игроков (со свойством .tag "L1") с инопланетянином:

Dim number As Integer = 0

        For Each picturebox In Controls
            If picturebox.tag = "L1" Then
                Do Until spawnID = (19 + level)
                    spawnID = spawnID + 1
                    If picturebox.bounds.intersectswith((alien & number).Bounds) Then
                        //Code to be executed when a collision occurs
                        Exit For
                    End If
                Loop
            End If
        Next

Я получаю сообщение об ошибке If picturebox.bounds.intersectswith((alien & number).Bounds).Там написано, что «Оператор» & «не определен для типов« Picturebox »и« Целое число »»

Есть ли обходной путь или даже альтернатива этому?Или у меня просто нет правильного формата в операторе If?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...