FreeBASIC マニュアルのトップに戻る

FreeBASIC ライブラリを使う

目次→教本→いっしょに学ぼうUsing Libraries←オリジナル・サイト

ライブラリを使う 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

これは QBXL Magazine で発表された記事からの抜粋で、著者 SJ Zero の許可を得ています。

FreeBASIC の最大の長所は、多くの標準のCライブラリと、継ぎ目なく統合する能力です。そして、QB の使いやすさも維持してます。
FBに、ビルトイン描画ライブラリを持つ前にさえ、果敢なプログラマは、描画と音声ルーチンを機能するようにするために、SDL (Simple Directmedia Layer:マルチメディアを簡単かつ直接に扱うためのライブラリ(APIの集合)) を使っていました。
SDL_net と Winsock を含む現在のバージョンになる以前に、多くのプログラマは、FreeBASIC にネットワーク・サポートを入れるために、ヘッダーと戦いました。
ここで、私は、3つの高度なライブラリ(SDL, fmod, tinyPTC) の使い方について、述べるつもりです。
原理を理解すれば、あなたは、C ライブラリを使うことが、一部の例外を除いて、とても単純であるのが分かるでしょう。FreeBASICで C ライブラリを使うことは、QB ライブラリを利用すること同様、難しくありません。


とにかく、これらのライブラリは、何ですか?

これらのライブラリは特に役に立ちます。ゲームの機能を提供する傾向があるので。

SDL は、グラフィックと入力のサポートが組み込まれたライブラリ、および ネットワークTrueTypeフォントのサポートオーディオ 用の多数のサブライブラリです。
これは OpenGL とともに使えますが、ここでは、取り扱いません。

TinyPTC は、主要な描画ライブラリで、利用できる最も簡単なものです。
これは、描画先の描画領域への、ポインタを提供するだけです。

FMod は、3d 音声と、音楽ライブラリです。
このライセンスは奇妙ですが、これは、音声を再生するために、受け入れられるように働きます。そして、3D音をうまくカプセル化します。


ライブラリを含める

これらのライブラリのどれかを働かせるためには、まず、あなたのプロジェクトにそれらのヘッダーファイルを含めます。

SDL に関して、それは単純です。
 #Include "SDL\SDL.bi"
 または、
 '$INCLUDE: "SDL\SDL.bi"

FMOD の場合は、
 #Include "fmod.bi"
 または、
 '$Include: 'fmod.bi'

そして、tinyPTC に関して、あなたがするのは
 #Include "tinyptc.bi"
 または、
 '$INCLUDE: 'tinyptc.bi'


'2.ライブラリを初期化して、ファイルをロードする。

Obviously, you can't just include the lib and fire away if it's got to do stuff first.
明らかに、それが最初にことをするならば、あなたはライブラリを含めて、続けることができません。
SDL を初期化して、メモリにビットマップを読み込むために、下のようにします。:
CONST SCR_WIDTH = 640
CONST SCR_HEIGHT = 480
DIM MenuScreen AS SDL_Surface ptr 'our bitmap
DIM Shared video AS SDL_Surface ptr 'our screen surface

SDL_Init ( SDL_INIT_VIDEO )
video = SDL_SetVideoMode( SCR_WIDTH, SCR_HEIGHT, 32, 0 ) 'sets the video mode for 640x480x32
MenuScreen = SDL_LoadBMP("bitmap.bmp")

FMOD を初期化して、メモリに音を読み込むために、下のようにします。:
DIM sound AS INTEGER 'it's just a handle, so it's an int!

IF FSOUND_GetVersion <= FMOD_VERSION THEN
ErrorQuit "FMOD version " + STR$(FMOD_VERSION) + " or greater required"
End If

If FSOUND_Init(44100, 32, 0) = FALSE Then
ErrorQuit "Can't initialize FMOD"
End If

sound = FSOUND_Sample_Load(FSOUND_FREE,"sound.wav", FSOUND_HW3D, 0, 0)

最後に、tinyPTC はとても簡単なので、tinyPTC に読み込むための、データ形式はありません。しかし、実行することで、これを初期化します:
const SCR_WIDTH = 320
const SCR_HEIGHT = 200
const SCR_SIZE = SCR_WIDTH*SCR_HEIGHT

if( ptc_open( "tinyPTC test", SCR_WIDTH, SCR_HEIGHT ) = 0 ) then
end -1
end if



ビット処理、演奏、描画
最も重要なステップは、明らかに、画面かスピーカーにさせたいものを得ることです。
この部分は、比較的簡単です。そして、wrapper 機能(外部からの入力を監視し、設定された条件に一致した場合だけプログラムを起動する処理や、それらの履歴情報を記録する。) に要約できます。
SDL では、画像を画面に送ることが、実行を意味します:

SUB BlitImage(x as integer,y as integer,image as sdl_surface ptr, dest as sdl_surface ptr)
DIM Rectangle as SDL_Rect
DIM Rectangle2 as SDL_Rect

Rectangle.X = 0
Rectangle.Y = 0
rectangle.w = image->w
rectangle.h = image->h
Rectangle2.x = x
Rectangle2.y = y

SDL_BlitSurface image, @rectangle, dest, @rectangle2

END SUB

FMOD では、音声を再生するステップは、そんなに難しくはありません:
FUNCTION fModPlayWave( samp1 as integer ) AS INTEGER
'where samp1 is the number returned by FSOUND_SampleLoad

DIM position(0 to 2)' as FSound_Vector
DIM vel(0 to 2)' FSound_Vector

fModPlayWave = FSOUND_PlaySoundEx(FSOUND_FREE, samp1, NULL, TRUE)

END FUNCTION

そして再び TinyPTC。他の 2 つのような高レベルのライブラリではなく、下のコードを使って画素をプロットできます:
SUB putd(BYREF buffer(), BYVAL x AS INTEGER, BYVAL y AS INTEGER, BYVAL colr as INTEGER)
	    buffer((y * SCR_WIDTH) + x) = colr
		ptc_update @buffer(0) 'This is a pageFlip
END SUB



停止
あなたは、メモリを管理して、すべての退屈な日常的な仕事をする必要はありません。あなたがしなければならないのは、プログラムが出る前に、忘れずにライブラリを止めることです。
運よく、3つのすべてのプログラムは、1つの行でこれができます。
あなたがライブラリを止めることができないなら、ライブラリはもう関係ありません。
これは美しいです。

SDL: SDL_Quit ()

fmod: FSOUND_Close ()

tinyPTC: PTC_Close ()


終了するには、これだけです!

お分かりのように、FreeBASIC でライブラリを使うのは、QuickBASIC と比べて、本質的に、より難しいものは何もありません。
実際、プログラマは、メモリを取得するために、輪くぐりの曲芸をする必要はありません。それは実際にはるかに簡単です。あなたは、最新の OS とハードウェアでも、同様に動かすことができます。

いっしょに学ぼう に戻る

最後、Sancho3によるレビュー(2018年2月06日)

←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2021-11-11 13:12:45
日本語翻訳:WATANABE Makoto、原文著作者:JasonFirth

ホームページのトップに戻る

表示-非営利-継承