Я вчера немного напортачил...Вы уж простите...Выкинул мессагу с совершенно неадекватным текстом...Но дело в другом. Я игру хочу написать. И вот такой метод вывода графики мне удалось придумать:
Public Class Form1
'карта, 10 на 10 клеток
Dim Map(10, 10) As Integer
'положение игрока по вертикале
Dim ver As Integer
'положение игрока по горизонтале
Dim gor As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'создание стен по границам карты
For verg = 1 To 10
Map(verg, 1) = 1
Next (verg)
For gorg = 1 To 10
Map(1, gorg) = 1
Next (gorg)
For verg = 1 To 10
Map(verg, 10) = 1
Next (verg)
For gorg = 1 To 10
Map(10, gorg) = 1
Next (gorg)
'положение игрока
ver = 5
gor = 5
'вызов обновления карты
RefMap()
End Sub
Private Sub RefMap()
'на экран выводятся координаты игрока на карте
Label2.Text = ver
Label4.Text = gor
'здесь если по координатам вокруг игрока есть стена, то её нужно нарисовать
If Map(ver - 1, gor - 1) = 1 Then
MapBox1.ImageLocation = "c:\brick.jpg"
End If
If Map(ver + 1, gor + 1) = 1 Then
MapBox9.ImageLocation = "c:\brick.jpg"
End If
If Map(ver + 1, gor - 1) = 1 Then
MapBox7.ImageLocation = "c:\brick.jpg"
End If
If Map(ver - 1, gor + 1) = 1 Then
MapBox3.ImageLocation = "c:\brick.jpg"
End If
If Map(ver - 1, gor) = 1 Then
MapBox2.ImageLocation = "c:\brick.jpg"
End If
If Map(ver + 1, gor) = 1 Then
MapBox8.ImageLocation = "c:\brick.jpg"
End If
If Map(ver, gor - 1) = 1 Then
MapBox4.ImageLocation = "c:\brick.jpg"
End If
If Map(ver, gor + 1) = 1 Then
MapBox6.ImageLocation = "c:\brick.jpg"
End If
'здесь если по координатам вокруг игрока нет стены, то отобразится дорога
If Map(ver - 1, gor - 1) = 0 Then
MapBox1.ImageLocation = "c:\road.jpg"
End If
If Map(ver + 1, gor + 1) = 0 Then
MapBox9.ImageLocation = "c:\road.jpg"
End If
If Map(ver + 1, gor - 1) = 0 Then
MapBox7.ImageLocation = "c:\road.jpg"
End If
If Map(ver - 1, gor + 1) = 0 Then
MapBox3.ImageLocation = "c:\road.jpg"
End If
If Map(ver - 1, gor) = 0 Then
MapBox2.ImageLocation = "c:\road.jpg"
End If
If Map(ver + 1, gor) = 0 Then
MapBox8.ImageLocation = "c:\road.jpg"
End If
If Map(ver, gor - 1) = 0 Then
MapBox4.ImageLocation = "c:\road.jpg"
End If
If Map(ver, gor + 1) = 0 Then
MapBox6.ImageLocation = "c:\road.jpg"
End If
MapBox5.ImageLocation = "c:\avatar.jpg"
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'игрок идёт вверх, затем вызов обновления карты
If ver + 1 <> 10 Then ver = ver + 1
RefMap()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'игрок идёт вниз, затем вызов обновления карты
If ver - 1 <> 1 Then ver = ver - 1
RefMap()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'игрок идёт влево, затем вызов обновления карты
If gor - 1 <> 1 Then gor = gor - 1
RefMap()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'игрок идёт вправо, затем вызов обновления карты
If gor + 1 <> 10 Then gor = gor + 1
RefMap()
End Sub
End Class
я понимаю, что это сплошная лажа, но альтернативы незнаю, а с моими нубскими в директХ, а тем более в опенГЛ мне лезть нельзя, да и ради написания простой игрушки даже не хочется.
Из приведенного выше листинга программы вы можете представить какой код получится, если я увеличу видимую область карты до 10 на 10 клеток. Это ужасно...Подскажите как быть и что делать. Вся надежда на ваше понимание, а то придётся делать аски графику...
Ответить
|