Карта сайта

Это автоматически сохраненная страница от 16.01.2013. Оригинал был здесь: http://2ch.hk/b/res/41795726.html
Сайт a2ch.ru не связан с авторами и содержимым страницы
жалоба / abuse: admin@a2ch.ru

Срд 16 Янв 2013 22:33:49
YOBA GAME
Чики, двощ. Пишет тебе программист уровня /b/.
Сейчас пишу YOBA-игру (лол, в прямом смысле YOBA). Суть такова: это ебучий арканоид.
Все дело в том, что пишу я на C# Windows Forms. Да, я извращенец. Возникла такая проблема: при передвижении площадки (событие MouseMove на форме) ехидная картошечка подвисает, пока двигается picturebox с площадкой. Ну и не знаю, как реализовать столкновение с врагами. Сейчас йоба просто пролетает сквозь них.
Реквестирую в этот ИТТ тред умных погромистов. В программач не пойду, меня там говном зальют.


Срд 16 Янв 2013 22:40:41
>>41795726
ИНФА 100%
ты днище реализующее все в 1 потоке (потоке гуев)
когда mousemoveevent проиходит, он блочит поток гуев на котором завязана картошка

Срд 16 Янв 2013 22:41:47
>>41795726
>пишу я на C# Windows Forms
Уходи.

Срд 16 Янв 2013 22:42:42
bump
>>41796242
Ноуп.

Срд 16 Янв 2013 22:42:42
Блять, если координаты совпадают - столкновение.

Срд 16 Янв 2013 22:43:36
bump
>>41796315
К каждому объекту типа "враг" применять проверку на совпадение?

Срд 16 Янв 2013 22:46:38
bump
>>41796438
Мне норм.

Срд 16 Янв 2013 22:46:52
Потоки хуйня. Если ты вдруг соберёшься писать шутер, для каждого NPC создавать свой поток?
В главном рабочем цикле выполняй оба действия, то есть йоба-шарик передвигается по траектории на шаг, затем платформа тоже(если кнопка нажата). Задержка заметна не будет.

Срд 16 Янв 2013 22:50:35
>>41796608
Дело в том, что платформа передвигается мышью.
А для передвижения йобы я использую timer.

Срд 16 Янв 2013 22:52:02
>>41796827
Пусть платформа двигается сама, а управлять надо будет мячом, лол. Только юзерам не говори.

Срд 16 Янв 2013 22:54:25
>>41796900
Гениально же!

Срд 16 Янв 2013 22:55:11
>>41796827
Особо разницы не должно быть, я уж не знаю всех тонкостей реализации в твоём случае.
Я писал подобную хуйню на C# с помощью XNA(загугли - уроков предостаточно, в том числе как захуярить по-быстрому свою игруху). Так вот там в главном цикле можно и мышь опрашивать, и клаву, и врагов передвигать, и йоба-шарик твой двигать.

Срд 16 Янв 2013 22:58:09
>>41795726
> передвижении площадки (событие MouseMove на форме) ехидная картошечка подвисает
Покажи код, что в этом событии? Возможно утечка памяти или неправильно используешь собтие
>Ну и не знаю, как реализовать столкновение с врагами
В каком контейнере(Grid, Canvas) находиться твой йоба и враги?

Срд 16 Янв 2013 23:01:28
>>41795726
2chgd@conference.jabber.ru

Срд 16 Янв 2013 23:02:39
>>41797384
Меня там закидают говном и непонятными терминами. /b/ратишка объяснит лучше, чем злые прогромисты.

Срд 16 Янв 2013 23:04:20
>>41797444
Лол, трипл. Сейчас поясню насчет куска кода.
Лаги только при смене локации персонажа (платформы).
Если эту строку закомментировать, то все нормально.

Срд 16 Янв 2013 23:09:53
Няша, пиши на XNA, доставляет, зависимость есть. брат жив

Срд 16 Янв 2013 23:10:02
>>41797232
Вместо
this.Location.X
this.Location.Y
Используй
e.GetPosition(Main).X;
e.GetPosition(Main).Y;
Main - относительно какого элемента получить кординаты

И не создавай каждый рас новою точку запизни все в Canvas вместо грида, с ним легче работать
Canvas.SetLeft(character, X);
Canvas.SetTop(character, Y);


Срд 16 Янв 2013 23:11:37
>>41797788
>И не создавай каждый рас новою точку
Двачую, у тебя игра вылетит в конце концов при таком подходе.

Срд 16 Янв 2013 23:11:59
>>41797781
Сразу наху вместе с хамлом

Срд 16 Янв 2013 23:12:46
>>41797674
> бампов
Ты - анальный мудак и хуй.

Срд 16 Янв 2013 23:12:56
>>41797877
фикс, блять я упорт всегда под конец дня
>XNA

Срд 16 Янв 2013 23:14:55
>>41797924
>анальный мудак и хуй
>сажа с картинкой

Срд 16 Янв 2013 23:17:41
http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Width="1024" Height="768" >
<Canvas Name="Main" MouseMove="Main_MouseMove">
<Canvas Name="Yoba"></Canvas>
<Canvas Name="Enemy"></Canvas>
<Canvas Name="Platforma"></Canvas>
</Canvas>
</Window></code></pre>
Дуаю понятно что куда пихать?

Срд 16 Янв 2013 23:17:42
Why not XNA?
Там мозгоебств в разы меньше.

с:history repeats itself

Срд 16 Янв 2013 23:18:57
>>41798036
> сажа с картинкой
Традиции же.

Срд 16 Янв 2013 23:22:03
>>41798185
Распиарианое говно как Unity, все говорят какой он ахуеный но никто не хочет использовать.

Срд 16 Янв 2013 23:22:06
>>41798243
Тогда ладно, няша.


c: i&amp;#39;m batman

Срд 16 Янв 2013 23:22:35
>>41798185
XNA для лохов и неудачников, которые не могут в программирование, поэтому труЪ программисты поливают его говном, так как игроделание перестало быть чем-то элитным и недосягаемым для простых смертных, но для начала очень даже норм.

Срд 16 Янв 2013 23:40:15
В том же таймере, который ёбу перемешает, проверяй мышь.

Срд 16 Янв 2013 23:44:38
>>41798506
БЛЯДЬ! Анон, ты самый гениальный тут.
Миллион добра тебе, няша.

Срд 16 Янв 2013 23:45:14
Яндекс.Капча?

Срд 16 Янв 2013 23:47:52
>>41798697
Тебе ж сразу сказали всё пихнуть в одно место.
Ебаная макака

Срд 16 Янв 2013 23:49:38
>>41798854
Я сперва думал, что меня опять накрыло :3

Срд 16 Янв 2013 23:51:56
Суп, антош, хочу отдать в мастерскую свою пеку, что б они её улучшили до суммы 20.000 рублей 4000 грн Проще говоря - что б батла 3 на высоких летала! Так вот, какие фирменные детали мне к йобе закупать Например видюху %модель нейм% на 2 гб., и скажи мне примерную их цену. Или уже проще новую йобу взять?

Срд 16 Янв 2013 23:52:30
>>41798919
>Windows Forms
Я думал что WPF, все пойду спать наверно.

Срд 16 Янв 2013 23:53:32
Сосоны, а есть идеи насчет проверки столкновения с блоками?

>>41799045
Доброй ночи тебе, спасибо за попытку помочь.

Срд 16 Янв 2013 23:54:48
>>41799095
Но я ньюфаг в собирании железа. + не умею детали годные подбирать.

Срд 16 Янв 2013 23:57:03
>>41799095
Ну если по-лоховски - всунь в тот же таймер проверку по всем блокам в цикле. Если попал - разворачиваешь ёбу и помечаешь блок(можно например ему координаты выставить отрицательные).

Срд 16 Янв 2013 23:59:58
>>41799261
Я думал об этом, но не сильно будет это все дело тормозить? А насчет исчезания - просто менять свойство визибл и всё.

Чтв 17 Янв 2013 00:00:06
>>41799095
>Сосоны, а есть идеи насчет проверки столкновения с блоками?
Враги это что за елементы picturebox или ты с помошью GDI их выводишь?

Чтв 17 Янв 2013 00:00:17
>>41799158
Если на старой матери - бери любую видяху на 2гб, но обязательно со своим кулером. Памяти закупи и получше кулер на проц(если проц тоже поменять хочешь - тоже несложно). Профит наверное.
По крайней мере я свою пеку так собирал, вышло на 10000, причём что от старой остался только корпус, БП и винчестеры.

Чтв 17 Янв 2013 00:01:15
>>41799400
>picturebox
This.

Чтв 17 Янв 2013 00:01:37
>>41799393
А просто сразу их удалять нельзя?

Чтв 17 Янв 2013 00:02:26
>>41799393
>Я думал об этом, но не сильно будет это все дело тормозить?
Будет, так никогда делать нельзя, но в твоём случае думаю сойдёт. Если ты хочешь быстрого результата.

Чтв 17 Янв 2013 00:03:38
>>41799533
Хм, попробую, вдруг незаметно будет :3

Чтв 17 Янв 2013 00:08:11
>>41799583
Надеюсь у тебя угол отражения не полностью равен углу падения?

Чтв 17 Янв 2013 00:10:03
>>41795726
>как реализовать столкновение с врагами

Опиши врага примерно так:

interface Enemy {

void setX(int x);
int getX();
void setY(int y);
int getY();

boolean checkInterception(int yobaX, int yobaY);

}

Далее, создай массив врагов, и достаточно часто вызывай функцию checkInterception для всех его элементов.

Чтв 17 Янв 2013 00:10:31
>>41799786
Как раз сейчас буду дописывать обработку столкновения с площадкой. В зависимости от места удара об площадку йобы он будет лететь под немного другим углом.

Чтв 17 Янв 2013 00:11:22
>>41799875
Штоу?

Чтв 17 Янв 2013 00:13:22
>>41799941

Чего тебе не ясно?

Чтв 17 Янв 2013 00:15:07
>>41800054
У тебя там точно С#?

Чтв 17 Янв 2013 00:21:12
>>41800151

А в чем проблема-то? Идея очевидна же. Я показал, как должен работать класс, хранящий информацию о враге. Ты сейчас, кстати, эти данные как хранишь?

Чтв 17 Янв 2013 00:23:03
>>41800446
Всё, что мне будет нужно, можно хранить в свойствах объекта.
Его положение, размер и видимость.

Чтв 17 Янв 2013 00:26:49
>>41795726
Зачем, ОП?
Почему не скачать божественный Unity 3D или UDK и не сделать все по человечески?

Чтв 17 Янв 2013 00:27:54
>>41800548
>в свойствах объекта

Какого такого объекта? Ты создал объект "враг"? Или ты хранишь данные об врагах в каком-нибудь графическом примитиве, который используется для их отрисовки? Если да - то это МММММАКСИМУМ ГОВНОКОД.

Чтв 17 Янв 2013 00:30:38
>>41800780
Пикрелейтед.
Да, говнокод, знаю. На большее я пока не способен, к сожалению.

Чтв 17 Янв 2013 00:31:19
Вот проверка на соприкосновение йобы с врагами
for (int i = 0; i < Controls.Count; i++)
{
//AccessibleName Свойство в PictureBox можно туда записать строку
if (Controls[i].AccessibleName == "Emenem")//проверяем что елемент это враг
{
if (Controls[i].Location.X < Yoba.Location.X + Yoba.Width
&amp;&amp;
Controls[i].Location.X + Controls[i].Width > Yoba.Location.X
&amp;&amp;
Controls[i].Location.Y < Yoba.Location.Y + Yoba.Height
&amp;&amp;
Controls[i].Location.Y + Controls[i].Height > Yoba.Location.X
)//проверка на то чно yoba соприкаснулся с врагами
{
//удалаяем или скрываем врага откидиваем йобу назад
}
}
}

Чтв 17 Янв 2013 00:32:16
>>41800933
>У меня есть только небольшие навыки С#
Вот потому у тебя нихуя и не выйдет. Скачай юнити и запили говноигру за вечер, или запишись на курсы, читай литературу по геймдеву, и запили туже игру, только спустя пол года обучения.

Чтв 17 Янв 2013 00:35:53
>>41801025
Оп не слушай, все у тебя получится. Ты больше времени потратишь на то чтобы разобраться в unity/

Чтв 17 Янв 2013 00:35:59
>>41801025
Но у меня выйдет, я уверен.

Чтв 17 Янв 2013 00:37:06
>>41801231
Спасибо, братан.

Чтв 17 Янв 2013 00:37:15
>>41800933
Ну, так и есть. Ты хранишь данные об объекте в классе графического элемента. Это очень плохо. Просто непередаваемо плохо. Ты нарушаешь все 3 принципа ООП одним разом. Я бы рекомендовал тебе сначала выучить теорию, а потом уж браться за программирование. C# - это объектно-ориентированный язык, разработка приложений на нем требует некоторой квалификации.

Чтв 17 Янв 2013 00:38:51
>>41801240
И их тоже не слушай. foreach не подойдет

Чтв 17 Янв 2013 00:40:47
>>41801319
Когда дело доходит до оптимизации все принципы ООП идут нахуй, так случается с каждым серозным проектом или игрой.

Чтв 17 Янв 2013 00:46:06
>>41800975
Хм, у меня это работает, но как-то странно. Йоба пролетает мимо, а потом в рандомном месте начинает уничтожать сразу кучу врагов.

Чтв 17 Янв 2013 00:46:50
>>41801537
>дело доходит до оптимизации
>принципы ООП идут нахуй

Ну пиздец. Я с вас хуею. Какая, к чертовой матери, оптимизация? Что ты тут оптимизировать собрался? Если принципы ООП не нужны, так зачем вообще трогать C#, а? Пиши, ёпта, на ассемблере, там дохуя возможностей оптимизации.

Чтв 17 Янв 2013 00:48:59
>>41801938
Антоша, я бы с радостью написал любую хуйню на php. Но, блядь, у меня ограничение по средствам: только С#, только Windows Forms, только хардкор! Так что вот так вот.

Чтв 17 Янв 2013 00:52:52
>>41801418
Доброанон, что такое Controls? Объясни, пожалуйста, попонятнее, а то в MSDN какая-то нелепая хрень описана.

Чтв 17 Янв 2013 00:58:11
>с радостью написал любую хуйню на php
>только С#
>тотальное незнание языка+ незнание ООП + незнание принципов проектирования

И вот такие, блеать, кретины приходят каждую неделю ко мне на собеседование и гордо называют себя словом "программист". У меня от вас батхерт. Бросьте уже программирование и найдите себе работу по способностям.

Кстати, Йоба у тебя сквозь врагов летает наверняка потому, что столкновения вовремя не обрабатываются. А не обрабатываются они потому, что ты обработчик засунул хуй пойми куда, хотя уж он-то точно должен выполняться в отдельном потоке, либо достаточно часто вызываться как callback по событию от таймера.


Чтв 17 Янв 2013 00:59:46
>>41801537
>Yellow_Submarine
Ты кто такой вообще? ООП у него при оптимизации идет нахуй, совсем чтоли пизданулся? Для тких кретинов и был придуман бейсик с паскалем.

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

Чтв 17 Янв 2013 01:00:29
>>41802627
Не волнуйся, я к тебе не приду на собеседование.

Чтв 17 Янв 2013 01:01:50
>>41802305

Controls - это абстрактный класс для элементов управления в Windows Forms, я так полагаю. Всякие кнопочки-иконочки-чекбоксы-хуйбоксы должны от него наследовать.

Чтв 17 Янв 2013 01:02:01
Вангую следующую методику написания программы у ОПа. Написать код, скомпилировать, код не работает, значит нужно рандомно внести изменение, не совсем понятно зачем такое изменение, ну да похуй, снова компиляция и код снова не работает, возвращаемся к рандомным изменениям в коде.

Чтв 17 Янв 2013 01:02:07
>>41802717
А я не говорил, что меня тут не обосрут. Просто меня тут обосрут, так сказать, по-родному, по-/b/ратски.

Чтв 17 Янв 2013 01:03:25
>>41802869
Хм, вроде бы понял. Спасибо.

Чтв 17 Янв 2013 01:04:06
>игру
>Windows Forms

Проиграл

Мимодотнетчик

Чтв 17 Янв 2013 01:04:36
>>41802305
У каждого элемента, даже у окна есть коллекция(массив) она называется либо Controls либо Items. В данном случае Controls это список элемнтов(Label, Button, PictureBox и т.д.) которые располагаются на твоем окне.

Чтв 17 Янв 2013 01:04:42
>>41802998
>Мимодотнетчик

Проиграл

Мимоявабог

Чтв 17 Янв 2013 01:06:49
ОП, пойди по пути WPF, хотя бы макушки посшибай. Там можно и без XAML обойтись.
Далее, есть во всех этих системах спец класс - Canvas, на котором можно рисовать примитивы (треугольники, квадраты), либо те же картинки, плюс переопределяемый метод, перерисовывающий картинку на этом самом канвасе. Разбей свой код на объекты. Спец объекты отвечающий за отрисовку/поведение врагов, другие за отрисовку/поведение твоего йоба шарика, третий за поведение/отрисовку платформы. Общий класс-менеджер, который собственно и управляет этими объектами.

Чтв 17 Янв 2013 01:07:26
>>41802627
Нет там с координатами беда, я вспомнил там еще надо учитывать шапку, полоску в котором пишется название программы. Сейчас найду пример.

Чтв 17 Янв 2013 01:09:07
>>41803037
>Проиграл
>Мимоявабог

Я тут уже полчаса то дико проигрываю, то бегу пердак зашивать.

Разработчик java EE

Чтв 17 Янв 2013 01:09:30
>>41803156
Я вот тоже об этом подумал, поэтому поковыряю немного. Йоба очень странно себя ведёт.

Чтв 17 Янв 2013 01:10:33
>>41803037
Ява же говно без линка и перегрузки операторов.

Чтв 17 Янв 2013 01:12:31
В общем виде алгоритм примерно такой. Есть общий игровой цикл, в котором:
1. регистрация событий с контроллеров (мышь, клавиатура)
2. производится расчет столкновений всех со всеми (ну или алгоритм по сложнее, дабы проверять только потенциальные столкновения, на тот случай если объектов много)
3. производится перемещение всех активных элементов/персонажей/объектов в игре
4. перерисовка всех игровых объектов

Общий цикл помещается в пресловутый класс-менеджер. У объектов описывающих врагов, йоба-шарик и платформу есть свои методы(функции), которые реализую проверку на столкновения, перемещение объекта и отрисовку. Классом-менеджером вызываются строго определенные методы(функции) этих объектов на каждом из этапов общего цикла.
В конце концов, дабы игра не была бесконечной, для ее выхода классу-менеджеру задаются некоторые условия, скажем количество врагов становится нулевым - закончить игру.

Чтв 17 Янв 2013 01:12:56
>>41803156

Ехал говнокод через говнокод. Сделайте, сука, относительные координаты, а привязку к реальным координатам на форме вынесите куда-нибудь в процедуру отрисовки.

Чтв 17 Янв 2013 01:14:39
>>41803156
>Нет там с координатами беда, я вспомнил там еще надо учитывать шапку, полоску в котором пишется название программы
Ммаксимум еблан. Для этого прогрессивным миром и создана канва объекты, относительно которых и высчитываются координаты, а уж как там эта канва в рабочем окне расположена - дело десятое.
Хотя нахуя я тебе это все объясняю.

Чтв 17 Янв 2013 01:18:57
>>41803122

Господа, не мечите бисер перед свиньями. Человек не понимает, что такое ООП, что такое классы, интерфейсы и методы, а вы ему про какое-то разбиение на объекты толкуете. Пускай пишет, как умеет. Напишет кое-как, отнесет в школу, похвастается перед учителем, какой он крутой программист. Может быть, будет у нас второй Денис Попов с принципиально новой игрой про Йобу.

Чтв 17 Янв 2013 01:21:23
>>41803738
И не поспоришь, пойду посплю навреное.

Чтв 17 Янв 2013 01:21:28
>>41803507

Это ж Windows Forms, там вполне может оказаться, что заголовок окна отрисован на той же самой канве X-----------DDDDDDDDDDDDDDD

Чтв 17 Янв 2013 01:21:53
>>41803738
Да, я не понимаю ООП.
Не в школу, а в ВУЗик.
Не будет, не переживай.

Чтв 17 Янв 2013 01:24:35
>>41803898
opengl

Чтв 17 Янв 2013 01:25:34
>>41803898
>Не в школу, а в ВУЗик

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

Чтв 17 Янв 2013 01:26:28
>>41800975
Путем TDD на момент первого уничтожения противника была получена следующая информация:
Имя врага: enemy12
Координаты врага: 156,172
Координаты йобы: 200,274
Т.е. йоба запутался и разбивает мыльницы не так, как надо.

Чтв 17 Янв 2013 01:27:01
>>41804100
А меня возьмёшь? Я C#, джаву и си знаю. И под микроконтроллеры писал.

Чтв 17 Янв 2013 01:27:20
>>41804100
Я не собираюсь работать по специальности.

Чтв 17 Янв 2013 01:27:48
>>41804188
>4188
Лол.

Чтв 17 Янв 2013 01:28:33
Попробуй это условие, похоже что я неправильно написал его первый раз
if (Yoba.Location.X > Controls[i].Location.X
&amp;&amp; Yoba.Location.X < Controls[i].Location.X + Controls[i].Width
&amp;&amp; Yoba.Location.Y > Controls[i].Location.Y
&amp;&amp; Yoba.Location.Y < Controls[i].Location.Y + Controls[i].Height)


Чтв 17 Янв 2013 01:29:18
>>41804188
А кем ты будешь работать? Дебилом манагером в занюханной конторке?

Чтв 17 Янв 2013 01:31:44
>>41804282
Я закончу ВУЗ и выпилюсь. Без пруфов.

Чтв 17 Янв 2013 01:33:08
>>41804412
Ха-ха, неудачник.

Чтв 17 Янв 2013 01:34:04
>>41804163

Ну, если не пишешь говнокода, то возьму. С хорошими программистами сейчас вообще жопа. Дохуя всяких клоунов, выпускников илитных технических вузов с красными дипломами, не умеющих даже того, что нам демонстрирует ОП; дохуя "специалистов", освоивших php в рамках курса "ПХП для чайников со свистком", дохуя мудаков с "академическим опытом программирования". А нормальных программистов нету, блеать. Ну а что касается знаний языков, то практически на любом языке можно написать как хороший код, так и полное говно.

Чтв 17 Янв 2013 01:34:23
Лол, альфа-версия ЙОБЫ:
http://rghost.ru/43088708
вишмастер в комплекте

Чтв 17 Янв 2013 01:36:28
>>41804505
Ну да.

Чтв 17 Янв 2013 01:37:29
>>41804564
А у меня нет диплома, отчислили за несдачу философии и политологии (ну не переношу я подобные предметы). Хотя я даже рад: у нас было такое образование, что ну его нахуй. Сейчас читаю разную литературу и прохожу несколько курсов на coursera. И это куда больше доставляет, хочу я сказать. Сразу появилось желание что-то делать и развиваться.
Добра тебе и хороших кандидатов в программисты.

Чтв 17 Янв 2013 01:38:45
>>41802627
>обработчик коллизий
>в отдельном потоке
И вот такие, блеать, кретины каждую неделю кого-то собеседуют.

Чтв 17 Янв 2013 01:39:17
>>41804584
Кто запускал?
Разделы в порядке?

Чтв 17 Янв 2013 01:39:51
>>41804892
Разделы в порядке, но вот брат...

Чтв 17 Янв 2013 01:40:40
>>41804930
А зависимость?

Чтв 17 Янв 2013 01:40:48
>>41804584
ОП скрой еще курсор
Cursor.Hide();
вообще заебо будет

Чтв 17 Янв 2013 01:41:40
>>41804974
Да никакой зависимости нет. Пойду запущу ещё раз, последний

Чтв 17 Янв 2013 01:43:49
>>41804983
А и еще подскажите кто не будь как в формах звук подключать, не разу не сталкивался.

Чтв 17 Янв 2013 01:46:26
>>41804852

Ок. Куда бы ты его поместил? В поток, который занимается отрисовкой?

Чтв 17 Янв 2013 01:47:51
>>41805169
Я только .wav умею пока.
SoundPlayer tick = new SoundPlayer(global::Arcanyoid.Properties.Resources.tick);
Жирное - название проекта,, спойлер - название плеера, подчеркнутое - ресурса. Ресурс добавляется через Обозреватель решений, двойной клик на Resources.resx и там добавляешь.
Использование: tick.Play();

Чтв 17 Янв 2013 01:52:52
>>41805423
ОП с програмачем понятно но есть еще и 2ch.hk/gd/ там иногда тоже помогают закидывают говном.

Чтв 17 Янв 2013 01:55:47
>>41805693
Хорошо, буду знать.
Спасибо тебе за помощь, я рад, что остались такие люди, которые вместо того, чтобы возмущаться на горе-погромиста реально помогают. Добра тебе.

Чтв 17 Янв 2013 01:56:35
>>41805693
Ты немножко ошибся с разделом. Мне кажется, нашему ОПу будут рады помочь в /ga

Чтв 17 Янв 2013 01:57:53
>>41805897
Каков шутник!

Чтв 17 Янв 2013 02:02:59
>>41805855
>вместо того, чтобы возмущаться на горе-погромиста реально помогают

Я рад, что у тебя все получилось. Но, пожалуйста, не относись к программированию столь легкомысленно. Прочитай какую-нибудь хорошую книжку по теории. Не привыкай говнокодить. Может быть, из тебя получится неплохой специалист, и не надо будет выпиливаться по окончании института X---DDDD

Чтв 17 Янв 2013 02:05:59
>>41806218
Возможно. И тебе добра, анон.

Чтв 17 Янв 2013 02:08:14
ОП не уходи, сейчас буду тебе пояснять по архитектуре подобных приложений.

Чтв 17 Янв 2013 02:09:48
>>41806483
Я тут, жду.

Чтв 17 Янв 2013 02:19:51
А опчик-то охуенен, на мой взгляд. Не лезет в computer science, не выясняет самый популярный языктм, а просто берёт и фигачит.

Чтв 17 Янв 2013 02:23:22
Расскажу тебе про небольшой паттерн проектирования подобных игр, который довольно сложен в написании, но позволяет расширять и усовершенствовать твой проект очень легко и быстро:
Создаются классы объектов для каждого типа (у тебя например - это враг, йоба мяч и площадка), наследуются от одного базового.
У базового класса должно быть несколько общих методов:
Update()
Render()
Command()

Update (uint time) - метод который дает команду объекту обновить свои действия. Взависимости от того, в каком состоянии находился объект - он будет делать это (например, если твоя картошечка находилась в движении - она будет пытаться двигаться, если что-то должно было стрельнуть - стрельнет и тд. В time - указывается время вызова. И уже внутри метода вычисляется прошедшее время между текущим и прошлым запросами и взависимости от этого делаются действии (например чем больше времени прошло, тем быстрее должен двигаться объект, если он хочет двигаться).


Render - метод класса, который будет рендерить объект на экран или на форму. Для каждого объекта Render должен быть перегружен по-своему. То есть render-метод твоей картофелины отличается от рендер-метода площадки.

Command (uint comandid, void * command data) - Это метод, который изменяет состояние объекта. В отличие от Update, command не вызывает само действие, а только изменяет намерение. comandid - id команды, data - массив дополнительных данных для команды.
Пример команды - Command (COLLISION_ID GameObject * obj) - то есть вызывая этот метод, мы даем понять объекту что у него коллизия (столкновение) с объектом. И указываем сам объект. И исходя из типа объекта, сам объект сам может принять решение: например, прекратить движение, развернуться, атаковать, либо самоуничтожиться. Причем изменится только лишь намерение, сам объект не уничтожится.
Другой пример - команда Destroy() - говорим объекту, что ему необходимо уничтожиться. В таком случае, его состояние перейдет например "уничтожение", он перестанет реагировать на коллизии, метод Update перестанет что-либо делать, а рендер-метод будет рендерить анимацию уничтожения. По окончанию анимации метод udpate уничтожит объект, удаляя его из памяти.

Щас еще про организацию всей этой хуиты расскажу.

Чтв 17 Янв 2013 02:25:57
>>41807191
Схоронил.

Чтв 17 Янв 2013 02:29:23
Кому интересно, могут глянуть вот это:
http://rghost.ru/43089487
Делайте спикер потише, лол.

Чтв 17 Янв 2013 02:46:13
>>41807191
Для оперирования всеми этими объектами, у нас должен храниться список объектов базового типа. А также должен быть класс, который всей этой херней управляет, и раздает всем им команды. Этот класс называется внутренний менеджер событий.
Он необходим для того, чтобы объекты в игре смогли общаться друг с другом.
Как это происходит?
Так как у нас абсолютно все игровые объекты являются потомками базового класса, чтобы вызывать методы нам не нужно знать какого типа объекты. Поэтому мы просто храним указатели или ссылки на базовый класс игровых объектов.
Так как изначально список пуст, нам нужно добавить объект в список, для этого используется метод
ADDGameObject (GameObject *) - он просто добавляет данный обхект в свой список.
Но нам нужно еще и уметь создавать эти объекты, для этого нуженн метод
GameObject * CreateObject(uint TypeId, param param...) - создает объект нужного типа с нужными параметрами.

Теперь нам нужен метод, который бы обновлял все объекты на карте, для этого используется метод
Update() - он просто вызывает у всех объектов в списке Update(time).
Также нам нужен метод, который бы рендерил все объекты - Render() - вызывает Render у всех объектов в списке.

Теперь о самом интересном:
Метод TestCollisions - проходится по всем объектам в списке, и проверяет их координаты. Если есть коллизии, то менеджер отправляет этим объектам сообщение COLLISION.
Метод Delete (objectID) - удаляет объект из списка.
И методы MouseInput(TPoint p, ButtonPressed), и KeyboardInput(Key) - просто отправляют сообщения всем объектам о том, что пользователь повел мышкой или нажал кнопку. Если объект не управляется пользователем - он просто проинорирует это сообщение, а если управляется - то возможно изменит свое состояние.

Вот впринципе и всё, теперь как происходит всё:

1. Создается объект менеджера.
2. Добавляются в менеджер начальные объекты, либо стираются (вообщем инициализация менеджера).
3. И дальше происходит цикл за циклом следующее:
a. Проверяются input-параметры и рассылаются всем сообщения о нажатых клавишах.
b. Всем объетам рассылается update (в этот момент объекты например двигаются, либо поворачиваются внутри своих парметров, но не рендерятся).
с. Проверяется Testcollision (здесь если например в тоей игре твой враг имеет колллизию с объектом типа "пека-шар", то он вызывает у себя команду Destroy. Например если шар хотел шагнуть и встретил коллизию - он отменяет свой ход на предыдущем update, либо меняет свое состояние).
d. Вызывается Render - и только после того, как все коллизии проверены, все объекты сделали что хотели - вызывается метод их прорисовки.


Вот вкратце такая вот хуйня, дружок.
Ты скажешь - слишком трудно и муторно, а я скажу - что этот каркс ты можешь написать один раз и на нем писать абсолютно любые игры (даже 3D) и не будет никаких проблем с потоками и всей хуйней.

Чтв 17 Янв 2013 02:48:38
>>41808317
Спасибо, обязательно прочитаю на трезвую голову. Весь текст сохранил.

Чтв 17 Янв 2013 02:49:25
>>41808317
Добавлю, что при такой архитектуре, объекты могут создавать другие объекты, удалять другие объекты или изменять их состояния напрямую.
То есть система ахуительно гибкая.


← К списку тредов