sdl如何将软件本地化

sdl如何将软件本地化,第1张

1、首先新建项目,添加中文字串列表。

2、其次打开需要粗悉晌翻译的列表进行翻译。

3、最后导出目标文件:右击项目文件,选择生成目标文件即可。SDL(Simple DirectMedia Layer)是一陆槐套开放源代码岩锋的跨平台多媒体开发库,使用C语言写成。

①找到codeblocks安装目录下的MinGW文件夹(我的是这样子的:“E:\program

files\CodeBlocks\MinGW”)

这个目录下有include文件夹,打开它。在sdl包里面有一个include\SDL文件夹,把这个文件夹拖到你的电脑里面的include文件夹里。

②找到codeblocks安装目录下的MinGW文件夹(我的是这样子的:“E:\program

files\CodeBlocks\MinGW”)

这个目录下有lib文件夹,打开它。在sdl包里面有一个lib文件夹,把这个里面的三个文件“libSDL.dll.a,

libSDL.la和libSDLmain.a”拖到你电脑里的lib文件夹里面。

③把sdl包里面bin文件夹里面的SDL.dll文件拖到“C:\WINDOWS\system32”(我用的是XP系统)。当然,另外一个选择是将SDL.dll随时绑定到使用了SDL库编译的*.exe文件所在的文件夹中。这通常在发布你的程序的时候使用。

这样的话,基本的SDL就算是配置好了谨缺孝,可以用来写程序咯~!

用codeblocks新建一个空项目,在这个项目里面新建扮氏一个c++(我目前学的就是C++,java、C#什么的不感兴趣)文件。敲入下面的代码:

#include

<iostream>

#include

<SDL/SDL.h>

int

main(int

argc,

char*

argv[])

{

try

{

if(SDL_Init(SDL_INIT_EVERYTHING

==

-1))

throw"Could

not

initialize

SDL!"

}

catch(const

char*

s)

{

std::cerr<<s<<std::endl

return

-1

}

std::cout<<"SDL

initialized.\n"

SDL_Quit()

return

0

}

在左侧的Management窗口中,在项目上右击鼠标,选择构建选项,在横向目录里面选择“连接器设置”,添加“mingw32SDLmainSDL”(直接把双引号里面的内容复制进去就好),点击确定。发现添加了三行的连接库(这就对了),然后再此点击确定。

最后编译,运行。无误可以构建成功,虽然没有任何窗口生成,但是说明SDL配置和代码是没有问题的~!

在生成的debug文件祥稿夹下,生成了一个stdcout的txt文档。这个文档里面记录了程序的运行结果。

主要错误:screen没有赋值,导致后面加载字体失败。

小错误:fontFile参数应该使用,不要函数内部用自己的参数,否则换一个ttf可能会出错。

此外,错误信息可以用TTF_GetError()和SDL_GetError()得到。

给你粗糙的改了一下,在枝局2010下编译后,在屏幕左上角可见一个白色的"猛雀让TEST"。

有问题可以再问。如果对SDL开发感兴趣,欢迎加入SDL团队。

#include <stdio.h>

#include <stdlib.h>

#include <SDL.h>

#include <SDL_ttf.h>

#define WIDTH 600

#define HEIGHT 400

#define CPP 32

SDL_Surface *screen = NULL

int initSDL(void)

{

if(SDL_Init(SDL_INIT_EVERYTHING) == -1)

{ printf("SDL init failed...\n")

return 0

}

screen = SDL_SetVideoMode(WIDTH,HEIGHT,CPP,SDL_SWSURFACE|SDL_DOUBLEBUF)

if(screen == NULL)

{ printf("init screen failed, please check your display card\n")

return 0

}

if(TTF_Init() == -1)

{

printf("init ttf files failed...\n")

return 0

}

SDL_WM_SetCaption("SDL show text",NULL)

return 1}

void quitSDL(void)

{ TTF_Quit()

SDL_Quit()}

int initFont(SDL_Surface **aMsg, const char *aText,SDL_Color &aTextColor,const char *aFontFile,int aSize)

{TTF_Font *font =TTF_OpenFont(aFontFile,aSize)

if(NULL==font)

{printf("打开字体失败:%s\n", TTF_GetError())

return 0}

*aMsg=TTF_RenderText_Solid(font,aText,aTextColor)

TTF_CloseFont(font)

return 1}

void showText(SDL_Surface *aMsg,int aLeft,int aTop,int aWidth,int aHeight,SDL_Surface *aDestination)

{

SDL_Rect textPosition

textPosition.x =aLeft

textPosition.y =aTop

textPosition.w =(aWidth==0)?aMsg->w:aWidth

textPosition.h =(aHeight==0)?aMsg->h:aHeight

SDL_BlitSurface(aMsg,NULL,aDestination,&textPosition)

}

void showScreen(void)

{ SDL_Flip(screen)}

int main(int argc,char *argv[])

{

SDL_Surface *pText

//define color is white

SDL_Color textColor ={255,255,255}

//initial SDL

initSDL()

//载入字库文件,“simhei.ttf”文件是一个字库文件,可以到系统的font文件夹下找到,找到后放到cpp文件目录下

initFont(&pText,"TEST",textColor,"simhei.ttf",12)

//岁吵show text to display memory

showText(pText,0,0,0,0,screen)

//show text to screen

showScreen()

//delay 5s

SDL_Delay(5000)

//close SDL

quitSDL()

system("pause")

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12135385.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存