/ТОРМОЗА\

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
PatriotIK
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 09.08.2004 (Пн) 12:00
Откуда: Город герой Москва

/ТОРМОЗА\

Сообщение PatriotIK » 24.10.2004 (Вс) 21:03

Делаю игруху на DirectDraw'е (Неплохо получается, когда зделаю обезательно скину!), типа Противостояние 3. Я конечно понимаю что 1000 человек на однойкарте - это совсем не мало, но все же.
Все циклы , у меня, происходят следующим образом:

Public Unt(1 to 1000) - Ето у меня переменная юнита, Если больше 1 то он существует и его мона рисовать, и 1-2 ето то как он выглядит(русский не русский)
Все остальное думаю нет смысла перечислять!
Вот...
Дальше круче...

for g=1 to 1000 - 1000 ето макс кол. юнитов
if unt(g)=1 then
рисуем
end if
next g
нарисовали
И всего етого добра в том же духе навалом (Самолеты, ракеты,взрывы там всякие)
Результат - Все круто! но тормаза офигительные!

Что делать прям не знаю. Может мой метод устарел ?!
Если кому надо могу скинуть исходник или Ехешник? заодно позырете :)

Прошу помощи... SOS mayday!!!!!!
Visual Basic остольное не важно!

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 24.10.2004 (Вс) 21:24

Создавай массив динамически !

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 24.10.2004 (Вс) 21:26

Поясняю:
Объявляй его: Unt() as нужное
А задем пользуйся Redim-ом и Ubound-ами.

PatriotIK
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 09.08.2004 (Пн) 12:00
Откуда: Город герой Москва

Сообщение PatriotIK » 24.10.2004 (Вс) 21:30

Объявляй его: Unt() as нужное - ну... ето хорошая идея попробуем

Redim
Ubound
Объясника поподробнее че ето за штуки такие?(я лол)
Visual Basic остольное не важно!

ZipFeR
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 18.10.2004 (Пн) 23:14

Сообщение ZipFeR » 24.10.2004 (Вс) 22:46

Скинь мне respaunt@mail.ru гляну

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 25.10.2004 (Пн) 10:37

Пример динамического массива:

Dim A() As Long 'Сам динамич. массив

ReDim A(1 To 2) 'Теперь это массив A(1 To 2)

A(1)=1
A(2)=2

ReDim A(1 To 3) 'Теперь это массив A(1 To 3), но все значения в массиве стёрлись

ReDim Preserve A(1 To 3) 'Теперь это массив A(1 To 3), но все значения в массиве сохранились

LBound(A), UBound(A) - границы массива...

Попробуй, сам поймешь...

PatriotIK
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 09.08.2004 (Пн) 12:00
Откуда: Город герой Москва

Сообщение PatriotIK » 25.10.2004 (Пн) 15:40

Спасибо конечно. Вот токо я вопряки всем ожиданиям Ничего не понял.
Как етим добром пользоваться то?
Я привык делать так допустим:
Module1
public G - ето ни чего не значит
public Unt(1 to 1000)
******************

private form1_load ()

Do While DoEvents
Dessine
Loop
end sub

private sub Dessine ()
for G= 1 to 1000
unt(G)=1
next G

for G= 1 to 1000
if unt(G)=1 then рисуем
next G

end sub

Примерно так.
Как мне тоже самое зделать чтобы не тормозило? потому что так тормозит.
Visual Basic остольное не важно!

PatriotIK
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 09.08.2004 (Пн) 12:00
Откуда: Город герой Москва

Сообщение PatriotIK » 25.10.2004 (Пн) 16:42

Да хоть ссылку кинте где я мог бы поподробнее про ето почтиать !
Плииииииз
И еще кидаю то что получилось (правда здесь максимум 100 человек но всеравно ЛАГИ)
D добавить на карту своих!
R немцев
S Бомбардировка немцев :twisted:
1 - убить выделенного чела
В башни мона залаить
Управление нулевое, юниты стреляют когда стоят и только.
И жду откликов (типа стоит этим воще заниматься или лучше зделать что то вроде CS или Half-life 2)
Вложения
Podmoga.rar
(38.12 Кб) Скачиваний: 39
Visual Basic остольное не важно!

pitbull
Постоялец
Постоялец
 
Сообщения: 314
Зарегистрирован: 25.06.2004 (Пт) 15:37
Откуда: Кемерово

Сообщение pitbull » 25.10.2004 (Пн) 18:58

Лучше Windows напиши или Unix, только чур на VB :D

PatriotIK
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 09.08.2004 (Пн) 12:00
Откуда: Город герой Москва

Сообщение PatriotIK » 25.10.2004 (Пн) 19:37

Не... Мне ето не интересно. Я токо по части игр прогаю. :D
Visual Basic остольное не важно!

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2056
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 25.10.2004 (Пн) 21:05

2 PatriotIK

Отец, тут тебе по ходу предлагают массив увеличивать по ходу проги

Т.е
Dim UNT() as long
Dim N as long

Private Sub Form_Click()
N=N+1
Redim Preserve UNT(N)
UNT(N)=1
End Sub

Sub TIMERLOOP()
For N=1 to ubound(UNT)
if UNT(N)=1 then
'Рисуем
End if
Next
End Sub


Могу ошибиться с синтаксисом кода, т.к пишу в блокноте. VB ещё не успел поставить.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 25.10.2004 (Пн) 21:05

С динамическими массивами:

Код: Выделить всё
Module1
public G - ето ни чего не значит
public Unit_count as long
public Unt() As Byte
******************

private form1_load ()
unit_count=100

redim unt(unit_count)
Do While DoEvents
Dessine
Loop
end sub

private sub Dessine ()
for G= 1 to unit_count
unt(G)=1
next G

for G= 1 to unit_count
if unt(G)=1 then рисуем
next G

end sub


Замечу, что unt надо объявлять как Byte, Integer или Long (в данном случае - Byte)...
Последний раз редактировалось Amed 25.10.2004 (Пн) 21:07, всего редактировалось 1 раз.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.10.2004 (Пн) 21:06

Если ты юзаешь класс sprite, то большой тебе привет, ибо это суть главный тормоз. Где-то в разделе DirectX был примерчик быстрых спрайтов...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

PatriotIK
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 09.08.2004 (Пн) 12:00
Откуда: Город герой Москва

Сообщение PatriotIK » 25.10.2004 (Пн) 21:58

Интересно, а с помощью етой штуки 1000 юнитов,которые одновременно ищут врага, стреляют по нему или просто гуляют, лагать не будут?! Мне чето не верится, а жаль.
Может быть тормозит действительно из-за прорисовки DirectXсовских спрайтов? Хотя точно таким же способом я делал и на Dark Basic'е и даже на Sprite Crafte. Последний хоть и меньше но всеравно тормозил.
Проверим. . . . . .
Visual Basic остольное не важно!

ZipFeR
Обычный пользователь
Обычный пользователь
 
Сообщения: 55
Зарегистрирован: 18.10.2004 (Пн) 23:14

Сообщение ZipFeR » 25.10.2004 (Пн) 22:26

Знаешь че ? Привет ! Прикинь, но как не странно у меня не капли не тормозит и игра довольно простенькая и смысла в ней не вижу, я имею ввиду так то может сложно писать, но она без смысла :roll:

ИМХО

PatriotIK
Обычный пользователь
Обычный пользователь
 
Сообщения: 65
Зарегистрирован: 09.08.2004 (Пн) 12:00
Откуда: Город герой Москва

Сообщение PatriotIK » 26.10.2004 (Вт) 19:26

Ну прям опустил... :oops:
Ето же не игра еще! ПОКА, я токо кинул посмотреть что происходит, а воще ща минометчиков доделываю там снайперы и т.д. пойдут.
Смысл придумаю, может и кампанию забацаю. Вот тока юнитов поболе нарисую и тогда... ну ето не скоро, пока токо сырьем пахнет...
А воще посмотрим что получится.
Visual Basic остольное не важно!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10

    TopList