Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Помогите нубу!! Добавлено: 05.10.10 17:36  

Автор вопроса:  KeeperVX
Я вчера немного напортачил...Вы уж простите...Выкинул мессагу с совершенно неадекватным текстом...Но дело в другом. Я игру хочу написать. И вот такой метод вывода графики мне удалось придумать:


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 клеток. Это ужасно...Подскажите как быть и что делать. Вся надежда на ваше понимание, а то придётся делать аски графику...

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 KeeperVX



Вопросов: 2
Ответов: 2
 Профиль | | #1 Добавлено: 05.10.10 17:57
Да, если вдруг. Вопрос в том как иначе лучше вывести нормальную картинку на экран. Я так понимаю, что надо каким то образом
разделить PictureBox на зоны и в них уже помещать нужные картинки. Или есть другой метод? В любом случае я не знаю как это сделать. Подскажите пожалуйста.

Ответить

Номер ответа: 2
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 05.10.10 19:04
DirectX может?

Ответить

Номер ответа: 3
Автор ответа:
 KeeperVX



Вопросов: 2
Ответов: 2
 Профиль | | #3 Добавлено: 05.10.10 19:10
Не представляю как им пользоваться...Но если иного выхода нет...А где можно посмотреть примеры 2д движков?

Ответить

Номер ответа: 4
Автор ответа:
 inxs



Вопросов: 2
Ответов: 3
 Профиль | | #4 Добавлено: 05.10.10 23:44
А где можно посмотреть примеры 2д движков?
В молодости тоже этим увлекался, но работа взяла своё. Вот то, что осталось. Там и то, что натягал с сети и мои попытки. Кстати, имеет смысл пользоваться готовыми движками, например, DXGameE или тому подобными...
http://inxs-s.narod.ru/VB6Game.zip
http://inxs-s.narod.ru/VB6Game.z01
http://inxs-s.narod.ru/VB6Game.z02

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам