Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8704029
  • 博文数量: 1413
  • 博客积分: 11128
  • 博客等级: 上将
  • 技术积分: 14685
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-13 10:03
个人简介

follow my heart...

文章分类

全部博文(1413)

文章存档

2013年(1)

2012年(5)

2011年(45)

2010年(176)

2009年(148)

2008年(190)

2007年(293)

2006年(555)

分类:

2006-09-12 13:14:23

[点评:Freebasic是一门简单的语言,更是一门强大的语言。它的强大在于不仅是对原有BASIC语言的发展,更重要的是将一些流行的开源C库也引入进来,从而使FB可扩充性更强。这里仅列出了三个库,事实上,FREEBASIC支持更多的库,像allegro,GTK等等。而且相较于C过份严谨的语法,FREEBASIC就更加方便了.]
Freebasic具有很强的功能,他可以用QB的语法来非常简单的使用一些标准的C语言库.这里简单的介绍一下如何使用一些高级的C库,像SDL,FMOD,TINYPTC.在掌握了这些方法之后,你会发现在freebasic中使用C库非常的简单.和C语言使用没有什么非常大的不同.
这些库是什么?
这些库非常有用,而且主要用于游戏开发当中.
SDL库支持图像,输入及网络、字体和音频等。
TinyPTC也是一个图形库。
FMOD是一个支持3d音效和音乐的库。
在程序中包含这些库
SDL:
 '$INCLUDE: "SDL\SDL.bi
FMOD:
'$Include: 'fmod.bi'
TinyPTC:
'$INCLUDE: 'tinyptc.bi'
初始化库,并加载文件
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
--------------------------------------
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
sound = FSOUND_Sample_Load(FSOUND_FREE,"sound.wav", FSOUND_HW3D, 0, 0)
翻转/播放
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
-----------------------------------------------------
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)
---------------------------------------------------
TinyPTC:
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
中止
SDL: SDL_Quit ()
fmod: FSOUND_Close ()
tinyPTC: PTC_Close ()
END SUB

END FUNCTION

END SUB

阅读(4009) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-06-04 18:34:15

中文版与其教程 http://www.nicebasic.cn/

chinaunix网友2008-11-15 02:41:44

有完全教程不?