purebasic.info

PureBasic forum
Текущее время: Вт апр 24, 2018 9:20 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 68 ]  На страницу Пред.  1, 2, 3, 4, 5  След.
Автор Сообщение
 Заголовок сообщения: Re: Языковый тренажер
СообщениеДобавлено: Вс июн 26, 2016 7:30 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2270
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
Да не надо вообще такой дикий Delay в 5000 юзать.
Главный цикл программы/игры должен всегда крутиться, причём не с максимальной скоростью, которую позволит CPU, а с ограниченным FPS.
Вот и начни для начала с создания такого цикла, который будет обновлять изображение 60 раз в секунду, не больше, и не меньше.
А уже потом делай события, причём не через таймеры, а через ту же логику цикла, с применением ElapsedMilliseconds.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Языковый тренажер
СообщениеДобавлено: Пн июн 27, 2016 5:46 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 578
Благодарил (а): 60 раз.
Поблагодарили: 18 раз.
Пункты репутации: 5
Пётр писал(а):
Должно быть

Ну да, ты так и писал тогда( я таки нашёл ту тему), а вот откуда взялась константа, теперь уж не узнать.

Сталекс, звиняй :oops:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Языковый тренажер
СообщениеДобавлено: Пн июн 27, 2016 5:59 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
newJS писал(а):
Пётр писал(а):
Должно быть

Ну да, ты так и писал тогда( я таки нашёл ту тему), а вот откуда взялась константа, теперь уж не узнать.
Сталекс, звиняй :oops:

И ещё забыл про костыль в виде цикла!
Пётр писал(а):
For i=1 To 10
Repeat:Until WindowEvent()=0
Next

А без костыля эта конструкция не работает.
Почему именно 10, а не 5 или 25? От шустрости компьютера или есть научное обоснование? :D

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Языковый тренажер
СообщениеДобавлено: Пн июн 27, 2016 9:44 am 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Пн июн 13, 2016 11:46 am
Сообщений: 30
Откуда: Самарская обл
Благодарил (а): 10 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
qpAHToMAS писал(а):
Да не надо вообще такой дикий Delay в 5000 юзать.
Главный цикл программы/игры должен всегда крутиться, причём не с максимальной скоростью, которую позволит CPU, а с ограниченным FPS.
Вот и начни для начала с создания такого цикла, который будет обновлять изображение 60 раз в секунду, не больше, и не меньше.
А уже потом делай события, причём не через таймеры, а через ту же логику цикла, с применением ElapsedMilliseconds.

Спасибо! Столько сразу информации, но и вопросы сразу возникают.
1. Delay - плохая функция? Нагружает процессор, поэтому ее лучше не использовать?
2. Обновление изображения 60 раз в секунду - это значит в начале программы написать SetFrameRate(60) и все?
3. Почитал про ElapsedMilliseconds, но там в цикле все-равно Delay используется, в чем тогда разница будет?
Пожалуйста, не обижайтесь, если мои вопросы глупы.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Языковый тренажер
СообщениеДобавлено: Пн июн 27, 2016 10:30 am 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
qpAHToMAS писал(а):
60 раз в секунду, не больше, и не меньше.
А уже потом делай события, причём не через таймеры, а через ту же логику цикла, с применением ElapsedMilliseconds.

Вздор!
К чему нужен ElapsedMilliseconds если главный цикл работает 60 раз в секунду?
Пример простого таймера без всяких ElapsedMilliseconds и прочего лишнего:
Код:
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
 
InitSprite():InitKeyboard():InitSound():OpenWindow(0,0,0,800,600,"gama",13107201)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600)
 
;-Корабль
CreateSprite(0,100,75,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(0))
Box(0,0,100,75,0)
RoundBox(0,0,100,25,20,20,$00ff00)
RoundBox(0,50,100,25,20,20,$00ff00)
Box(40,25,20,25,$00ffcc)
Box(20,32,70,10,$00ff00)
Circle(92,37,7,$00ff00)
Circle(85,8,7,$FFCCFF)
StopDrawing()
TransparentSpriteColor(0,0)
 
SetFrameRate(60)
Repeat:
 
  FlipBuffers():
  ClearScreen(0)
  ExamineKeyboard():
  ; Счет времени игры
  If x<60
    x+1
  Else
    S+1
    Debug "Прошло секунд = " + S
    x=0
  EndIf
 
 DisplayTransparentSprite(0,20,200)
Repeat:Until WindowEvent()=0
Until KeyboardReleased(1)


_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Языковый тренажер
СообщениеДобавлено: Вт июн 28, 2016 5:59 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 578
Благодарил (а): 60 раз.
Поблагодарили: 18 раз.
Пункты репутации: 5
kvitaliy писал(а):
А без костыля эта конструкция не работает.

Да не нужен этот цЫкл, всё работает и без него, скорей всего это описЬка, спешка...

вот она, та тема


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Языковый тренажер
СообщениеДобавлено: Вт июн 28, 2016 7:20 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2270
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
kvitaliy писал(а):
qpAHToMAS писал(а):
60 раз в секунду, не больше, и не меньше.
А уже потом делай события, причём не через таймеры, а через ту же логику цикла, с применением ElapsedMilliseconds.

Вздор!
К чему нужен ElapsedMilliseconds если главный цикл работает 60 раз в секунду?
Пример простого таймера без всяких ElapsedMilliseconds и прочего лишнего:
Код:
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
 
InitSprite():InitKeyboard():InitSound():OpenWindow(0,0,0,800,600,"gama",13107201)
OpenWindowedScreen(WindowID(0), 0, 0, 800, 600)
 
;-Корабль
CreateSprite(0,100,75,#PB_Sprite_AlphaBlending)
StartDrawing(SpriteOutput(0))
Box(0,0,100,75,0)
RoundBox(0,0,100,25,20,20,$00ff00)
RoundBox(0,50,100,25,20,20,$00ff00)
Box(40,25,20,25,$00ffcc)
Box(20,32,70,10,$00ff00)
Circle(92,37,7,$00ff00)
Circle(85,8,7,$FFCCFF)
StopDrawing()
TransparentSpriteColor(0,0)
 
SetFrameRate(60)
Repeat:
 
  FlipBuffers():
  ClearScreen(0)
  ExamineKeyboard():
  ; Счет времени игры
  If x<60
    x+1
  Else
    S+1
    Debug "Прошло секунд = " + S
    x=0
  EndIf
 
 DisplayTransparentSprite(0,20,200)
Repeat:Until WindowEvent()=0
Until KeyboardReleased(1)


Я писал с расчётом на то, что автор кодит в CanvasGadget()/ImageGadet().
В случае с граф. движком (код выше) действительно хватит SetFrameRate().

Сталекс писал(а):
qpAHToMAS писал(а):
Да не надо вообще такой дикий Delay в 5000 юзать.
Главный цикл программы/игры должен всегда крутиться, причём не с максимальной скоростью, которую позволит CPU, а с ограниченным FPS.
Вот и начни для начала с создания такого цикла, который будет обновлять изображение 60 раз в секунду, не больше, и не меньше.
А уже потом делай события, причём не через таймеры, а через ту же логику цикла, с применением ElapsedMilliseconds.

Спасибо! Столько сразу информации, но и вопросы сразу возникают.
1. Delay - плохая функция? Нагружает процессор, поэтому ее лучше не использовать?
2. Обновление изображения 60 раз в секунду - это значит в начале программы написать SetFrameRate(60) и все?
3. Почитал про ElapsedMilliseconds, но там в цикле все-равно Delay используется, в чем тогда разница будет?
Пожалуйста, не обижайтесь, если мои вопросы глупы.

Delay -- не плохо, оно просто полностью ставит на паузу выполнение кода.
SetFrameRate(60) -- достаточно, для ограничения по FPS в игре.
Но опять же, при создании полноценной игры, для того, чтобы рулить временем в игре (события всякие и т.д.), то лучше использовать расчёты с применением ElapsedMilliseconds, иначе эти действия во времени будут зависить от FPS игры.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Языковый тренажер
СообщениеДобавлено: Вс июл 03, 2016 12:50 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Пн июн 13, 2016 11:46 am
Сообщений: 30
Откуда: Самарская обл
Благодарил (а): 10 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Не написал еще и половины игры, но исчерпал лимит количества строк демо-версии. Написание нескольких команд в одной строке помогут мало, т.к. впереди еще громадный объем кода. Финита ля комедия? :cry:


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Языковый тренажер
СообщениеДобавлено: Вс июл 03, 2016 1:21 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Сталекс писал(а):
Финита ля комедия? :cry:

Если религия позволяет, то скачать с трекера полную но слегка не новую версию сейчас не проблема .Светилась и почти свежая версия бета на ru-board.com
Если такой вариант не подходит, то всегда можно купить на оф. сайте. Ваш KO :D

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Языковый тренажер
СообщениеДобавлено: Вс июл 03, 2016 1:50 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Пн июн 13, 2016 11:46 am
Сообщений: 30
Откуда: Самарская обл
Благодарил (а): 10 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
kvitaliy писал(а):
Если религия позволяет, то скачать с трекера полную но слегка не новую версию сейчас не проблема .Светилась и почти свежая версия бета на ru-board.com
Если такой вариант не подходит, то всегда можно купить на оф. сайте. Ваш KO :D


Моя религия мне много чего позволяет))) Но я начинающий, поэтому будет много ошибок. А когда будет работать поломанная версия, то при любой ошибке возникает мысль - "а вдруг причина в том, что версия не настоящая". А купить за 5000 руб себе игрушку (я ведь не профи, денег делать на нем не буду) - этого мне мой кошелек не позволяет. Когда начинал писать игру, долго думал, какой язык выбрать, склонился к РВ, думал 800 строк хватит, но только на вывод текста ресурсов много тратится:
Код:
1
2
3
4
5
6
7
8
9
10
11
StartDrawing(ScreenOutput())
    DrawingMode(#PB_2DDrawing_Transparent)
    DrawingFont(FontID(#Font))
    DrawText(20,100,"Iru for, uzurpulo!",RGB(255,100,50))
    DrawText(20,125,"Ĉu vi min komprenis?",RGB(255,100,50))
    StopDrawing()
    StartDrawing(ScreenOutput())
    DrawingMode(#PB_2DDrawing_Transparent)
    DrawText(0,560,"Вы не "+s+"! "+s+" уже в клубе!")
    DrawText(0,580,"Пошёл прочь, самозванец! Понял?")
    StopDrawing()


Столько кода для 4-х предложений!
Наверно, буду пробовать PascalABC.NET. Бесплатно да отечественного производителя поддержу))


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Языковый тренажер
СообщениеДобавлено: Вс июл 03, 2016 2:04 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2270
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
Цитата:
при любой ошибке возникает мысль - "а вдруг причина в том, что версия не настоящая"

Никогда такого не было и вряд ли будет.

А на демо рассчитывать не стоило, ведь слово "демо" говорит само за себя :).

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Языковый тренажер
СообщениеДобавлено: Вс июл 03, 2016 2:10 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11108
Благодарил (а): 4 раз.
Поблагодарили: 395 раз.
Сталекс писал(а):
А когда будет работать поломанная версия, то при любой ошибке возникает мысль - "а вдруг причина в том, что версия не настоящая".
Если PB в виде инсталлятора, а не архива с файлами, то 99.99% что это не ломаная версия.

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Языковый тренажер
СообщениеДобавлено: Вс июл 03, 2016 2:17 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Пн июн 13, 2016 11:46 am
Сообщений: 30
Откуда: Самарская обл
Благодарил (а): 10 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
qpAHToMAS писал(а):
А на демо рассчитывать не стоило, ведь слово "демо" говорит само за себя :).

Ну да, винить некого! Был предупрежден! Обидно, что только-только привыкать стал, что-то получаться начало. Но, ничего, лишних знаний не бывает, время потрачено не зря!
Спасибо всем, кто мне помогал! Желаю удачи!


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Языковый тренажер
СообщениеДобавлено: Вс июл 03, 2016 8:58 pm 
Не в сети
МОДЕРАТОР

Зарегистрирован: Вт дек 05, 2006 8:46 am
Сообщений: 6246
Благодарил (а): 17 раз.
Поблагодарили: 182 раз.
Пункты репутации: 48
Комп дело хорошее, но великоват для такого рода программ.
Я бы на твоем месте написал подобную программу под Андроид ( и Айфрн как вариант)- смартфоны и планшеты сейчас очень популярны. Да и удобнее язык изучать с портативного устройства, пока в дороге, например.
Инструментов сейчас для написания под эту платформу навалом, наверно уже нет школьника, который под Андроид игрушку не написал :D
Опять же если вдруг народу понравится, то можно и чуток за свой труд денег получить на рекламе.

_________________
read-only


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Языковый тренажер
СообщениеДобавлено: Вс июл 03, 2016 9:41 pm 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Пн июн 13, 2016 11:46 am
Сообщений: 30
Откуда: Самарская обл
Благодарил (а): 10 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
О, спасибо за совет! Я такой вариант что-т даже и не рассматривал. Надо будет присмотреться, но там вообще какой-то свой язык программирования? А я только основы Бейсика и Паскаля знаю. Денег вряд ли срубить можно, не тот склад характера у меня, но сам процесс интересен. И на планшете кодить - жуткая же история, хотя может быть и на стац.компе можно для него писать? Я в этом направлении совсем ничего не знаю, надо будет почитать.

Порылся вчера вечером в инет по-поводу Андроида , только все мозги заплел. Инфы море, но как и в море - в основном все вода))) А форумах, как всегда, вместо ответа на вопрос начинают объяснять, какой ты тупой. А на одном отчитали за то, что задаю такие вопросы (мол, этот вопрос уже задавали) и дали ссылку - ну да, такой вопрос был на форуме (как, на чем и с чего начинать программировать для Андроида), но в 2009 году! Что, с тех пор ничего не изменилось? У вас форум вот в этом отношении лучше - хоть и ворчат некоторые, но ответ все же дают)). Времени мало, всего 2-3 в день бывает свободными, а этого и на изучение эсперанто, и на изучение программирования, и на написание игры явно мало. Поэтому пока буду работать с Паскалем, я там хоть не полный нуль, а знакомство с Андроидом отложу на потом. Дело в том, что я в селе живу, хоть и не совсем глухом, но таких школьников, о которых вы писали, здесь не водится. Самые крутые только и умеют, что Винду переустановить (а учительница информатики и этого не умеет))), так что я самый первый парень (зачеркнуто) программист на деревне))). Ну ладно, не буду отвлекать занятых людей своим нытьем!


Последний раз редактировалось Сталекс Пн июл 04, 2016 12:33 pm, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 68 ]  На страницу Пред.  1, 2, 3, 4, 5  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB