Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.97/1078: Рейтинг темы: голосов - 1078, средняя оценка - 4.97
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502

PureBasic

13.03.2009, 15:00. Показов 239128. Ответов 1214

Студворк — интернет-сервис помощи студентам
Есть такая замечательная разновидность диалекта бейсика именуемая PureBasic.
Сайт разработчика http://www.purebasic.com/
Рускоязычное зеркало http://pbasic.spb.ru/

Как и любой другой бейсик он прост в освоении.
Заточен полностью под винду.
С его помощью можно разрабатывать консольные, окнонные (с поддержкой стиля XP) и игровые программы.
При этом не нужно знать как работает комп или искать инфу по API функциям, т. к. есть более 800 встроеных функций различного назначения, которых в большенстве случаев достаточно чтобы написать не сложную прогу. При необходимости можно использовать API (есть встроеная поддержка) или ассемблерные вставки. При необходимости можно добавить в среду дополнительные функции из внешних библиотек, большой выбор которых есть на страничке http://www.purearea.net/pb/english/userlibs.php

Вот простоейший пример программы отображающей надпись в окне
PureBasic
1
2
3
4
5
6
7
8
9
; Открываем окно
OpenWindow(1,200,250,300,50,"Заголовок окна",#PB_Window_MinimizeGadget)
CreateGadgetList(WindowID(1)) ; Создаём новый список гаджетов
TextGadget(2,80,20,180,15,"Демонстрационная программа") ;Отображаем текст
 
Repeat ; Начало главного цикла Repeat-Until
 Event=WaitWindowEvent() ; Получаем текущий идентификатор события
Until Event=#PB_Event_CloseWindow ; Прерываем цикл при попытке закрыть окно (щелчёк по крестику в заголовке окна)
End ; Завершаем работу программы
Размер скомпилированого файла всего 14КБ!

В архиве есть парочка примеров.

Высказывайте выше мнение об PureBasic
Вложения
Тип файла: rar Примеры_PB_1.rar (39.3 Кб, 2368 просмотров)
9
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.03.2009, 15:00
Ответы с готовыми решениями:

PureBasic 4.60
Пару дней назад вышла версия 4.60. Демо версии можно скачать на официальном сайте http://purebasic.com/download.php В этой версии...

Purebasic и AV
Добрый день, скажите почему Антивирусы так не любят пурик? достаточно 1 команды например rename() и все сразу детект 5 антивирусами на...

Purebasic 5.0 + html
Как использовать PB в web разработке ? Возможно ли применить его вместо JS и PHP ? Откликнитесь кто знает ответ !

1214
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
19.10.2010, 18:17  [ТС]
Студворк — интернет-сервис помощи студентам
Вызываемая процедура должна быть выше места ее вызова.

Но можно ее объявить в начале программы
PureBasic
1
Declare example()
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
19.10.2010, 18:31
да с этим я разобрался, но вылазит следующие сообщение ТОЧНО ТАК ЖЕ И С loadsprite(в процедуре)(((
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
19.10.2010, 19:11  [ТС]
В имени функции допущена ошибка. В тексте это LoadSpite
А должно быть LoadSprite
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
19.10.2010, 19:24
ой вот что значит невнимательность))) но однако когда я запускаю при щелчке по кнопке ничего не отображается(
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
19.10.2010, 19:41  [ТС]
Цитата Сообщение от aristov-96 Посмотреть сообщение
при щелчке по кнопке ничего не отображается(
А где код отображения спрайта?
Я увидел только код загрузки.
Для отображения, нужно добавить это в главный цикл программы.
PureBasic
1
2
3
If IsSprite(60)
  DisplaySprite(60,500,500)
EndIf
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
20.10.2010, 17:11
блин не выводит изображение вот глянь(процедуру вызываю в условие если файл открылся, отображаю на экран в условие если setting(0)=1 вот там ниже, пробывал множеством способов)
Вложения
Тип файла: rar Anim2.rar (3.0 Кб, 22 просмотров)
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
20.10.2010, 18:06  [ТС]
Попробуй так.
Я сам не проверял, т. к. у меня нет всех требуемых файлов.
Вложения
Тип файла: rar Anim2_8.rar (3.0 Кб, 30 просмотров)
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
20.10.2010, 19:57
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Procedure example() ; в процедуре хочу сдвигать картинку на +10, 10 раз
  LoadSprite(60, ProgPath+"abcd2.bmp")
  For e=1 To 10
    q+10
    w+10
    Delay(1000)
    Next
EndProcedure
Global e.I
q.I
     w.I
     q=1
     w=500
 If Setting(0)=1
       If IsSprite(60)
         DisplaySprite(60,q,w)
       EndIf
     EndIf
Circle(q,w,150,RGB(0, 0, 255))
программа работает нормально рисует тоже всё(круг синий всё как надо) но не двигается хотя по логике я правильно же сделал?

Добавлено через 6 минут
кстати при нажатии на кнопку ждать приходится(секунд 10) я убрал for to next вот это и всё быстро видимо неправильно что-то
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
20.10.2010, 20:10  [ТС]
Этот код
Code
1
2
3
4
5
FOR e=1 TO 10
    q+10
    w+10
    Delay(1000)
    NEXT
остановит выполнение программы на 10 секунд.
Как вариант, можно выполнить цикл в отдельном потоке
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Procedure ShiftSprite(*xx)
Shared q, w
  For e=1 To 10
    q+10
    w+10
    Delay(1000)
  Next
EndProcedure
 
Procedure example() ; в процедуре хочу сдвигать картинку на +10, 10 раз
  LoadSprite(60, ProgPath+"abcd2.bmp")
  CreateThread(@ShiftSprite(),0)
EndProcedure
Global e.I
q.I
     w.I
     q=1
     w=500
 If Setting(0)=1
       If IsSprite(60)
         DisplaySprite(60,q,w)
       EndIf
     EndIf
Circle(q,w,150,RGB(0, 0, 255))
0
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
21.10.2010, 17:23
вот смотри как я делаю
я не вызываю процедуру example а вызываю doexample вот она
PureBasic
1
2
3
4
5
6
7
8
9
10
Procedure doexample()
  For o=1 To 99999
  u=Random(1)
  Select u
    Case 0
      example()
  EndSelect  
  Delay(1)
  Next
  EndProcedure
по идеи будет постоянно рэндом делать 0 и 1 и когда будет 0 вызывается процедура, но у меня опять же программа стоит пока всё выполняется надо опять в отдельной процедуре написать?
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
21.10.2010, 18:12  [ТС]
Цитата Сообщение от aristov-96 Посмотреть сообщение
вызываю doexample вот она
Что в итоге нужно получить?

Ведь процедура example() будет создавать спрайт уничтожая предыдущий с тем-же ID и создавать параллельный поток, работающий (в течение 10 секунд) независимо от осовного.
Кстати, операционная система не сможет создать 9999 потоков, т. к. для этого, во первых, понадобится аж 10 ГБ оперативной памяти, а во вторых, есть лимит потоков для каждого приложения, и в третих, код будет сильно глючить, посколько во всех этих потоках передвигается один и тот же спрайт, точнее изменяются значения переменных, отвичающих за перемещение спрайта, но на деле он начнет двигатся после продолжения выполнения главного цикла, а это произойдёт после окончания работы процедуры doexample().

Добавлено через 5 минут
Рекомендую скачать архив исходных кодов http://www.purearea.net/pb/dow... 4-Beta.rar
И посмотреть исходные тексты в папке Games.
Нормальных игр там не много, но зато появится представление как их правильно делать.
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
21.10.2010, 19:33
тогда объясни вот это, это не то что я писал но подобное тут потоко 10 тыщ всё норм работает в архиве нет только фоновой мелодии а так всё есть
Вложения
Тип файла: rar Новая папка (6).rar (166.9 Кб, 46 просмотров)
0
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
21.10.2010, 19:36
там и передвижение картинок и всё а мне надо что бы рэндом был если там переменная равна 1 то 1 процедура если двум то другая и т.д.
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
21.10.2010, 20:31  [ТС]
Цитата Сообщение от aristov-96 Посмотреть сообщение
тут потоко 10 тыщ
Там процедура example вызывается один раз и создается один поток, а не 10 тысяч.
А в этот код
PureBasic
1
2
3
4
5
6
7
8
9
10
Procedure doexample()
  FOR o=1 TO 99999
  u=RANDOM(1)
  SELECT u
    CASE 0
      example()
  EndSelect  
  Delay(1)
  NEXT
  EndProcedure
мог вызвать процедуру example до 99999 раз и при этом было бы созданно много потоков.

PS.
Этот код явно лишний, т. к. он не используется программой
PureBasic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  IncludeBinary "abcd.bmp"
  IncludeBinary "abcd2.bmp"
  IncludeBinary "abcd1.bmp"
  IncludeBinary "click3.WAV"
  IncludeBinary "выход из проги_0.bmp"
  IncludeBinary "выход из проги_1.bmp"
  IncludeBinary "pic1.bmp"
  IncludeBinary "pic2.bmp"
  IncludeBinary "pic16.bmp"
  IncludeBinary "pic17.bmp"
  IncludeBinary "pic20.bmp"
  IncludeBinary "pic21.bmp"
  IncludeBinary "pic22.bmp"
  IncludeBinary "pic23.bmp"
  IncludeBinary "pic24.bmp"
  IncludeBinary "pic25.bmp"
  IncludeBinary "Profile1.ini"
Оператор IncludeBinary предназначен для включения различных файлов в тело исполняемого файла на этапе компиляции.
Это может потребоватся в том случае, если нужно чтобы программа состояла из одного исполняемого файла и не требовала для своерй работы других фалов.
В данной программе, файлы будут включены в исполняемый файл, но они никак не используются, а только увеличивают размер программы.
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
22.10.2010, 18:56
слушай мне надо сделать условие если ни 1 кнопка не нажата то делать 1 процедуру если клавиша W нажата то постоянно пока не отпустишь делал процедуру другую, а там уже аналогично сделаю остальные клавишь
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
22.10.2010, 19:33  [ТС]
Цитата Сообщение от aristov-96 Посмотреть сообщение
если ни 1 кнопка не нажата то делать 1 процедуру если клавиша W нажата то постоянно пока не отпустишь
Это про клавиатуру?

Добавлено через 12 минут
В целом это делается так:

В главном цикле есть функция ExamineKeyboard.
После ее вызова, нужно вставить этот код
PureBasic
1
2
3
4
5
If KeyboardPushed(#PB_Key_All) = 0
  ; Тут код, который нужно выполнить если ниодна кнопка на клавиатуре не нажата
ElseIf KeyboardPushed(#PB_Key_W) = 1
  ; Тут код, который нужно выполнить при нажатии на кнопку W
endif
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
22.10.2010, 19:59
блин ничего не понимаю раньше когда я нажимал на кнопку + рядом с характеристикам +3 можно было прибавлять на 1 уровне(записывал в файл всё как надо) если 3 раза прибавил удалял кнопки + а сейчас хоть сколько можно прибавлять хоть на 100 но при перезапуске он уже видит что быольше нельзя кнопки убирает почему сразу не уберёт???
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
22.10.2010, 20:06  [ТС]
Цитата Сообщение от aristov-96 Посмотреть сообщение
почему сразу не уберёт
Компьютер лишь выполняет программу.
Значит нужно искать причину с программе. Наверняка где-то нет требуемой проверки условия.
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
23.10.2010, 18:17
Так вот именно всё проверил всё как было раньше ничего не изменилось

Добавлено через 21 час 34 минуты
я с этой темы скачал свой архив где нет процедуры движения и всё норм дописать не долго)

Добавлено через 16 минут
слушай
PureBasic
1
2
3
4
5
6
7
8
9
10
11
Procedure example()
  LoadSprite(60, ProgPath+"abcd2.bmp")
  doexample()
EndProcedure
 
Procedure doexample()
  If KeyboardPushed(#PB_Key_W) = 1
    q1+10
    q2+10
    EndIf
  EndProcedure
я хочу с каждым нажатием кнопки W сдвигалась картинка на 10 пикс вниз и вперёд почему не работает? видимо не проверяет постоянно нажата ли кнопка, 1 раз выполнил процедуру и закончил с ней, так?
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
23.10.2010, 18:40  [ТС]
Смотря как и откуда вызывается процедура example.
Если она вызывается всего один раз, то не удивительно что не работает.
А если много раз, то появляется другой вопрос. Зачем много раз загружать один и тот же спрайт?
И ещё, функция KeyboardPushed работает в паре с ExamineKeyboard.
Это указанно в описании функции KeyboardPushed.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2010, 18:40

Возможности PureBasic
PureBasic Shaders Clothes Simulation Physics Демонстрация тестовой версии игры Домино3D Онлайн Демо Версия Меню SDP...

Изучать ли purebasic?
Здравствуйте. У меня такие цели, подскажите пожалуйста подойдет ли purebasic для них: 1. создание оконных приложений на только windows,...

Литература по PureBasic
Небольшая подборка учебников и обучающих материалов на русском. Она будет полезна тем, кто только начинает изучать язык PureBasic.

Из vbs в purebasic
Если есть, кто может помочь с переводом из vbs в purebasic, то просьба помочь. Нужно перевести код из скрипта vbs в код purebasic. Код...

Sound в PureBasic
Приветствую всех. Когда-то, очень давно, на cyberforum была моя тема о выборе бейсика для написания звуковой игры. Для информации: ...


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

Или воспользуйтесь поиском по форуму:
160
Закрытая тема Создать тему
Новые блоги и статьи
сукцессия 6. Питон реализация энилоджиковской модели, картинка про Центральную часть будущей модели
anaschu 26.06.2026
Етить. ИИ мне на основе моего старого файла R создал вот эту вот хмерь на пайтоне. Это уже новая модель, модель сукцессии грибной. потоки фосфора, азота. Углерода. 5 видов организмов. Я даже. . .
Как замкнутый ядерный цикл решит проблему недостатки фосфора? Био миграция фосфора со дна океана
anaschu 26.06.2026
Биологический лифт: Концепция подъема фосфора со дна океана с помощью ЗЯТЦ Предлагаю на обсуждение альтернативу тяжелому промышленному бурению океанического дна. Вместо сложной инженерии мы можем. . .
сукцессия 5
anaschu 26.06.2026
ПЛАН РАЗРАБОТКИ математической модели сукцессии микоризных систем Переход AM → EcM (Endo + ErM) · Шумилов А. С. · ИФХиБПП РАН · Пущино · 2026 . . .
сукцессия 4
anaschu 25.06.2026
Более детализированный план разработки План доработки модели динамики микоризных симбиозов (EcM с гистерезисом) Цель: Реализовать логику переключения между эрикоидным (ErM) и эктомикоризным. . .
сукцессия 3
anaschu 25.06.2026
Примерный план работ по модели
сукцессия 2
anaschu 25.06.2026
параметризировочная калибровочная таблица будущей модели
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал Материалы для обсуждения с МГСУ · 2026 Рисунки внутри приложенного ворд файла. Что за. . .
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru