Понедельник, 28 Июля 2025, 16:42

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
PBPROGДата: Четверг, 07 Апреля 2011, 12:10 | Сообщение # 201 | Тема: Blitz3D для новичков
постоянный участник
Сейчас нет на сайте
Согласен с wernher - GOTO явно лишний оператор в этой программе!
Его нужно использовать лишь в крайнем случае, когда по другому получится сложнее. Но не нужно его пихать везде, даже там, где без него можно обойтись.
И кроме того, для такой задачи вполне подойдет консоль, зачем было использовать "игровой" 2D режим?

Вот мой вариант такой игры, правда на PureBasic.

Code
If OpenConsole()
   Print("Введите ваше имя:  ")
   name$=Input()
   Print("Сколько вам лет?  ")
   age=Val(Input())
   If age=0 : age=1 : EndIf
   PrintN("Ваше имя '"+name$+"', вам "+Str(age)+" лет")
    
   Repeat
     Print("Вы можете пойти в ДОМ, можете погладить КОТа  ")  ; Пишем текст  
     action$=LCase(Input())                    ;Читаем
     If     action$ = "дом"
       PrintN("Вы в доме!!!") ;Мы дома=)
     ElseIf action$ = "кот"
       PrintN("Вы погладили вашего кота и он остался довольным :)") ; Ммяяяяяяуууууууу
     Else
       MessageRequester("","Только 'дом' или 'кот'. Попробуйте сначала",48)
     EndIf
     PrintN("")
   ForEver
    
EndIf

Скомпилированная прога в месте с исходником http://depositfiles.com/files/2a83y3lvp

Скриншот

PBPROGДата: Среда, 30 Марта 2011, 18:50 | Сообщение # 202 | Тема: TubeRoll.
постоянный участник
Сейчас нет на сайте
TubeRoll.bat упакован (сжат) и кстати, он у меня не запускается!
Если он не сжат, то почему его WinRAR не сживает, а?
В распакованном виде будет примерно 16 КБ!
PBPROGДата: Среда, 30 Марта 2011, 12:14 | Сообщение # 203 | Тема: TubeRoll.
постоянный участник
Сейчас нет на сайте
Quote (-Mikle-)
сделал игру на 4 кБ размером
В упакованном виде да?
PBPROGДата: Четверг, 24 Марта 2011, 12:15 | Сообщение # 204 | Тема: Кто же пишет на VB???
постоянный участник
Сейчас нет на сайте
Какие библиотеки?
Скачайте демо-версию PureBasic и установите, а затем посмотрите что в папках PureLibraries и SubSystems.
Ознакомится с описанием всех функций этих библиотек, можно здесь (правая колонка).
Именно от них (их использования), во многом зависит размер исполняемого файла.
Но если не использовать функции этих библиотек, а юзать исключительно API, то размер будет вообще крошечным, но время разработки увеличится и пропадет кроссплатформенность кода.
PBPROGДата: Четверг, 24 Марта 2011, 10:54 | Сообщение # 205 | Тема: Кто же пишет на VB???
постоянный участник
Сейчас нет на сайте
Quote (Stage)
Уточняйте в таких случаях, что это заслуга FASM, а не вашего all inclusive языка
Это не столько заслуга FASM, сколько продуманность организации библиотек функций.
Многие библиотеки написаны на ассемблере, а это существенно повышает скорость программ и уменьшает их размер.
Кроме того, runtime всегда статически линкуется с программой. В исполняемый файл будут добавлены только реально использованные функции, а не все подряд. Это так же позволяет свести к минимуму размер исполняемого файла и гарантирует что прога будет работать на любом компе, а не ныть что нужная DLL не найдена, как это бывает с VB6.
Скажем, на PureBasic реально написать программу со статической линковкой runtime создающей окно, и имеющей размер, всего 2.5 КБ и это без каких-либо ухищрений и оптимизаций - просто написал и скомпилировал прогу.
PBPROGДата: Четверг, 24 Марта 2011, 10:43 | Сообщение # 206 | Тема: Помогите в изучении программирования!
постоянный участник
Сейчас нет на сайте
PBPROGДата: Четверг, 24 Марта 2011, 01:42 | Сообщение # 207 | Тема: Кто же пишет на VB???
постоянный участник
Сейчас нет на сайте
Quote (strade)
настало время изучить ещё один бейсик, самый крутой - VB
Ну с этим можно поспорить какой бейсик самый крутой. biggrin
PureBasic, весьма хорош и во многих моментах "сделает" VB, smile особенно если программируешь под Linux или MacOS X.
А еще, он в отличии от Microsoft Visual Basic 2008 не требует .NET, а ведь он отсутствует в чистых дистрибутивах WinXP!
На сколько мне известно, по скорости работы прог, PureBasic может лишь обойти FreeBasic, а VB плетется далеко в хвосте!
А по размеру исполняемого файла, у PureBasic кажется нет конкурентов среди бейсиков, при статической линковке runtime.


Сообщение отредактировал PBPROG - Четверг, 24 Марта 2011, 01:46
PBPROGДата: Суббота, 19 Марта 2011, 00:33 | Сообщение # 208 | Тема: Работа с ZIP архивами.
постоянный участник
Сейчас нет на сайте
Quote (Stage)
Ну какбы надо было уточнить с самого начала, что это не самостоятельный компилятор, а надстройка с синтаксисом бейсика.
Это не имеет значения. FASM всего лишь промежуточное звено в компиляции программы.

Quote (Stage)
Паскаль как язык вобще не нужен.
Под паскалем можно подразумевать так же дельфи.

Quote (Stage)
Будет кроссплатформенным исходный код, а не сама программа.
Разве я что-то писал про кроссплатформенность исполняемых файлов? Ежу понятно что в данном случае она существует на уровне исходного текста.

Quote (Stage)
А что если появится нужда заюзать системное api, не описанное в макросах пурбейсика?
Если действительно понадобится кроссплатформенность программы, юзающей системные API, то обычно используют условную компиляцию.
Здесь подробнее это этом http://pure-basic.narod.ru/docs/MultiOS.html

Quote (Stage)
Может быть полезен, когда есть необходимость быстро накатать native программу без лишнего мусора.
По вашему это редко бывает?


Сообщение отредактировал PBPROG - Суббота, 19 Марта 2011, 00:33
PBPROGДата: Среда, 16 Марта 2011, 20:25 | Сообщение # 209 | Тема: Работа с ZIP архивами.
постоянный участник
Сейчас нет на сайте
Quote (Stage)
Как вам после этого в голову пришло сравнивать скорость исполнения чистого ассемблера с vb6/vb.net?
Вы предлагаете использовать vb6/vb.net. Так?
Вот и сравнил их скорости с PureBasic.

Quote (Stage)
Я говорил не про "компилятор" пурбейсика, а про сам язык.
Как вы определяете что язык устаревший?
Если по времени его создания, то в этом случае, паскаль и Си тоже устаревшие, а ассемблер давно пора списать по выслуге лет, но по факту ведь это не так?
Так как же вы определили что язык устарел? По каким критериям?

Quote (Stage)
Ваш язык процедурный, так?
Так-то оно так, но если нужно, можно писать в ООП стиле, посредством интерфейсов.

Quote (Stage)
Что мешает выбрать fasm напрямую
То, что разработать программу на PureBasic во много раз проще чем на фасме и она к тому же будет кроссплатформенная чего сложно достичь, кодя на ассемблере.

Quote (Stage)
Про Win95 очень порадовали, кстати
Это всего лишь пример.
PBPROGДата: Среда, 16 Марта 2011, 12:11 | Сообщение # 210 | Тема: Работа с ZIP архивами.
постоянный участник
Сейчас нет на сайте
Quote (Stage)
если я хочу нативный бинарник под win почему бы не взять VB6?
Во первых, VB6 уступает в несколько раз, в скорости работы исполняемого файла.
Во вторых, в юзая VB6 придется ручками объявлять WinAPI функции, а в PureBasic они уже объявлены.
В третих, VB6 только для винды, и если захочится перенести код на Linux или MacOS X, то VB6 тут не помощник (мелкософт не поддерживает другие платформы), а вот PureBasic позволит создать проги для выше перечисленных платформ.
И к тому же, PureBasic в отличие от VB6, не использует runtime библиотеку.

Quote (Stage)
Если я хочу быстро набыдлокодить, почему бы мне не выбрать VB.NET c огромным количеством библиотек и развитым коммьюнити?
Уж поверьте, у PureBasic возможностей и библиотек не меньше! Но он позволяет создавать нативные проги даже для Win95 что VB.NET с его .NET даже и не снится!

Quote (Stage)
Какой смысл форсировать свою реализацию устаревшего бейсика
С чего вы взяли что он устаревший?
PureBasic постоянно развивается и текущий релиз 4.51 был в сентябре 2010 года.
Сначала ознакомтесь с сабжем, прежде чем писать такой бред.
PBPROGДата: Вторник, 15 Марта 2011, 10:32 | Сообщение # 211 | Тема: Работа с ZIP архивами.
постоянный участник
Сейчас нет на сайте
PureBasic не требует .NET Framework
Библиотека после установки, интегрируется со средой и ее код добавляется в исполняемый файл при компиляции. В итоге программе состоит из одного исполняемого файле не требующего runtime или .NET.
Кроме того, программа на PureBasic будет работать быстрее и требовать меньше ресурсов чем аналогичная на VB.NET, но при этом сложность создания программы не увеличится.

PS.
Что-то не могу найти пример самораспаковывающегося архива на VB.NET - гугл молчит. Может это не возможно из-за особенности технологии .NET?
А на PureBasic, ссылка на пример выше.

И кроме того, программы на PureBasic без установки дополнительных компонентов запускаются даже на древних компах, с Windows 98, а прогу на VB.NET на них не запустишь!

Сообщение отредактировал PBPROG - Вторник, 15 Марта 2011, 10:38
PBPROGДата: Вторник, 15 Марта 2011, 00:55 | Сообщение # 212 | Тема: Работа с ZIP архивами.
постоянный участник
Сейчас нет на сайте
На просторах инета нашел интересную на мой взгляд статью о работе с ZIP архивами, может еще кому будет интересна.

---------------------------------------------

Для уменьшения размера файлов, их обычно сжимают - архивируют. Существует много типов архивов, но сейчас мы поговорим о ZIP архивах.

Для работы с ZIP архивами, нужно скачать и установить библиотеку PureZIP.

Теперь создадим простейшую программу, упаковывающую один файл в архив.

Code
; Создаем архив с именем MyArchive.ZIP в корне диска C:
If PureZIP_Archive_Create("C:\MyArchive.ZIP",#APPEND_STATUS_CREATE)
    If PureZIP_Archive_Compress("C:\WINDOWS\NOTEPAD.exe",#False)=#Z_OK
      MessageRequester("","Файл успешно добавлен в архив", 64)
    Else
      MessageRequester("","Ошибка при добавлении файла в архив", 48)
    EndIf
    PureZIP_Archive_Close(); Закрываем файл архива.
Else
    MessageRequester("","Не удалось создать архив", 64)
EndIf
End

Как видите, этот код, создает архив с именем MyArchive.ZIP на диске C:. Если архив был успешно создан, то в него добавляется файл NOTEPAD.exe, расположенный в системной папке ОС. Этот архив можно открыть любым архиватором, поддерживающим работу с ZIP, например WinRAR.

Нужно отметить, в некоторых операционных системах, архив может не создастся на диске, из-за отсутствия прав доступа к диску C:, который обычно является системным диском. Если такое произошло (появилось сообщение "Не удалось создать архив"), то просто укажите другое место сохранения архива. Это же касается и добавляемого файла, к которому задан абсолютный путь. Вполне возможно что путь к системной папке окажется другим и файл NOTEPAD.exe не будет обнаружен. В этом случае, нужно указать правильный путь или выбрать другой файл для архивирования.

Теперь создадим заготовку для программы архивирования и распаковки множества файлов и папок.

Code
;- Window Constants
Enumeration
    #Window_0
EndEnumeration   
;- Gadget Constants
Enumeration
    #Text_0
    #String_0
    #Text_1
    #String_1
    #Text_2
    #Text_CurrentFiles
    #ProgressBar_FileProgress
    # Text_4
    #ProgressBar_AllProgress
    #Button_Archive
    #Button_1
    #Button_2
    #Text_5
    #String_Password
EndEnumeration
     
P rocedure Open_Window_0()
    If OpenWindow(#Window_0, 344, 256, 334, 264,"ZIP архиватор (упаковщик)",#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
        TextGadget(#Text_0, 5, 5, 320, 15,"Путь к папке с файлами:")
        StringGadget(#String_0, 5, 20, 290, 20,"",#PB_String_ReadOnly)
        TextGadget(#Text_1, 5, 55, 320, 15,"Путь к месту сохранения создаваемого архива:")
        StringGadget(#String_1, 5, 70, 290, 20,"",#PB_String_ReadOnly)
        TextGadget(#Text_2, 5, 140, 100, 15,"Обработка файла:")
        TextGadget(#Text_CurrentFiles, 105, 140, 220, 15,"")
        ProgressBarGadget(#ProgressBar_FileProgress, 5, 155, 320, 15, 0, 100,#PB_ProgressBar_Smooth)
        TextGadget(#Text_4, 5, 185, 150, 15,"Общий прогресс:")
        ProgressBarGadget(#ProgressBar_AllProgress, 5, 200, 320, 15, 0, 100,#PB_ProgressBar_Smooth)
        ButtonGadget(#Button_Archive, 80, 230, 190, 25,"Создать архив")
        ButtonGadget(#Button_1, 300, 20, 30, 20,"...")
        ButtonGadget(#Button_2, 300, 70, 30, 20,"...")
        TextGadget(#Text_5, 5, 105, 85, 15,"Пароль архива:")
        StringGadget(#String_Password, 95, 100, 200, 20,"")
    EndIf
EndProcedure
     
Procedure File_Progress(File.s, PerCent.f, UserParam.l); Отображение в окне, прогресса упаковки текущего файла
    SetGadgetText(#Text_CurrentFiles, File)
    SetGadgetState(#ProgressBar_FileProgress, PerCent)
    While WindowEvent(): Wend
EndProcedure
     
Procedure All_Progress(File.s, PerCent.f, UserParam.l); Отображение в окне, общего прогресса упаковки файлов
    SetGadgetState(#ProgressBar_AllProgress, PerCent)
    While WindowEvent(): Wend
EndProcedure
     
Procedure Button_Archive(Directory.s, File.s)
    MessageRequester("","Функция не реализована"+Chr(10)+"Это только каркас программы", 64)
EndProcedure
     
     
Open_Window_0()
PureZIP_SetCompressionCallback(@File_Progress()); Регистрация процедуры прогресса упаковки файлов
PureZIP_SetProgressionCallback(@All_Progress()); Регистрация процедуры общего прогресса упаковки
     
Repeat ; Главный цикл Repeat - Until
    Event = WaitWindowEvent(); Идентификатор события   
     
    If Event =#PB_Event_Gadget
      Select EventGadget(); Идентификатор гаджета по которому кликнули
        Case #Button_1; Кнопка выбора папки с файлами
          Path.s=PathRequester("Укажите путь к архивируемым файлам","")
          If FileSize(Path)=-2 ; Папка существует
            SetGadgetText(#String_0, Path)
          EndIf
            
        Case #Button_2; Кнопка выбора места сохранения архива
          File.s=SaveFileRequester("","","ZIP архивы|*.zip|Все файлы|*.*",0)
          If File<>""
            If GetExtensionPart(File)=""; Неуказанно расширение файла
              File+".zip"
            EndIf
            SetGadgetText(#String_1, File)
          EndIf           

        Case #Button_Archive; Кнопка создания архива
          String1.s=GetGadgetText(#String_0)
          String2.s=GetGadgetText(#String_1)
          If String1<>"" And String2<>""
            Password.s = GetGadgetText(#String_Password); Пароль архива
            PureZIP_SetArchivePassword(Password)
            Button_Archive(String1, String2)
          Else
            MessageRequester("","Заполните поля!", 48)
          EndIf          
      EndSelect     
    EndIf
        
Until Event =#PB_Event_CloseWindow

Процедура Open_Window_0 создает окно со всеми гаджетами (текстовыми надписями, полями ввода текста, кнопками, прогресс-барами и т. д.). Процедуры File_Progress и All_Progress служат для отображения текущего прогресса обработки файла и общего прогресса, соответственно. А процедура Button_Archive, вызывается при каждом клике по кнопке с надписью "Создать архив" и ей через аргументы, передаются путь к папке и файлу, находящийся в соответствующих полях окна программы. От кода данной процедуры, зависит поведение программы при клике по этой кнопке.

Программа начинает выполнятся с вызова процедуры Open_Window_0, которая создает окно со всеми гаджетами. Далее, в библиотеке PureZIP с помощью функций PureZIP_SetCompressionCallback и PureZIP_SetProgressionCallback регистрируются процедуры, отвечающие за отображения текущего прогресса обработки файла и общего прогресса архивирования. Символ @ перед именем процедуры необходим для получения указателя на процедуру, соответствующего ее первому байту кода. После чего следует главный цикл программы, код которого расположен между операторами Repeat и Until. Работа цикла прервется при закрытии окна. В цикле определяется текущее событие и если произошел клик по гаджету, (событие #PB_Event_Gadget) производится идентификация гаждета, по которому кликнули и выполнение соответствующего кода. При клике по кнопке с идентификатором #Button_Archive (с надписью "Создать архив") считываются данные со строковых полей (хранящих пути в папке и файлу) в строковые переменные с именами String1 и String2, а затем, проверяется чтобы в переменных были данные. Затем, устанавливается пароль архива при помощи функции PureZIP_SetArchivePassword. После чего вызывается процедура Button_Archive, от кода которой будут зависеть дальнейшее поведение программы. В данной версии программы, в этой процедуре находится только код, отображающий небольшое окно с сообщением что "Функция не реализована".

Теперь давайте немного изменим код процедуры Button_Archive, таким образом, чтобы программа могла создать архив из файлов выбранной папки. Замените эту процедуру вот такой:

Code
Procedure Button_Archive(Directory.s, File.s)
   If PureZIP_AddFiles(File, Directory+"*.*", #PureZIP_StorePathRelative, #PureZIP_Recursive) <> 0
      MessageRequester("", "Архив успешно создан", 64)
   Else
      MessageRequester("", "Произошла ошибка при создании архива", 16)
   EndIf
EndProcedure

Упаковывает файлы в архив, функция PureZIP_AddFiles. Ее первый аргумент - полный путь к создаваемому архиву в месте с его именем и расширением. Во втором аргументе, указан путь к папке с файлами, которые нужно упаковать в архиве. "*.*" - маска упаковки. В данном случае, будут упакованы все файлы, но при необходимости, можно задать расширение файлов, которые требуется упаковать, а остальные пропустить .Флаг #PureZIP_StorePathRelative означает что при упаковке, в архиве будет сохранен путь к файлам, относительно папки упаковки. Флаг #PureZIP_Recursive указывает упаковать не только содержимое выбранной папки, но и все имеющиеся подпапки. Учтите, данная функция не заменяет файлы в существующем архиве, а создает новые!

Теперь программа может создать ZIP архив (в т. ч. и защищенный паролем) из выбранной папки с файлами.

А теперь программно распакуем ZIP архив. Для этого немного модифицируем процедуру Button_Archive и заменим ею уже имеющуюся в программе.

Code
Procedure Button_Archive(Directory.s, File.s)
   If PureZIP_ExtractFiles(File, "*.*", Directory, #True) <> 0
     MessageRequester("", "Архив успешно распакован", 64)
   Else
     MessageRequester("", "Произошла ошибка при открытии архива", 16)
   EndIf
EndProcedure

За извлечение файлов из архива, отвечает функция PureZIP_ExtractFiles. В ее первом аргументе, указывается путь к распаковываемому архиву. Второй аргумент, задает маску распаковки, а данном случае - все файлы. Третий аргумент - папка, куда будут распакованы файлы. Ну и четвертый аргумент, указывает что при распаковке будет учитываться относительный путь, заданный при упаковке.

Скачать файлы, прилагаемые к статье.

--------------------------------------------------------------

Продолжение статьи - Создание самораспаковывающегося ZIP архива.

Сообщение отредактировал PBPROG - Вторник, 15 Марта 2011, 00:55
PBPROGДата: Вторник, 01 Марта 2011, 19:32 | Сообщение # 213 | Тема: Выбор ЯП
постоянный участник
Сейчас нет на сайте
Quote (ezhickovich)
Приведи мне тесты на которых измеряли время (ведь именно это ты подразумевал под скоростью) выполнения...

Например, вот.
Quote (ezhickovich)
КАКОЙ КОМПИЛЯТОР СИ ИСПОЛЬЗОВАЛСЯ!!!
Microsoft Visual C++ 2008
PBPROGДата: Вторник, 01 Марта 2011, 16:56 | Сообщение # 214 | Тема: Выбор ЯП
постоянный участник
Сейчас нет на сайте
[/spoiler]
PBPROGДата: Вторник, 01 Марта 2011, 16:40 | Сообщение # 215 | Тема: Выбор ЯП
постоянный участник
Сейчас нет на сайте
Quote (472zet)
Нужен простой, но эффективный ЯП.

PureBasic попробуй.
Он простой, но в тоже время, довольно мощный.
По скорости работы скомпилированных прог, не уступает Си.
Поддерживаются Windows, Linux, Mac OS X и Amiga OS. Есть компиляторы для процессоров, типа x86 (32 бита) и x64 (64 бита).
Создает компактные, нативные исполняемые файлы.
Короче, хорошая штука.


Сообщение отредактировал PBPROG - Вторник, 01 Марта 2011, 16:42
PBPROGДата: Суббота, 05 Февраля 2011, 22:26 | Сообщение # 216 | Тема: Small Basic
постоянный участник
Сейчас нет на сайте
Quote (ezhickovich)
Конечно же ситуацию спасает ПйюрБаск!?

Не обязательно.
Можно VB 2008 заюзать - .NET2 установлен на большем числе компов, чем .NET 4.

Quote (IIIypuk)
Можно вырезать некоторые библиотеки из NF4 и закинуть их в папку с exe
И скока весила папка с проектом в месте с библиотеками?


Сообщение отредактировал PBPROG - Суббота, 05 Февраля 2011, 22:27
PBPROGДата: Суббота, 05 Февраля 2011, 22:08 | Сообщение # 217 | Тема: Small Basic
постоянный участник
Сейчас нет на сайте
Quote (IIIypuk)
А с него на VB 2010
Лично меня вымораживает что проги не идут на компах без ,NET 4 (таких компов много).
PBPROGДата: Вторник, 01 Февраля 2011, 13:48 | Сообщение # 218 | Тема: Какой язык учить для простой разработки indie игр?
постоянный участник
Сейчас нет на сайте
ezhickovich
PBPROGДата: Вторник, 01 Февраля 2011, 10:10 | Сообщение # 219 | Тема: Какой язык учить для простой разработки indie игр?
постоянный участник
Сейчас нет на сайте
Попробуй не сложный язык - PureBasic.
PBPROGДата: Суббота, 08 Января 2011, 00:29 | Сообщение # 220 | Тема: На чём лучше писать серверную часть игры?
постоянный участник
Сейчас нет на сайте
Quote (nilrem)
Другой вопрос - на чем написать проще. Из тех языков, что я знаю, проще всего оказалось на С#.
Пример создания сервера на PureBasic и обработки его событий.
Code

InitNetwork()

If CreateNetworkServer(0, 80 , #PB_Network_TCP)
   Repeat
     S_Event = NetworkServerEvent()     ; Получаем тип события сервреа
     If S_Event
       ClientID = EventClient()         ; Получаем идентификатор клиента
       Select S_Event                   ; Анализируем тип события серврера
         Case #PB_NetworkEvent_Connect  ; Новый клиент подключился к серверу
            
         Case #PB_NetworkEvent_Data     ; От клинета пришли данные
            
         Case #PB_NetworkEvent_Disconnect ; Клиент разорвал соединение с сервером
            
       EndSelect       
     Else
       Delay(10)
     EndIf
   ForEver
Else
   MessageRequester("", "Ошибка создания сервера, используещего 80 порт")
EndIf
Поиск:

Все права сохранены. GcUp.ru © 2008-2025 Рейтинг