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

PureBasic

13.03.2009, 15:00. Показов 200850. Ответов 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 Кб, 2268 просмотров)
9
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.03.2009, 15:00
Ответы с готовыми решениями:

PureBasic 4.60
Пару дней назад вышла версия 4.60. Демо версии можно скачать на официальном сайте...

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

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

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

1214
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
03.10.2010, 17:06 21
ха прикольно!! ваще спасибо большое но я немножко не про это я про то что просто курсор будет моим я сам назначаю а на фоне будет моя анимация(то есть полно экранный режим анимация на фоне пользовательский курсор - 3 нужных пункта)

Добавлено через 16 минут
Цитата Сообщение от PB Посмотреть сообщение
Высказывайте выше мнение об PureBasic
из языков программирования PureBasic для меня самый интересный буду его изучать)
0
PB
Просто прогер
1286 / 1073 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
03.10.2010, 17:40  [ТС] 22
Правильнее в этом случае, создать несколько отдельых картинок заменять их по очереди, как сделано с курсором.
Но можно использовать туже, GIF анимацию или даже использовать видео.

Вот пример.
После запуска проги, нужно укзать путь к GIF или AVI файлу
Вложения
Тип файла: rar OpenScreen.rar (30.4 Кб, 101 просмотров)
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
03.10.2010, 18:19 23
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0 Or InitMovie() = 0
  MessageRequester("", "Ошибка инициализации библиотек")
  End
EndIf
 
If LoadMovie(0, GetPathPart(ProgramFilename())+"abc.gif")
    OpenWindow(0, 100, 150, MovieWidth(0), MovieHeight(0), "Progamm", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
    PlayMovie(0, WindowID(0))
         OpenScreen(1024,768,16,"")
Else
  MessageRequester("Error", "Нет рисунка", 0)
    EndIf           
 
LoadFont(0,"Arial", 30) ; Загрузка шрифта "Arial" с размером 30. Ему присваивается идентификатр 0
 
If OpenScreen(1024,768,16,"") ; Переход в полноэкранный ражим, с параметрами 1024х768, 16 бит
  SetFrameRate(60)
  MouseLocate(1024/2, 768/2) ; Расположение курсора мышки в середине экрана
  TransparentSpriteColor(-1,RGB(255,0,255))
  CatchSprite(0,?Cursor)
  CreateSprite(1,MovieWidth(0), MovieHeight(0))
  PlayMovie(0,#PB_Movie_Rendered)
  ;RenderMovieFrame(0, SpriteID(1))
  AnimStep=0
  Repeat ; Главный цикл программы
    AnimStep+1
    ClearScreen(RGB(57, 123, 65)) ; Очитска экрана, заполнением его темно-зеленым цветом
    RenderMovieFrame(0, SpriteID(1))
    DisplaySprite(1,20,20)
      
    If StartDrawing(ScreenOutput()) ; Начало рисования по экрану
      DrawingFont(FontID(0))        ; Используемый шрифт
      DrawingMode(#PB_2DDrawing_Transparent) ; При рисовании, будет прозрачный фон у надписи
      DrawText(140,300,"Для завершения работы программы,", RGB(255, 255, 255))
      DrawText(200,350,"нажмите на кнопку Esc", RGB(255, 255, 255))
      StopDrawing() ; Завершение рисования
    EndIf
    
     ExamineMouse() ; Опрос состояния мышки
    
     MX=MouseX()  ; Текущие координаты мышки
     MY=MouseY()
     
     If (MX <> MX_Old Or MY <> MY_Old) And AnimStep>=6 ; Координаты мышки изменились, нужно произмести анимацию курсора
       SonicWalk3+1
       If SonicWalk3>7:SonicWalk3=0:EndIf
       
       If (MX < MX_Old+2 And SpritePos<>0) Or (MX+2 < MX_Old And SpritePos=0)
         SpritePos=320
       Else
         SpritePos=0
       EndIf
       
       MX_Old = MX
       MY_Old = MY
       AnimStep=0
     EndIf
     ClipSprite(0, SonicWalk3*40+SpritePos,0, 32, 36) ; Выбираем какую часть спрайта нужно отобразить
     DisplayTransparentSprite(0,MX,MY) ; Отображение спрайта в позиции, опередяемой координатами мышки
     
    
    FlipBuffers() ; Отображение на эуране буфера, по которому рисовали
    ExamineKeyboard() ; Опрос кнопок клавиатуры
    
  Until KeyboardPushed(#PB_Key_Escape) ; Прерывание цикла при нажатии на кнопку Esc на клавиатуре
  
Else
  MessageRequester("", "Не удалось перейти в полноэкранный режим с параметрами"+Chr(10)+"1024х768, 16 бит")
EndIf
End
 
DataSection
  Cursor:
  IncludeBinary "abc.gif" ;"sonwalk.bmp" ;"Cursor.bmp" 
EndDataSection
EndIf
смотри тут по идеи я открываю анимацию но когда запускаю пишет что типо программа завершена
Вложения
Тип файла: zip Архив ZIP - WinRAR.zip (12.7 Кб, 72 просмотров)
0
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
03.10.2010, 18:20 24
у тебя всё правильно просто я хотел бы что бы сразу анимация без выбора)
0
PB
Просто прогер
1286 / 1073 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
03.10.2010, 18:47  [ТС] 25
Это не нужно
Код
    OpenWindow(0, 100, 150, MovieWidth(0), MovieHeight(0), "Progamm", #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
    PlayMovie(0, WindowID(0))
         OpenScreen(1024,768,16,"")
Вложения
Тип файла: rar Anim.rar (7.3 Кб, 90 просмотров)
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
03.10.2010, 19:00 26
ну вот блин а щас без курсора((((((((
0
PB
Просто прогер
1286 / 1073 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
03.10.2010, 19:03  [ТС] 27
А разве там был рисунок курсора?
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
03.10.2010, 19:20 28
так я его вставил там же в коде прописан соник)
0
PB
Просто прогер
1286 / 1073 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
03.10.2010, 19:21  [ТС] 29
Вот с курсором
Вложения
Тип файла: rar Anim.rar (7.6 Кб, 96 просмотров)
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
03.10.2010, 19:51 30
ага спасибо!!!

Добавлено через 17 минут
слушай у тебя в примерах есть кнопка я напрмер хочу занести её в прогу
я в проге вставляю
PureBasic
1
2
3
4
5
6
Event=WaitWindowEvent() ; Получаем идентификатор события.
  Gadget=EventGadget() ; Узнаём идентификатор активного гаджета.
   If Event=#PB_Event_Gadget And Gadget=2 ; Условие будет выполнено при щелчке по кнопке.
    MessageRequester("Сообщение","Была нажата кнопка") ; Выводим на экран сообщение.
   EndIf 
  Until Event = #PB_Event_CloseWindow ; Прерываем цикл при закрытии окна
но кнопки нету может что-то ещё надо?
0
PB
Просто прогер
1286 / 1073 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
03.10.2010, 20:00  [ТС] 31
Цитата Сообщение от aristov-96 Посмотреть сообщение
я в проге вставляю
Это в оконном или полноэкранном режиме?
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
03.10.2010, 20:02 32
вся программа в полном экране
0
PB
Просто прогер
1286 / 1073 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
03.10.2010, 20:13  [ТС] 33
Тот код только для оконного режима, т. е. для окон, созданых операционной системой.
В полноэкранном все по другому. Там надо самому создавать кнопки (скажем из спрайтов) и отслеживать клики по ним.

Добавлено через 8 минут
Но если использовать 3D движок, то можно создавать окна в полноэкранном режиме.
В папке с примерами, входящими в дистрибутив есть файл Window3D.pb
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
03.10.2010, 20:31 34
блин ну можно же как-нибудь по другому сделать например по сложнее сделать так что бы просто надпись была и просто если нажал кнопку(на мышке) в нужно диапазоне координат(вокруг надписи) то идут уже следующие действия можно как-то так?

Добавлено через 8 минут
слушай ещё кое-что вот тут
PureBasic
1
    ClearScreen(RGB(57, 123, 65)) ; Очитска экрана, заполнением его темно-зеленым цветом
тёмно-зелёный а как сделать белый?
0
PB
Просто прогер
1286 / 1073 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
03.10.2010, 21:02  [ТС] 35
Цитата Сообщение от aristov-96 Посмотреть сообщение
тёмно-зелёный а как сделать белый?
ClearScreen(RGB(255, 255, 255))
В меню "Инстументы", есть пункт "Создать цвет".



Цитата Сообщение от aristov-96 Посмотреть сообщение
бы просто надпись была и просто если нажал кнопку(на мышке) в нужно диапазоне координат(вокруг надписи) то идут уже следующие действия можно как-то так?
Вот пример с кнопкой, созданой из двух спрайтов
Вложения
Тип файла: rar Anim.rar (31.8 Кб, 103 просмотров)
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
04.10.2010, 13:30 36
Слушай а как сделать что бы на протяжении всё программы играла музыка а при нажатии на кнопки звуки?

Добавлено через 4 часа 33 минуты
и ещё например я хочу две кнопки добавить то я пишу
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
If InitSprite()=0 Or InitKeyboard()=0 Or InitMouse()=0 Or InitMovie() = 0
  MessageRequester("", "Ошибка инициализации библиотек")
  End
EndIf
 
If LoadMovie(0, GetPathPart(ProgramFilename())+"abc.gif") = 0
  MessageRequester("Error", "Нет рисунка", 0)
EndIf           
 
LoadFont(0,"Arial", 30) ; Загрузка шрифта "Arial" с размером 30. Ему присваивается идентификатр 0
 
If OpenScreen(1024,768,16,"") ; Переход в полноэкранный ражим, с параметрами 1024х768, 16 бит
  SetFrameRate(60)
  MouseLocate(1024/2, 768/2) ; Расположение курсора мышки в середине экрана
  TransparentSpriteColor(-1,RGB(255,0,255))
  CatchSprite(0,?Cursor)
  CatchSprite(2,?ImegeExit_1)
  CatchSprite(3,?ImegeExit_2)
  CatchSprite(4,?pic1)
  CatchSprite(5,?pic2)
  CreateSprite(4,SpriteWidth(3), SpriteHeight(3))
  CopySprite(2,4)
  
  CreateSprite(1,MovieWidth(0), MovieHeight(0))
  PlayMovie(0,#PB_Movie_Rendered)
 
  ButtonExitState=0
  ButtonGadget=0
    Repeat ; Главный цикл программы
    AnimStep+1
    ClearScreen(RGB(255, 255, 255)) ; Очитска экрана, заполнением его темно-зеленым цветом
    RenderMovieFrame(0, SpriteID(1))
    DisplaySprite(1,20,20)
      
    If StartDrawing(ScreenOutput()) ; Начало рисования по экрану
      DrawingFont(FontID(0))        ; Используемый шрифт
      DrawingMode(#PB_2DDrawing_Transparent) ; При рисовании, будет прозрачный фон у надписи
            StopDrawing() ; Завершение рисования
    EndIf
    
     ExamineMouse() ; Опрос состояния мышки
    
     MX=MouseX()  ; Текущие координаты мышки
     MY=MouseY()
     
     If MX <> MX_Old Or MY <> MY_Old; Координаты мышки изменились, нужно произмести анимацию курсора
       
       If SpriteCollision(0, MX, MY, 4, 950, 1) = 0 ; Проверка нахождения курсора на спарйте=кнопка
         If ButtonExitState=1
           CopySprite(2,4) : ButtonExitState=0  ; Изменяем спрайт
         EndIf
       ElseIf ButtonExitState=0
         CopySprite(3,4) : ButtonExitState=1
       EndIf
            
      If SpriteCollision(0, MX, MY, 4, 1, 1) = 0 ; Проверка нахождения курсора на спарйте=кнопка
         If ButtonGadget=1
           CopySprite(2,4) : ButtonGadget=0  ; Изменяем спрайт
         EndIf
       ElseIf ButtonGadget=0
         CopySprite(3,4) : ButtonGadget=1
       EndIf
       
       MX_Old = MX
       MY_Old = MY
     EndIf
     
     If SpriteCollision(0, MX, MY, 4, 950, 1) = 1 ; Курсор мышки на спрайте-кнопке
       If MouseButton(#PB_MouseButton_Left)=1 ; Нажата левая кнопка мышки
         End                                  ; завершение работы проги
       EndIf
     EndIf
     
     If SpriteCollision(0, MX, MY, 4, 1, 1) = 1 ; Курсор мышки на спрайте-кнопке
       If MouseButton(#PB_MouseButton_Left)=1 ; Нажата левая кнопка мышки
         End                                  ; завершение работы проги
       EndIf
     EndIf
           
     
     DisplaySprite(4,950,1)
     DisplayTransparentSprite(0,MX,MY) ; Отображение спрайта в позиции, опередяемой координатами мышки
     
    DisplaySprite(4,1,1)
     DisplayTransparentSprite(0,MX,MY) ; Отображение спрайта в позиции, опередяемой координатами мышки
     
    FlipBuffers() ; Отображение на эуране буфера, по которому рисовали
    ExamineKeyboard() ; Опрос кнопок клавиатуры
    
  Until KeyboardPushed(#PB_Key_Escape) ; Прерывание цикла при нажатии на кнопку Esc на клавиатуре
  
Else
  MessageRequester("", "Не удалось перейти в полноэкранный режим с параметрами"+Chr(10)+"1024х768, 16 бит")
EndIf
End
 
 DataSection
   Cursor:
   IncludeBinary "Cursor.bmp" 
   pic1:
   IncludeBinary "pic1.bmp"
   pic2:
   IncludeBinary "pic2.bmp"
   ImegeExit_1:
   IncludeBinary "выход из проги_0.bmp"
   
   ImegeExit_2:
   IncludeBinary "выход из проги_1.bmp" 
 EndDataSection
только та кнопка уже не выход пусть просто она будет (пофигу на то что там написано выход при нажатии) у меня она не появляется((
0
PB
Просто прогер
1286 / 1073 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
04.10.2010, 15:40  [ТС] 37
Цитата Сообщение от aristov-96 Посмотреть сообщение
Слушай а как сделать что бы на протяжении всё программы играла музыка
Примерно так же как с анимацией рисунка.
Загрузаем музыку (mp3, wav, midi и др.) с помощью LoadMovie и воспроизводим с помощью PlayMovie
Вложения
Тип файла: rar Anim2.rar (39.4 Кб, 105 просмотров)
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
04.10.2010, 15:53 38
а может ли pure basic подключаться к БД(Базе Данных) не знаешь?

Добавлено через 2 минуты
и где ты такие красивые кнопки берёшь))?
0
PB
Просто прогер
1286 / 1073 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
04.10.2010, 16:00  [ТС] 39
Цитата Сообщение от aristov-96 Посмотреть сообщение
а может ли pure basic подключаться к БД(Базе Данных)
Можно.
В справке, есть раздел Database. Его же можно найти в сети
Там есть описание функций работы с базами данных.


Цитата Сообщение от aristov-96 Посмотреть сообщение
где ты такие красивые кнопки берёшь
Создаю с помощью программы Web Button Menu Maker.
1
12 / 12 / 0
Регистрация: 29.08.2010
Сообщений: 613
04.10.2010, 16:24 40
можешь программу вложить найти не могу с кейгеном(
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2010, 16:24

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Закрытая тема Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.