|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
Shocker.ProПо уже сделанному коду все понятно или есть неясности? Все понятно. Shocker.ProЕсть два варианта: Я бы хотел первым. А по второму могу только вякнуть, вдруг окажусь прав. Shocker.ProНо оно - текстовое, а нам надо хранить два значения Я в своем проекте организовывал склейку двух текстов, а потом в нужном месте возвращал значение и разбивал этот текс в нужном месте, получая снова 2 текстовых значения, которые ведь можно вернуть числом. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2015, 17:09 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
vdekameronЯ в своем проекте организовывал склейку двух текстов, а потом в нужном месте возвращал значение и разбивал этот текс в нужном месте, получая снова 2 текстовых значения, которые ведь можно вернуть числом.если захочешь попробовать - свойство шейпа (да и любого контрола) называется Tag, в нем можно хранить все, что хочешь в виде строки. vdekameronЯ бы хотел первым.Ок. Для начала нам нужно организовать свой собственный составной тип переменной: Код: vbnet 1. 2. 3. 4. 5.
это некий контейнер, для шейпа и сопровождающих его данных. В коллекцию мы будем добавлять (и потом извлекать) не шейп, а этот контейнер: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Дальше сам. Обрати внимание, что в цикле For Each ты будешь извлекать уже не Shape, а ShaperType ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2015, 17:25 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
Shocker.Pro, Так вроде более-менее понятно, единственное не могу понять почему когда заполняем контейнер пишем Код: vbnet 1.
а не просто Код: vbnet 1.
как и со степом? Сегодня если дома будет время еще посмотрю, если что до завтра. Спасибо за терпение)) Ибо оно у вас огромное ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2015, 17:56 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
потому что передаём объект ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2015, 18:03 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
vdekameronа не просто как и со степома говорил, все понятно в предыдущем коде ))) на самом деле, со степом тоже не просто, это должно выглядеть так: Код: vbnet 1. 2. 3.
но бейсик позволяет пропустить слово Let, поэтому его почти никогда не пишут Разница в том, что 200 и 300 представляют собой просто значения, а вот check, как и любой контрол, класс, форма и т.п. представляет собой объект. Для значений пишем Let, для объектов пишем Set. Когда закончишь с этой программой, посмотри учебник на тему, что такое объект или объектный тип. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2015, 18:10 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
Shocker.Pro, Доброе утро! Shocker.ProКогда закончишь с этой программой, посмотри учебник на тему, что такое объект или объектный тип. Хорошо, сделаю! Только у меня учебника нет, в интернете поищу. Код: vbnet 1. 2. 3. 4. 5.
Тут у меня вылазит ошибка - expected statament т.е. нужна переменная, какая, если все задали. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Получается one_step уже не нужен? ведь в нашей новой переменной уже есть stepx и stepy. И кстати ведь они все-равно будут двигаться в одном и том же направлении. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 09:36 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
vdekameronТут у меня вылазит ошибказапятые не нужны ) пишу на трех языках, "путаю педали" ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 10:08 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
vdekameronПолучается one_step уже не нужен?как это не нужен? суть программы остается как есть, просто ты расширяешь ее функциональность. Просто в one_step теперь нужно реализовать проверку и отскок. Он ведь у тебя был в самом начале топика. Теперь интегрируй его в one_step Далее: Код: vbnet 1. 2. 3. 4.
какого типа mama? Откуда у этого типа возьмутся свойства Left и Top? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 10:13 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
Shocker.Proсуть программы остается как естьсуть архитектурного подхода тоже не меняется. one_step знает, как сделать шейпу шаг. Все остальные процедуры это абсолютно не волнует. В этом принцип разделения ответственности - один из основных столпов программирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 10:16 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
Shocker.Proкакого типа mama? Откуда у этого типа возьмутся свойства Left и Top? mama as shaperType. Мы же передаем в one_step уже контейнер. Код: vbnet 1. 2. 3. 4. 5.
Получается left и top там уже не нужны. И еще вылазит ошибка. Интернет перевдчик ее не переводит.(( ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 10:25 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
vdekameronПолучается left и top там уже не нужны.а как ты тогда будешь двигать шейп? нужны. только они уже не к контейнеру применяются, а к шейпу, который лежит в контейнере ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 10:37 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
vdekameron И еще вылазит ошибка. Интернет перевдчик ее не переводит.(( В коллекцию могут быть добавлены только те пользовательские типы, которые объявлены как Publiс в модулях. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 10:43 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
AntonariyvdekameronИ еще вылазит ошибка. Интернет перевдчик ее не переводит.(( В коллекцию могут быть добавлены только те пользовательские типы, которые объявлены как Publiс в модулях.неа, все хуже. не "как Public", а в публичных модулях, то есть в отдельной библиотеке по факту. Эх, блин, ограничение VB. Ну ладно, тогда используем массив вместо коллекции, ща напишу как ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 10:45 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
Shocker.ProНу ладно, тогда используем массив вместо коллекции, ща напишу как Не успеваю за вашим ходом мыслей блин) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 10:54 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
а, точно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 10:56 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
vdekameronНе успеваю за вашим ходом мыслей блин)к сожалению, столкнулись с ограничением VB, которое не позволит использовать коллекцию в нашем случае. Так что, вместо коллекции будет массив (просто немного больше телодвижений) Вот рабочий переделанный код, изучи его. (небольшой комментарий - массив нумеруется с нуля, а не с единицы, просто я не использую нулевой элемент, иначе пришлось бы ввести еще одну проверку) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 11:06 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
Shocker.ProВот рабочий переделанный код, изучи его. Не учил еще работу с массивами. Сейчас читал. Получается:- Код: vbnet 1.
делаем массив из ShaperType ReDim Preserve - позволяет менять верхнюю размерность массива. Ubound - возвращаем верхний эл-т массива. Я немного изменил код, посмотрите пожалуйста. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
Задал что при отскоке создается новый эл. массива и меняются координаты движения. После выполнения примерно 10-15 one_step вылазит ошибка ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 11:56 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
писал жа выше, что нужно свою коллекцию юзать, а то вот уже до массивов добрались ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 12:27 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
Konst_One, Он мне пытается объяснить как проще Никто-ж не знал что вылезут эти косяки) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 12:30 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
Массив действительно временно заблокирован, потому как мы в этот момент используем один из его элементов Вариант 1) не блокировать элемент: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
это для общего образования Вариант 2 ПРАВИЛЬНЫЙ) вернуться к пути единственной ответственности. One_step должен заниматься только движением шейпа, его ничего другое не интересует. Заметь, ведь в предыдущем коде было именно так - новый шейп добавляла процедура Timer1_Timer, которая у нас по факту является управляющей всем процессом. Ты нарушил принцип и опять столкнулся с проблемой. Сделай One_step функцией типа boolean, пусть он возвращает признак - в процессе шага шейп коснулся края формы. Что будет кто-то делать с этой информацией - его не волнует. А управляющая программа Timer1_Timer проанализирует этот признак и решит, что нужно добавить новый шейп. Это - ее проблема, когда добавлять новый шейп, через десять шагов, после касания края, после прошествия определенного времени и т.п. One_step это никак не должно волновать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 12:30 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
Konst_Oneписал жа выше, что нужно свою коллекцию юзать, а то вот уже до массивов добрались ну а что ж ты сразу не сказал, что usertype в коллекцию нельзя добавить? ))) Shocker.Proможно тупо хранить в коллекции структуру, объявленную тут жеKonst_OneможноЯ считаю, что работа с классами очень сильно запутает автора, пусть лучше массив пока. Можно подчеркнуть для автора - в больших проектах массивы действительно используется редко. Но знать о них надо ) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 12:33 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
не ну пусть шишки набивает на своём коде, так больше поймёт. я не против такого метода. когда готовый рабочий код даёшь, то ничему не научится. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 12:40 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
Shocker.Pro, Конечно все получилось, но это немного не то, что я изначально хотел) Сейчас работает так - появляется шар , ударяется об правый край и вызывает за собой след. Теперь когда первый уже коснется края он не вызовет третий шар, нужно чтобы второй ударился для появления третьего((( В итоге 4-ый шар как-то непонятно зацикливается на маленьком stepX, и пооооока он доползет до края остальные три шара там уже по 20 раз каждый ударяется. Не помог и Randomize( в этом случае зацикливается 5 или 6 шар) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 13:34 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
Да что же это такое? Зачем тут опять взялась глобальная переменная? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 13:55 |
|
Создание объекта shape программно
|
|||
---|---|---|---|
#18+
Shocker.ProДа что же это такое? Зачем тут опять взялась глобальная переменная? Что же мне ее объявлять в 2 местах ? в таймере и в one_step ? Shocker.ProСделай One_step функцией типа boolean One_step это же процедура, как я ее функцией сделаю типа Boolean ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2015, 14:00 |
|
|
start [/forum/topic.php?fid=60&msg=38867499&tid=2156049]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 151ms |
0 / 0 |