Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Цикл Добавлено: 22.04.05 21:35  

Автор вопроса:  Skywalker | Web-сайт: iSkywalker.ru | ICQ: 300-70-6пятьЪ 
Я нашел код загрузки карты (текстовик с цифирками, например цифра 0 - трава) и рисования тайлов по загруженным координатам. Попытался подделать под себя. В результате возникает ошибка. В чем дело?


Option Explicit
Dim ddsTrava As DirectDrawSurface7
Dim map(23, 31) As Byte
Dim xl, yl As Integer
Private Type imagex
    x As Integer
    y As Integer
    c As Byte
End Type
Dim im(767) As imagex
Dim chx, chy As Byte
 Dim x, y, x1, y1, temp As Integer
    Dim c As Byte
    Dim file1, ds As String
    Dim i, i1, c2, j As Integer
Private Sub Form_Load()
loadmap
mdlDirectDraw7.CreateDDFullscreen Me.hWnd, 1024, 768, 32
Set ddsTrava = mdlDirectDraw7.CreateDDSFromFile(App.Path & "\trava.bmp")
Running = True
Call Main_Loop
End Sub
Sub Main_Loop()
    Do
        DoEvents
mdlDirectDraw7.ClearBuffer ddsBack
bltmasiv
ddsPrimary.Flip Nothing, DDFLIP_WAIT
Loop Until Running = False
Unload Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set ddsTrava = Nothing
mdlDirectDraw7.DestroyDD
End Sub
Sub Trava()
rc.Bottom = 32
rc.Left = 0
rc.Right = 32
rc.Top = 0
Call ddsBack.BltFast(32 * x, 32 * y, ddsTrava, rc, DDBLTFAST_WAIT Or DDBLTFAST_SRCCOLORKEY)
End Sub
Sub bltmasiv()
c = 0
For x1 = 0 To 31
For y1 = 0 To 23
    im(с).c = map(y1, x1)
    c = c + 1 'Здесь возникает ошибка Overflow
Next y1
Next x1
For i = 0 To 767
        Select Case im(i).c
            Case 0: Trava
        End Select
Next i
 End Sub
Sub loadmap()
c2 = 0
For i = 0 To 1024 Step 32:
        im(c2).x = i
        c2 = c2 + 1
         Next i
    For j = 0 To 768 Step 32:
    im(c2).y = j
    Next j
file1 = FreeFile
     Open App.Path & "\map1.map" For Input As #file1
     i = 0
     c2 = 0
     Do While Not EOF(file1)
       Input #file1, ds
       For i1 = 1 To Len(ds)
         map(i, c2) = Val(Mid(ds, i1, 1))
         c2 = c2 + 1
       Next i1
       c2 = 0
       i = i + 1
     Loop
     Close #file1
End Sub
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyEscape
Running = False
End Select
End Sub

Ответить

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

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #1
Добавлено: 22.04.05 21:43
For x1 = 0 To 31
For y1 = 0 To 23
    im(с).c = map(y1, x1)
    c = c + 1 'Здесь возникает ошибка Overflow
Next y1
Next x1

Ок может из за того что два вложеных цикла а с=с+1 то 0<=с<=31*23 так вроде?

а так как
Dim c As Byte


с не может принимать значения >255 а 31*23=713. Может переобъявить переменный как integer?

Ответить

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



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #2
Добавлено: 23.04.05 11:35
Ок теперь ошибки нет. Я просто не знал что Byte до 255. Теперь у меня другая проблема рисуется только один квадрат с травой а не 768 как должно))

Ответить

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



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #3
Добавлено: 23.04.05 21:46
2 yxaxa:

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

Ну а всё таки если пишешь игруху, то применение директикса не помешает. Я правда с его помощью умею только звук выводить в формате Wav и разрешение менять.

ВОПРОС ВСЕМ! Очень прошу! есть инфа для начинающих чтобы вот хотя бы понять самое элементарное в DirectDraw??? до сих пор не могу ничего стОящего сам снуля написать (мне надо бы инфу об использовании поверхностей, задних там передних буферов). Да, мне не в лом пользоваться поиском, просто ничего найти не могу, всё лажа попадается. щас прямо начну искать. и если найду будет конечно superb:))))))))
Если у кого есь инфа или ссылка!!! Дайте плиииз!

Ответить

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



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #4
Добавлено: 23.04.05 22:20
Вот ну очень замечательная страница http://nordisk.pp.ru/wrote/archive/lavision/ где самая верхняя ссылка - ну очень замечательный учебник по directdraw. Я как его прочитал, так и загорелся игруху сделать.

Ну а тем кто разберется в приведенном мной коде скажите плиз где же там ошибка. Или просто дайте ваш пример кода. Нужно чтобы грузилась карта из файла (карта в виде
000000000111
101010100101
где допустим 0 - трава, 1 - дерево.)
Ну и потом при разрешении экрана 1024*768 тайлы располагались каждый на своем месте)))

Ответить

Номер ответа: 5
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #5
Добавлено: 23.04.05 23:00
Блин!
Не могу найти этот файл чёртов Win32TBL (Win32 Type library....)!!!
Написано скачать с его сайта :(
Ни как не могу разобраться, сайт походу толи хакеры атаковали толи взорвали блииин :) немного дизайн странноват.никто не может кинуть фалй у кого есть? Статейка то известная

Ответить

Номер ответа: 6
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #6
Добавлено: 24.04.05 10:21
Щас дам ссылку. А сайт действительно закрыли. А это похоже то, что было на нем раньше.

http://anti-loop.chat.ru/att/win32.zip

Ответить

Номер ответа: 7
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #7 Добавлено: 24.04.05 14:55
Кому надо игры двухмерные писать, предЛАГУЮ скачать StarWars(by me:)) из Примеров...

Ответить

Номер ответа: 8
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #8 Добавлено: 24.04.05 14:56
Кому надо игры двухмерные писать, предЛАГАЮ скачать StarWars(by me:)) из Примеров...

Ответить

Номер ответа: 9
Автор ответа:
 Morpheus



Вопросов: 224
Ответов: 3777
 Web-сайт: xury.zx6.ru
 Профиль | | #9
Добавлено: 24.04.05 17:38
2Noviks
Вот это здравая игрушка!
Очень классно сделаны выстрелы, причём все и ракеты и лезеры и взрывы и осколочки так смачно разлетаются :)
Немного попарился вначале с управлением.
Слухай, а вот он когда загружается, он чё делает? Похоже кораблики на все углы вертит? ладно, щас буду изучать.
А так, можно ещё звёздды сделать не такими цветными и задать движение :) кто нить помнит мою игру Free Fire ? там юзаются ещё очень примитивные технологии типа движущихся PictureBox но по скороси не заметно кажись.
А так, если нарисовать такие офигительные кораблики, там музон пострашнее влепить, то игра привратится из супер игрушки в гениальное творение рук и ума человечества :)
Так держать!

Ответить

Страница: 1 |

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



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