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

PureBasic

13.03.2009, 15:00. Показов 235567. Ответов 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 Кб, 2365 просмотров)
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
04.10.2010, 16:32  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от aristov-96 Посмотреть сообщение
программу вложить найти не могу с кейгеном
Скинул в личку
2
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
04.10.2010, 17:39
слушай вот у тебя всё нормально запускается с музыка там но вот у меня когда я к своим файлам код вставляю ругается на
PureBasic
1
CreateSprite(7,SpriteWidth(5), SpriteHeight(5))
хотя я даже мелодию твою оставил все картинки там кнопки у меня присутствуют и вообще что эта команда значит?

Добавлено через 29 минут
я кажется понял там не запускается потому что кнопка не подходит(которая не выход а кнопка1) просто я заменял по 1 на свои файлы и там после этой кнопки ошибка просто она у меня большая))
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
04.10.2010, 17:40  [ТС]
Цитата Сообщение от aristov-96 Посмотреть сообщение
когда я к своим файлам код вставляю ругается на
Рисунки имеют расширение BMP или другое?
Файл исходного текста тот, что был в архиве или был создан новый и в него скопирован код?
Дело в том, что конфигурация проета этой программы, отличается от стандартной.
Используется подсистема DirectX 7 и временный исполняемый файл, при запуске из среды, создается в папке с исходным текстом.

Цитата Сообщение от aristov-96 Посмотреть сообщение
эта команда значит
Эта команда создаёт пустой спрайт, которому приваивается идентификатор 7. Размеры (ширина и высота) создаваемого спрайта, такие-же как и у спрайта с инентификатором 5.

Более подробное описание можно найти в справке.
Для этого, нужнго открыть редактор кода. Поместить текстовый курсор на интерисующую команду и нажать на F1 на клавиатуре. Откроется справка с описанием этой команды.
Миниатюры
PureBasic   PureBasic  
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
04.10.2010, 18:38
Цитата Сообщение от aristov-96 Посмотреть сообщение
я кажется понял там не запускается потому что кнопка не подходит(которая не выход а кнопка1) просто я заменял по 1 на свои файлы и там после этой кнопки ошибка просто она у меня большая))
конечно спасибо большое но мог не утруждать себя всё это писать видимо циферка 7 повлияла просто у меня кнопка длинная была вот он и ругался щас всё норм)

Добавлено через 23 минуты
слушай тут вот
PureBasic
1
2
3
4
5
6
If SpriteCollision(0, MX, MY, 4, 950, 1) = 1 ; Курсор мышки на спрайте-кнопке
       If MouseButton(#PB_MouseButton_Left)=1 ; Нажата левая кнопка мышки
       if LoadMovie(1, ProgPath+"click3.WAV") = 0 End ; Загрузка музыки    
             end ; завершение работы проги
         EndIf
              EndIf
я при нажатии воспроизвожу щелчок а у меня из проги не выходит а только щелчок играет(
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
04.10.2010, 19:06  [ТС]
По идее, компилятор должен ругаться на эту строку
Code
1
IF LoadMovie(1, ProgPath+"click3.WAV") = 0 END
Наверное имелось в виду что-то типа этого
Code
1
If LoadMovie(1, ProgPath+"click3.WAV") = 0 : End : EndIf
Функция LoadMovie только загружает, а воспроизводит функция PlayMovie.
Кроме того, идентификатор 1 используется для проигрывания фоновой музыки, поэтому нужно использовать любой другой еше не задействованый в программе, скажем 2
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
04.10.2010, 19:12
слушай в чём здесь
PureBasic
1
         LoadMovie(2, ProgPath+"click3.WAV") = 0  ; Загрузка музыки
syntax error?
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
04.10.2010, 19:28  [ТС]
= 0
Не нужно в данном случае, ведь нет проверки выполнения условия - отсутствует оператор If
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
04.10.2010, 19:33
а ну да) забыл) слушай а в PlayMovie в скобочках что писать(это когда музыку воспроизводим и в StopMovie тоже не знаю
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
04.10.2010, 19:59  [ТС]
Первый аргумент PlayMovie тот идентификатор, который был укзан в функции LoadMovie, а второй аргумент - идентификатор окна, к которому будет привязана функция, в данном случае, нужно использовать функцию ScreenID Такие заморочки нужы из-за того, что на самом деле, эти функции предназначены для воспроизведения видео (вот для этого нужен ИД окна, на котором будет отображатся видео), но они не плохо работают с GIF анимацией и аудио.
В функции StopMovie нужно указать инедификатор, который был укзан в функции LoadMovie
Громкость регулируется функцией MovieAudio

То есть возспроизведение включается так
Code
1
PlayMovie(2, ScreenID() )
а прекращается так
Code
1
StopMovie(2)
Добавлено через 10 минут
Но если предполагается проиграть короткий wav файл, то это можно сделать так
PureBasic
1
2
PlayFile.s=ProgPath+"click3.WAV"
PlaySound_(PlayFile, 0, #SND_FILENAME|#SND_NODEFAULT)
Но нужно учитывать что программа повиснет в функции PlaySound до тех пор, пока не закончится воспроизведение файла!
1
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
04.10.2010, 21:10
Хороший топик! Если то что хочу реализовать на bb не получится(там асма нету), переползу на pb.
Пока интересуют следующие вопросы:
1) есть ли библиотеки/функции для спрайтовой анимации и передаче по TCP/IP в пределах лок.сети?
2) можно ли непосредственно обращаться с асма к двухмерным массивам данных? Насколько это продуктивно?
3) можно ли создавать на pb библиотеки для других языков, с dll я ещё не работал, не знаю что к чему.
1
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
04.10.2010, 21:34  [ТС]
Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
есть ли библиотеки/функции для спрайтовой анимации
Выше есть код с анимированым курсором
https://www.cyberforum.ru/basi... ost1000968


Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
TCP/IP в пределах лок.сети
Вот описание функций http://purebasic.com/documenta... index.html
Можно создавть инет-сервер и инет-клиент.
Поддерживается как TCP, так и UDP.


Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
2) можно ли непосредственно обращаться с асма к двухмерным массивам данных? Насколько это продуктивно?
Вот пример, правда, там одномерный массив Как увеличить максимальный размер массива?
А продуктивность зависит от программиста, насколько он умело сможет использовать возможности асма.

Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
) можно ли создавать на pb библиотеки для других языков, с dll я ещё не работал, не знаю что к чему.
Можно http://pure-basic.narod.ru/docs/dll.html
2
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
04.10.2010, 22:35
>Выше есть код с анимированым курсором
Ага видел...

>А продуктивность зависит от программиста, насколько он умело сможет использовать возможности асма.
Ну это понятно, у меня наверное фобия на проверку аппаратной продуктивности процессора, последний раз кодил давно и под досом, винде не доверяю в плане выделения памяти и работы с оной.

>Можно создавть инет-сервер и инет-клиент.
Отлично...

Про dll понял, вообщем, поразмыслил, думаю если сильно будет тормозить, перепишу некоторые функции в pb(надо его ещё освоить хоть как) и загоню их в dll, bb эту дллку схавает надеюсь(правда там через одно место работа с dll, ну это уже мелочи).
Короче спасибо PB, всё что я хотел узнал. До того как ты написал ту прогу с натуальными числами, полагал что си неизбежен, теперь радуюсь, проще на pb перепрыгнуть чем на си, пусть даже и синтаксис там черезчур небейсиковский.
1
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
04.10.2010, 23:41  [ТС]
Цитата Сообщение от >Quiet Snow< Посмотреть сообщение
винде не доверяю в плане выделения памяти и работы с оной
Винда просто так не позволит захватить произвольный участок памяти, процессу, работающему на 3-ем кольце безопасности, проэтому придется работать с памятью через винду.
Иначе будет исключение со всеми вытекающими!
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
05.10.2010, 16:46
слушай по идеи для новой кнопки надо
PureBasic
1
2
3
4
CatchSprite(10,?pic3)
  CatchSprite(11,?pic4)
  CreateSprite(12,SpriteWidth(2), SpriteHeight(2))
  CopySprite(10,12)
и
PureBasic
1
2
3
4
5
6
7
 If SpriteCollision(0, MX, MY, 12, 1, 300) = 0 ; Проверка нахождения курсора на спарйте=кнопка
         If ButtonGadget=1
           CopySprite(10,12) : ButtonGadget=0  ; Изменяем спрайт
         EndIf
       ElseIf ButtonGadget=0
         CopySprite(11,12) : ButtonGadget=1
       EndIf
и
PureBasic
1
2
3
4
5
If SpriteCollision(0, MX, MY, 12, 1, 300) = 1 ; Курсор мышки на спрайте-кнопке
       If MouseButton(#PB_MouseButton_Left)=1 ; Нажата левая кнопка мышки
         PlayMovie(5, ScreenID())                                          
       EndIf
     EndIf
и
PureBasic
1
DisplaySprite(12,1,300)
и
PureBasic
1
2
3
4
5
6
IncludeBinary
pic4:
   IncludeBinary "pic4.bmp"
   pic3:
   IncludeBinary "pic3.bmp"
EndDataSection
это я всё про ту же прогу)
но у меня чо то не так у меня при направлении ничего а если на другую кнопку(по выше) то загораются обе отвожу и нифига что бы погасли надо на эту кнопку направить((

Добавлено через 16 минут
Цитата Сообщение от PB Посмотреть сообщение
Там есть описание функций работы с базами данных.
слушай вот что там в примере создаёт типо профиля то есть личная база данных а что бы она в сети была что бы все видели кто запустил например у меня денвер стоит есть бд и в php на серве будет подсоединение к бд а что бы basik просто читал всё с php файла можно так?
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.10.2010, 19:23  [ТС]
Цитата Сообщение от aristov-96 Посмотреть сообщение
слушай по идеи для новой кнопки надо
Если нужно создать много кнопок, то проще написать универсальный код добавления и обработки событий для всех кнопок.

Дорботал программу.
Теперь кнопка создаётся так
Code
1
AddButton(2, 900, 10, "выход из проги_0.bmp", "выход из проги_1.bmp")
Где 2 - идентификатор создаваемой кнопки - любое число. У всех создаваемых кнопок должны быть разные идентификаторы!
900 и 10 - координаты X и Y, определяющие положение кнопки на эране.
"выход из проги_0.bmp" - рисунок, отображаемый, когда курсор мышки не на кнопке.
"выход из проги_1.bmp" - рисунок, отображаемый, когда курсор мышки находится на кнопке.


Внутри цикла программы, нужно вызывать процедуру
Code
1
ButtonEvent(MX, MY)
MX и MY - положение курсора мышки на экране

При клике по кнопке, левой, средней или правой кнопкой мышки, будет вызвана процедура
Code
1
ButtonClick(ButtonNumber, Type)
ButtonNumber - нормер кнопки, по которой кликнули. Он задаётся при создании кнопки, процедурой AddButton
Type - идентифицирует тип клика (левая, средняя или правая кнопка мышки)

слушай вот что там в примере создаёт типо профиля то есть личная база данных а что бы она в сети была что бы все видели кто запустил например у меня денвер стоит есть бд и в php на серве будет подсоединение к бд а что бы basik просто читал всё с php файла можно так?
Думаю что да, но сам я такого пока не делал.
Вложения
Тип файла: rar Anim2.rar (35.0 Кб, 76 просмотров)
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
05.10.2010, 20:33
ух ты это вообще удобно и классно)

Добавлено через 40 минут
слушай у меня на Beep ругается

ну вот вообщем)
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
05.10.2010, 20:44  [ТС]
Beep это WinAPI функция, а в демо версии PureBasic, нет поддержки API. Их приходится вручную объявлять.
В нашем случае, Beep используется только для того, чтобы показать что кнопка работает и ее можно исключить из программы.
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
06.10.2010, 15:37
If LoadMovie(2, ProgPath+"Click3.wav") = 0

ну а это что ещё за фигня?(
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
06.10.2010, 15:55  [ТС]
Цитата Сообщение от aristov-96 Посмотреть сообщение
ну а это что ещё за фигня?(
Компилятор сообщает в место строковой перменной использована числовая.
Наиболее вероятная причита в том, что строка
Code
1
If LoadMovie(2, ProgPath+"Click3.wav") = 0
находится выше по тексту, по отношению к строке
Code
1
ProgPath.s=GetPathPart(ProgramFilename()) ; Определяем путь к папке, из которой запущена программа
в которой объявляется переменная ProgPath, имеющая строковой тип (на что указывает префикс .s).
Либо, та строка, находится внутри процедуры, а все переменные в процедуре, являются локальными.
Наилучший выход, перенести строку
Code
1
ProgPath.s=GetPathPart(ProgramFilename()) ; Определяем путь к папке, из которой запущена программа
в самый верх программы и сделать переменную ProgPath глобальной
Code
1
Global ProgPath.s=GetPathPart(ProgramFilename()) ; Определяем путь к папке, из которой запущена программа
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
06.10.2010, 16:26
слушай а вот в твоей программе что и где нужно добавить для новой кнопки?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.10.2010, 16:26
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
60
Закрытая тема Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru