|
2D-программирование Вопросы, касающиеся двумерного программирования |
10.10.2005, 03:57
|
#1
|
ПроЭктировщик
Регистрация: 10.10.2005
Сообщений: 102
Написано 2 полезных сообщений (для 2 пользователей)
|
Здрасте я тута новенький не моглибы вы мне помочь?
Подскажите на примере кода
задача:
нарисовать кружок (это я смог)
случайно расположить его в пределах экрана
задать напровление движения, тоже случайно
отскок от края окна по принципу угол подения равин углу отражения
зарание спасибо.
|
(Offline)
|
|
10.10.2005, 05:50
|
#2
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
Привет!
конечно можем, для этого мы здесь и есть
вот пример кода:
graphics 800,600,32,2
setbuffer backbuffer()
; инициализируем генератор случайных чисел
seedrnd millisecs()
; случайная скорость по Х и Y
xspeed#=rnd(-10,10)
yspeed#=rnd(-10,10)
; случайный радиус
radius=rnd(10,50)
; случайное положение на экране
x#=rnd(0+radius,graphicswidth()-radius)
y#=rnd(0+radius,graphicsheight()-radius)
repeat
cls
oval x,y,radius,radius
; перемещаем шарик
x=x+xspeed
y=y+yspeed
; коррекция координат для проверки соприкосновения с краем экрана
x1=x+radius*0.5
y1=y+radius*0.5
; проверка соприкосновения с краем экрана, если да, то скорось меняется на противоположную
if y1<radius*0.5 or y1>graphicsheight()-radius*0.5 then yspeed=-1*yspeed
if x1<radius*0.5 or x1>graphicswidth()-radius*0.5 then xspeed=-1*xspeed
flip
until keyhit(1)
end
здест про угол падения равен углу отражения сказки нет, потому, что это с точки зрения компьютера будет очень долго обрабатываться... алгоритм работает следующим образом: скорость объекта подразделяется на скорость по оси Х и скорость по оси Y, мы просто проверяем есть кружок вышел за верхнюю или нижнюю границу, меняем скорость по Y на протироположную (если он летел вверх и достиг верха то летит теперь вниз)... точно так-же по Х... можно конечно и с синусами сделать, но это потребуется если только поверхности будут кривыми или будут двигаться (крутиться), а в "квадратном" случае вот этот был-бы самым оптимальным методом...
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
10.10.2005, 14:49
|
#3
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Originally posted by SubZer0@Oct 10 2005, 03:50 AM
; случайный радиус
radius=rnd(10,50)
|
На самом деле это диаметр
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
10.10.2005, 17:53
|
#4
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
Originally posted by impersonalis+Oct 10 2005, 12:49 PM--><div class='quotetop'>ЦИТАТА(impersonalis @ Oct 10 2005, 12:49 PM)</div><div class='quotemain'><!--QuoteBegin-SubZer0@Oct 10 2005, 03:50 AM
; случайный радиус
radius=rnd(10,50)
|
На самом деле это диаметр [/b][/quote]
ну-да... точно... диаметр... запутался я маленько , я его там делю пополам - тот будет радиусом...
ну думаю общество простит мне эту досадную описку, думаю алгоритм от этого сильно не изменился, если я это радиусом обозвал )
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
10.10.2005, 20:31
|
#5
|
ПроЭктировщик
Регистрация: 10.10.2005
Сообщений: 102
Написано 2 полезных сообщений (для 2 пользователей)
|
огромный сенькс
|
(Offline)
|
|
10.10.2005, 20:59
|
#6
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
11.10.2005, 06:31
|
#7
|
ПроЭктировщик
Регистрация: 10.10.2005
Сообщений: 102
Написано 2 полезных сообщений (для 2 пользователей)
|
В Blitz3D мона рисовать плоские игры?
Я попробовал загрузить картинку и управлять её с клавы (вращать,двигать)
но не получилось
мне не надо пример кода, мнебы понять принцип действия
|
(Offline)
|
|
11.10.2005, 08:47
|
#8
|
|
набросал код прямо на форуме
думаю если ошибки будут то исправиш
graphics 800,600,16,2
setbuffer backbuffer()
img=loadimage("tadada.jpg")
while not keyhit(1)
if keydown(200) then y=y-1
if keydown(208) then y=y+1
if keydown(203) then x=x-1
if keydown(205) then x=x+1
drawimage img,x,y
flip 0
wend
клавиши по памяти написал, мог и перепутать
ps. лутче КАРТИНКИ в блице невращать
|
|
|
11.10.2005, 12:20
|
#9
|
ПроЭктировщик
Регистрация: 10.10.2005
Сообщений: 102
Написано 2 полезных сообщений (для 2 пользователей)
|
хех ну про движение я допёр(поставил Cls и Flip 1 где надо), а вот что касается вращения не понял
если незя картинки вращять, то чё делать то мона?
Я попробовал использовать RotateImage и чето стало всё тормозить.
|
(Offline)
|
|
11.10.2005, 12:40
|
#10
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
1. Повращать их при запуске и записать каждый нужный угол поворота в имейджи...
2. Юзать "2Д через 3Д". Т.е., загрузил свои имейджики в спрайты, и крути их как угодно.
3. Или юзать БлицМакс- там всё можно: и вращать, и скейлить, и альфу, и блендинг накладывать...
Однако в плане выигрыша производительности БМакс по сравнению с Б3Д пока не показывает решительного отрыва, хоть он и компилятор... А в определенных случаях даже как раз наоборот: Блиц3Д значительно выигрывает в скорости. Как бы парадоксально это не казалось... :o''
|
(Offline)
|
|
11.10.2005, 12:45
|
#11
|
ПроЭктировщик
Регистрация: 10.10.2005
Сообщений: 102
Написано 2 полезных сообщений (для 2 пользователей)
|
Не надеялся на скорый ответ сенькс, тока ещё, вот этот ваш спрайт он всегда на камеру смотрит? (ведь теперь надо камеру создать!?)
|
(Offline)
|
|
11.10.2005, 15:24
|
#12
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
Термин "2Д-через-3Д" означает, что ВСЁ для простоты и красоты сделано в 3Д, но очень похоже на 2Д... /тут еще один "парадокс": нарисовать на экране имейджик- это заметно медленней, чем отрендерить два полигона с натянутой на них текстурой/
Поэтому ессно камера нужна. И ПроджМоуд ей поставь "с отключенной перспективой" (см.хелп).
|
(Offline)
|
|
11.10.2005, 16:22
|
#13
|
Администратор
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений (для 996 пользователей)
|
еще для 2Д можно юзать вот эту либу... там и примеры есть...
ее конечно нужно протестить, что быстрее будет нарисовать чтонить на экране или прорендерить, я этим еще не занимался...
__________________
Как минимум я помог многим (с)
|
(Offline)
|
|
11.10.2005, 22:51
|
#14
|
ПроЭктировщик
Регистрация: 10.10.2005
Сообщений: 102
Написано 2 полезных сообщений (для 2 пользователей)
|
SubZer0 для меня либа пока слишком круто но посмотрю.
Diplomat я конечно хелп посмотрю но с моими познаниями в буржуйском языке до меня не скоро допрёт(хотя я не тороплюсь)
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Похожие темы
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
rand или rnd,а толку? |
butcher |
2D-программирование |
3 |
20.05.2007 14:42 |
Часовой пояс GMT +4, время: 05:06.
|