Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
1

Программа шутка 2

26.08.2010, 15:47. Показов 3400. Ответов 28
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите написать ) смысл такой:
прога запускается и по экрану летит шарик (к примеру улыбающийся смайлик) когда он долетает до конца экрана рекошетит и их становится двое и при каждом сталкновении с гранями экрана или самим с собой каждый шарик делился.
не понятно как заставить летать шарик? или он будет рисоваться на мониторе или рисоваться на канве на форме, а потом уменьшить саму форму и двигать уже форму, тогда нужно что бы другие формы создавались в режиме run-time. И не понятно как отследить столкновение друг с другом.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.08.2010, 15:47
Ответы с готовыми решениями:

Шутка на Delphi 7
по задумке прога должна открыть блокнот, заблокировать мышь и клавиатуру, написать в блокноте...

Программа-шутка форматирование диска
Доброго времени суток, помогите, пожалуйста, нужно на VBA или на с++ написать программу-шутку,...

Альтернатива Skype (программа-шутка)
Кароч мучился мучился с запросами и парсингом и в общем вот что получилось.... Пока смог...

Чем отличается программа-шутка от вируса?
Доброго времени суток! Написал вирус на 900 кб, комбинированный ассемблер - с++ . Но он не...

28
15 / 15 / 0
Регистрация: 09.08.2010
Сообщений: 90
26.08.2010, 16:06 2
Это сложно и может потянуть процесс.
Это возможно,но должен быть придел деления шариков.
Вы хорошо знаете Delphi?
0
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
26.08.2010, 16:09  [ТС] 3
понятное дело предел должен быть, но скажем общее кол-во 1000 а потом они просто беспорядочно перемещаются.
0
15 / 15 / 0
Регистрация: 09.08.2010
Сообщений: 90
26.08.2010, 16:16 4
Будет сильно тормозить...
На примере 2-х объектов уже будет притормаживать...
Как например этот исходник?
bounce02.zip
0
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
26.08.2010, 16:18  [ТС] 5
а если на по экрану а в пределах формы, как в твоем примере
0
15 / 15 / 0
Регистрация: 09.08.2010
Сообщений: 90
26.08.2010, 16:24 6
Можно и по экрану,но нужно вывести объекты в отдельном окне и заменить
перемещение не объектов а форм относительно экрана и его размеров,а не размеры самого приложения.
попробую переделать...
но сразу скажу,что будет тормозить,если как ты сказал "общее кол-во 1000" не влезет и не заработает.
0
КотЪ
219 / 219 / 60
Регистрация: 26.05.2009
Сообщений: 688
26.08.2010, 16:27 7
Даже 100 форм будет жутко тормозить ) Не говоря уже о 1000. Нужно рисовать на экране.
0
15 / 15 / 0
Регистрация: 09.08.2010
Сообщений: 90
26.08.2010, 16:35 8
Вот уже на экране:
Копия bounce02.zip
Посмотри на рабочем столе
0
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
26.08.2010, 16:38  [ТС] 9
Цитата Сообщение от Zabiyak Посмотреть сообщение
Даже 100 форм будет жутко тормозить ) Не говоря уже о 1000. Нужно рисовать на экране.
вот и я думаю рисование на экране практичнее, но как отследить столкновение 2-х нарисованных объектов?
Если уж сложно сделать на экране, подскажите как то же самое реализовать в приделах формы?

P.S.
1000 я взял за примерную цифру, как только шарики закроют большую или всю часть экрана, тут конечно зависит от размера шариков.

Добавлено через 1 минуту
Цитата Сообщение от Gorezcaid Посмотреть сообщение
Вот уже на экране:
Вложение 40467
Посмотри на рабочем столе
действительно претормаживает, а у тебя эти шарики на чем выводятся?
это 2 отдельные формы летают?
0
15 / 15 / 0
Регистрация: 09.08.2010
Сообщений: 90
26.08.2010, 16:43 10
это 2 отдельные формы летают?
отдельные окна.На другой среде.
Но принцип такой-же.
0
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
26.08.2010, 16:44  [ТС] 11
Gorezcaid
можешь проект выложить?
0
15 / 15 / 0
Регистрация: 09.08.2010
Сообщений: 90
26.08.2010, 16:50 12
104 строчки кода?
ты не разберёшся,хотя код лёгкий.
тут спойлера нет?...
0
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
26.08.2010, 16:54  [ТС] 13
104 строчки кода просто летать по экрану? или она еще что-то делает?

P.S.
выкладывай, еще не в таком кол-ве строк разбирался
0
15 / 15 / 0
Регистрация: 09.08.2010
Сообщений: 90
26.08.2010, 17:00 14
Буду переделывать код для Delphi по частям...

вывести объект 1 за окно
вывести объект 2 за окно
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//начальное присваивание:
bounce:=1;
x1:=1;
y1:=1;
x2:=ScreenWidth-50;
y2:=ScreenHeight/2;
max_x1:=ScreenWidth]-72;
max_y1:=ScreenHeight]-72;
max_x2:=ScreenWidth-50;
max_y2:=ScreenHeight-50;
oper_x1:='+';
oper_y1:='+';
oper_x2:='-';
oper_y2:='+';
0
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
26.08.2010, 17:01  [ТС] 15
ааа так это не на делфи написана прога?
0
15 / 15 / 0
Регистрация: 09.08.2010
Сообщений: 90
26.08.2010, 17:09 16
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
//цикл While
while bounce = 1 do
Begin
//--
If x1 > max_x1 then
oper_x1:='-';
If x1 < 1 then
oper_x1:='+';
If y1 > max_y1 then
oper_y1:='-';
If y1 < 1 then
oper_y1:='+';
//39 строчка=======================
0
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
26.08.2010, 17:12  [ТС] 17
заставить летать я сделаю, заставить рекошетить от граней экрана или формы тоже, не понятно как заставить рекошетить друг от друга и соответственно как делить их.
0
15 / 15 / 0
Регистрация: 09.08.2010
Сообщений: 90
26.08.2010, 17:20 18
Delphi
1
2
3
4
5
6
7
8
9
If  x2 > max_x2 then
oper_x2:='-';
If x2 < 1 then
oper_x2:='+';
If y2 >max_y2 then
oper_y2:='-';
If y2 <1 then
oper_y2:='+';
//56 строчка=======================
Давай остольное ты поймёшь,если что спрашивай:Не Delphi:
Delphi
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
If "[x1]" "=" "[x2]"
If "[y1]" "=" "[y2]"
 
If "[oper_x1]" "=" "+"
SetVar "[oper_x1]" "-"
EndIf
If "[oper_x1]" "=" "-"
SetVar "[oper_x1]" "+"
EndIf
If "[oper_y1]" "=" "+"
SetVar "[oper_y1]" "-"
EndIf
If "[oper_y1]" "=" "-"
SetVar "[oper_y1]" "+"
EndIf
.+-+-+-+-+-+-+-+-+-+-+-+-+-
If "[oper_x2]" "=" "+"
SetVar "[oper_x2]" "-"
EndIf
If "[oper_x2]" "=" "-"
SetVar "[oper_x2]" "+"
EndIf
If "[oper_y2]" "=" "+"
SetVar "[oper_y2]" "-"
EndIf
If "[oper_y2]" "=" "-"
SetVar "[oper_y2]" "+"
EndIf
EndIf
EndIf
. =======================
Math "[x1][oper_x1]2" "" "[x1]"
Math "[y1][oper_y1]2" "" "[y1]"
Math "[x2][oper_x2]2" "" "[x2]"
Math "[y2][oper_y2]2" "" "[y2]"
zmSetCustomWindowPos "AnimatedGIF1" "[x1]" "[y1]" "" "" "ScreenPos" ""
zmSetCustomWindowPos "AnimatedGIF2" "[x2]" "[y2]" "" "" "ScreenPos" ""
EndWhile
Добавлено через 4 минуты
не понятно как заставить рекошетить друг от друга и соответственно как делить их.
делить когда переменные [oper_x1] [oper_x2] [oper_y2] [oper_y2] меняют своё значение от "+" к "-" и наоборот.При ударе об границы экрана.
0
2184 / 1254 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
26.08.2010, 17:23  [ТС] 19
мне бы на делфи реализацию
у вас что за язык?
0
15 / 15 / 0
Регистрация: 09.08.2010
Сообщений: 90
26.08.2010, 17:28 20
Всё очень просто сравните и замените:
Delphi
1
2
3
If "[oper_x1]" "=" "+"
SetVar "[oper_x1]" "-"
EndIf
На
Delphi
1
2
If oper_x1 = '+' then
oper_x1:='-';
0
26.08.2010, 17:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2010, 17:28
Помогаю со студенческими работами здесь

Шутка
Нужно сделать программу для розыгрыша, которая будет: 1. переворачивать экран (буквально все вверх...

Шутка
Давно тому назад, ещё в СССР, среди студентов гуляла такая несерьёзная, полуанекдотичная задачка,...

Задача - Шутка
Считают, что блондинки глупые. Когда им становится холодно, они идут в угол и греются. Почему они...

В чём шутка?
Наткнулся на вакансию C# developer и начало было такое Let’s start with a joke. Three C#...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru