Очередной Арканоид

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

Модератор: BV

Metallikus
Новичок
Новичок
Аватара пользователя
 
Сообщения: 45
Зарегистрирован: 18.01.2009 (Вс) 1:32

Очередной Арканоид

Сообщение Metallikus » 19.02.2009 (Чт) 2:13

Ну чё я сделаю, если мне арканоиды делать нравится? Делал я их и на VB6, и на QBasic, даже на VBA пытался сделать, но таймер не нашёл... Теперь вот до VB-.Net очередь дошла. Пока сделал, не побоюсь этого слова, движок (не важно, что он софтверный, 2d-шный, и звук воспроизводить не умеет), прописал все менюшки, картинок наделал в фотошопе (хотел наделать в 3ds MAX-e, но он у меня слетел, а как переустановил - слетела лицензия с него), и редактор уровней. Последний предлагаю вашему вниманию (правда он тормозит, если с его помощью попытаться открыть уже существующий уровень, но это пока не критично). Слева от области рисования расположены кирпичи (по какому кликнешь, такие и будут рисоваться; чем синевее цвет, тем меньше у кирпича здоровья), снизу - бонусы, которые будут выпадать. При создании уровней надо учитавать, что у меня будет режим двух игроков, который будет представлять собой помесь пин-понга с арканоидом (короче, желательно делать уровень симметричным по оси абсцисс относительно его геометрического центра).

А, чуть не забыл, что не все бонусы понятно нарисовать получилось, так что перечислю что какой бонус даёт (слева-направо):
-Увеличивается ширина ракетки
-Уменьшается на же самая
-Мячик становится обычным
-Мячик при соприкосновении с кирпичём разрушает ещё и все кирпичи рядом с тем, с которым он соприкоснулся
-Мячик Отражается только от стен, при прохождении сквозь кирпичи они разрушаются
-Можно стрелять пулямиэ
-Тоже самое ракетами
-Увеличивается скорость мяча и ракетки
-Уменьшается то же самое

Вот. Качаем, зацениваем, а кому делать нечего, рисуем пару-тройку уровней и выкладываем сюда :)
Release.rar
У вас нет доступа для просмотра вложений в этом сообщении.
Много здесь таких как я, кто в инете через GPRS?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Очередной Арканоид

Сообщение MIT » 19.02.2009 (Чт) 10:44

1) Прикольно :cyclops:
2) Если загрузить один уровень, а затем вновь нажать на кнопку загрузки, то в диалоге путь к файлу сбивается
3) Нелогично, имхо, сделана установка бонусов на элементы. Было бы лучше так: расставляем элементы, затем "берем" какой-то бонус и тыкая им на элементы присваиваем его (а не так как щас - вместе с бонусами меняется и сам элемент)
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Очередной Арканоид

Сообщение Debugger » 19.02.2009 (Чт) 18:06

А где сам арканоид-то?

Metallikus
Новичок
Новичок
Аватара пользователя
 
Сообщения: 45
Зарегистрирован: 18.01.2009 (Вс) 1:32

Re: Очередной Арканоид

Сообщение Metallikus » 20.02.2009 (Пт) 0:20

MIT писал(а):2) Если загрузить один уровень, а затем вновь нажать на кнопку загрузки, то в диалоге путь к файлу сбивается
3) Нелогично, имхо, сделана установка бонусов на элементы. Было бы лучше так: расставляем элементы, затем "берем" какой-то бонус и тыкая им на элементы присваиваем его (а не так как щас - вместе с бонусами меняется и сам элемент)

2)А у меня чёта не сбивается... Может я переделал его сегодня уже?.. Када успел...
3)Ну не знаю... Подумать надо, мож переделаю...

Debugger писал(а):А где сам арканоид-то?

В разработке. :D .
И туговато разрабатывается, надо сказать (ибо фотошопом я владею не слишком сильно, да ещё с воспроизведением звука проблема возникла (http://bbs.vbstreets.ru/viewtopic.php?f=2&t=38787)...)

Вот апдейт редактора (теперь рисовать можно ещё и с резиновой рамкой, а также включать автосимметрию):
Editor.rar


А вот его код:
Ishodnik.rar
У вас нет доступа для просмотра вложений в этом сообщении.
Много здесь таких как я, кто в инете через GPRS?

DODge
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 126
Зарегистрирован: 30.07.2006 (Вс) 0:25
Откуда: Нижний Новгород

Re: Очередной Арканоид

Сообщение DODge » 20.02.2009 (Пт) 1:41

Metallikus
Насчёт предупреждений, о которых ты указал в своём коде:
Там, где ты объявил переменные bmp и bmp2, допиши как объявленные по умолчанию, т.е. =Nothing.
CPU = Intel Core i5 6500 @ 3.2 GHz
VGA = GeForce GTX 650Ti 2Gb
RAM = 8 ГБ DDR4 @ 2133 MHz
OS = Windows 10 Pro 64-bit
IDE = Microsoft Visual Studio Community 2017 (Visual Basic.NET)
GAPI = SharpDX 9 + 12

Metallikus
Новичок
Новичок
Аватара пользователя
 
Сообщения: 45
Зарегистрирован: 18.01.2009 (Вс) 1:32

Re: Очередной Арканоид

Сообщение Metallikus » 23.02.2009 (Пн) 0:42

Ужас! Как же тормозит эта гди+ (DrawImage) по сравнению с GDI (StretchBlt)!!! Весь день сегодня ковырялся в коде, а FPS выше 5 - 10 не подымается!!! Чё делать? Может поможет кто, вот я тут исходник арканоида недоделанный выложил, там в модуле GDIplusAnimator я прокомментировал тот класс, которым кирпичи рисоваться будут (238 штук всего-то, а тормозит...) и в коде таймера тоже комментарий оставил (чё-то типа "Тормозит здесь"), да и вообще, код у меня большей частью прокомментирован, так что помгите ктонить, как мне эту через ж написанную х<censored>ень хоть чуточку быстрее работать заставить?:
АркаNet.rar


Вот мой недоделанный арканоид на VB 6 (StretchBlt, Form1.Autoredraw = true, остальное в принципе точно также прописано, как и в :roll:) Почему тут у меня фпс много, а там мало? GDI+ она же должна быстрее работать?:
Недоделка.rar
(Да ещё тут и экземпляров того класса, что я для анимации использовал, больше...)
У вас нет доступа для просмотра вложений в этом сообщении.
Много здесь таких как я, кто в инете через GPRS?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Очередной Арканоид

Сообщение MIT » 23.02.2009 (Пн) 1:44

Дааа... Тормозит знатно :cyclops:
Первое, что прям сразу стало раздражать - фулскрин (который нельзя выключить) - у меня на него ацкая аллергия.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Metallikus
Новичок
Новичок
Аватара пользователя
 
Сообщения: 45
Зарегистрирован: 18.01.2009 (Вс) 1:32

Re: Очередной Арканоид

Сообщение Metallikus » 23.02.2009 (Пн) 2:22

Да фуллскрин по идее будет выключаться (если я игру доделывать буду (если от тормозов как-то избавиться получится (ещё одни скобки))) - у меня же там двойная буферизация 8) , так что работать будет при любых размерах. Вот только тормоз... По-моему они встроены в GDI++ :( ...
Много здесь таких как я, кто в инете через GPRS?

VBTerminator
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 415
Зарегистрирован: 19.11.2008 (Ср) 20:10

Re: Очередной Арканоид

Сообщение VBTerminator » 23.02.2009 (Пн) 14:31

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

Metallikus
Новичок
Новичок
Аватара пользователя
 
Сообщения: 45
Зарегистрирован: 18.01.2009 (Вс) 1:32

Re: Очередной Арканоид

Сообщение Metallikus » 23.02.2009 (Пн) 17:12

Выяснил, что тормозит PictureBox1.Image = rootbufer в таймере... В принципе, можно в форм_лоаде написать PictureBox1.BackgroundImage = rootbufer, а в таймере PictureBox1.Refresh(), но всё-равно тормозит... А можно ли как-нибудь PictureBox1.Refresh() не для всего PictureBox1, а только для его части (вроде, в VB6 при Form1.redraw() так и было, и там у меня тормозов поэтому не было)?
Много здесь таких как я, кто в инете через GPRS?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Очередной Арканоид

Сообщение Mikle » 24.02.2009 (Вт) 16:14

если от тормозов как-то избавиться получится

Если не хочешь заморачиваться с DirectX или XNA - есть выриант по-проще:
viewtopic.php?f=28&t=32517
Только там в коде примеров есть некритическая ошибка (создаются-удаляются лишние объекты), но в самом модуле движка ошибок не найдено :)

Metallikus
Новичок
Новичок
Аватара пользователя
 
Сообщения: 45
Зарегистрирован: 18.01.2009 (Вс) 1:32

Re: Очередной Арканоид

Сообщение Metallikus » 26.02.2009 (Чт) 0:54

Mikle писал(а):Если не хочешь заморачиваться с DirectX или XNA - есть выриант по-проще:
viewtopic.php?f=28&t=32517

Прикольно конечнго, но мне охота чёнить своё сделать, пусть и хуже будет. А вообще, я уже с DX почти разобрался (в смысле, почти могу арканоид под DX (в смысле, под Managed DX) переделать :)

И всё равно я не понимаю, почему в VB.net тормозит, а в VB6 нет. Пробовал при разных разрешениях (и в VB.net и в VB6 писал всё практически одинаково: таймер с интервалом 40, Form1.Refresh(), Форма 800х600, картинка 800х600); только в VB.net у меня g.Clear(...) и картинка двигается g.DrawImage(...), а в VB6 - Form1.Cls() и картинка двигается с помощью StretchBlt(...). Запускаю скомпелированный ехешник и вижу, что тот, который в VB6 компелировался 03 в диспетчере задач пишется в графе ЦП, а у того, что в VB.net - 87 (даже если просто Me.Refresh() написать, и никаких картинок не загружать и не двигать!). С какого это так, спрашивается? Это MS опять так "увеличили быстродействие"и "повысили надёжность"?
Много здесь таких как я, кто в инете через GPRS?

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Очередной Арканоид

Сообщение Mikle » 26.02.2009 (Чт) 10:55

Прикольно конечнго, но мне охота чёнить своё сделать, пусть и хуже будет. А вообще, я уже с DX почти разобрался

А DX, это свое?

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Очередной Арканоид

Сообщение MIT » 26.02.2009 (Чт) 12:43

Metallikus писал(а):И всё равно я не понимаю, почему в VB.net тормозит, а в VB6 нет.
Без особого изученя код могу отметить то, что код
Код: Выделить всё
                For i = 0 To Kirpich.Length - 2
                    Kirpich(i).Refresh(g)
                Next
выполняет слишком много ненужных действий. Перерисовывай кирпич только когда еого необходимо перерисовать: т.е. заведи булийный массив (например) размером с кирпичи, ставь флаг необходимости перерисовки, и тогда твой код будет выглядеть так:
Код: Выделить всё
                For i = 0 To Kirpich.Length - 2
                    If NeedToRedrawKirpich(i) Then Kirpich(i).Refresh(g)
                Next

Эффективность кода возрастет в разы. Правда с анимацией толку будет не очень много...
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Metallikus
Новичок
Новичок
Аватара пользователя
 
Сообщения: 45
Зарегистрирован: 18.01.2009 (Вс) 1:32

Re: Очередной Арканоид

Сообщение Metallikus » 27.02.2009 (Пт) 1:05

2 MIT
Код изучать и не надо. То, на что ты обратил внимание мне будет надо, когда анимирую блики у кирпичей. Проблемма в Picturebox.Image = rootbufer или в Picturebo.Refresh() (Если Picturebox.BackgroungImage = rootbufer) (Если rootbufer = Bitmap(1024, 768)).
А
Код: Выделить всё
                For i = 0 To Kirpich.Length - 2
                    Kirpich(i).Refresh(g)
                Next

И в примере на VB6 у меня так, и работает в тысячи раз быстрее. Единственное отличие между этими проектами (ну, кроме разрешения) см. мой предыдущий пост.
Много здесь таких как я, кто в инете через GPRS?


Вернуться в Наши проекты

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

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

    TopList  
cron