RFO BASIC 11.04.2020 / 18:48 | | MadRat96 Пользователь Сейчас: Offline
Имя: Михаил Регистрация: 07.10.2019
| levapbar, где про этот ваш OliBasic почитать можно?
|
14.04.2020 / 03:14 | | levapbar Пользователь Сейчас: Offline
Имя: Павел Регистрация: 04.09.2016
| MadRat96, https://www.tapatalk.com/groups/rfobasic/ну вот, сейчас опять начнется срач |
1.05.2020 / 14:14 | | lion1971 Пользователь Сейчас: Offline
Имя: Lion1971 Регистрация: 12.12.2016
| Привет всем. Есть ли у кого-нибудь пример организации игрового цикла с определенной частотой кадров в секунду?
|
1.05.2020 / 19:31 | | lion1971 Пользователь Сейчас: Offline
Имя: Lion1971 Регистрация: 12.12.2016
| Вот пытаюсь адаптировать этот код https://gameprogrammingpatterns.com/game-loop.htmlПри значениях fps>30 пауза становится нулевой. Почему? Открыть спойлер Закрыть спойлер gr.open,,,,,1
gr.color,255,0,0,1
gr.text.size 50
gr.text.draw txt, 50,50, ""
gr.text.draw txt1, 50,100, ""
gr.circle c1, 300,400,50
fps=25
MS_PER_FRAME=1000/fps
do
start = time()
gosub paint
ps=start + MS_PER_FRAME - time()
pause ps
until 0
onbackkey:
gr.close
end
paint:
count++
gr.modify txt, "text",str$(count) + " counts"
gr.modify txt1, "text",str$(ps)
gr.modify c1, "x", 300+100*sin(count*pi()/180)
gr.modify c1, "y", 400+100*cos(count*pi()/180)
gr.render
return
Изменено lion1971 (1.05 / 19:33) (всего 2 раза) |
1.05.2020 / 20:34 | | lion1971 Пользователь Сейчас: Offline
Имя: Lion1971 Регистрация: 12.12.2016
| Вот этот вариант действительно реагирует на смену fps Открыть спойлер Закрыть спойлер fps = 60
frameDur= 1000 / fps
MaxFrameSkip = 5
nxtFrameTime = time()
loops = 0
gr.open,,,,,1
gr.color,255,0,0,1
gr.text.size 50
gr.text.draw txt, 50,50, ""
gr.text.draw txt1, 50,100, ""
gr.circle c1, 300,400,50
do
loops = 0
while (time() > nxtFrameTime & loops < MaxFrameSkip)
gosub updateGameState
nxtFrameTime += FrameDur
loops++
repeat
gosub paint
until 0
onbackkey:
gr.close
end
paint:
gr.modify txt, "text",str$(count) + " count"
gr.modify txt1, "text",str$(loops) + " loops"
gr.modify c1, "x", 300+100*cos(count*pi()/180)
gr.modify c1, "y", 400+100*sin(count*pi()/180)
gr.render
return
updateGameState:
count++
if count>=360 then count=0
return
|
4.05.2020 / 23:40 | | DominaN Пользователь Сейчас: Offline
Имя: Кирилл Откуда: Смоленск Регистрация: 28.09.2011
| Так и не понял, ты проблему то решил?
|
14.05.2020 / 09:13 | | lion1971 Пользователь Сейчас: Offline
Имя: Lion1971 Регистрация: 12.12.2016
| Относительно Другой вопрос: как организовать перетягивание каждой фигуры из нескольких на экране? Как получить идентификатор фигуры, по которой тапнули? |
14.05.2020 / 10:44 | | lion1971 Пользователь Сейчас: Offline
Имя: Lion1971 Регистрация: 12.12.2016
| Вот что-то примитивное наваял, но как сделать более универсальным этот код? Открыть спойлер Закрыть спойлер REM Start of BASIC! Program
gr.open ,,,,,1
gr.color 255,255,0,0,2
gr.rect r1, 100,100,300,200
gr.color 255,0,255,0,2
gr.circle c1, 400, 300, 100
gr.color 255,0,0,0,2
gr.text.size 50
gr.text.draw txt, 50,50,""
gr.point pt, 0,0
ptr = 0
gr.render
do
gr.touch tch, x, y
if tch then
gr.modify pt, "x", x, "y", y
if gr_collision (pt, r1) then
ptr=r1
gr.get.value r1,"left",xl, "top",yl
dx=50
endif
if gr_collision (pt, c1) then
ptr=c1
gr.get.value c1,"x",xl,"y",yl
dx=0
endif
gr.move ptr, x-xl-dx, y-yl-dx
endif
gr.modify txt, "text",str$(int(xl))+" "+str$(int(yl))
gr.render
until 0
Изменено lion1971 (14.05 / 10:53) (всего 2 раза) |
19.06.2020 / 02:30 | | levapbar Пользователь Сейчас: Offline
Имя: Павел Регистрация: 04.09.2016
| компилятор стал бесплатным навсегда
|
20.06.2020 / 08:07 | | Aladdin Пользователь Сейчас: Offline
Имя: Aladdin Откуда: Uzbekistan, Xiva Регистрация: 10.03.2015
|
Прикрепленные файлы: 4sTwAMx88ZI.jpg (72.42 кб.) Скачано 106 раз |
Всего сообщений: 2716 Фильтровать сообщения Поиск по теме Файлы топика (511)
|