我有一些使用SDL_ttf的代码(下面),并希望:
SDLK_charhere
)。回到#1:我正在考虑在屏幕上(从TTF)打印上一个字符的宽度,并使用其宽度(以像素为单位)在前一个字符后面打印下一个字符,再加上2个像素。 < - 请告诉我,如果常规WIN32控制台中的字符之间的间距在像素中是不同的大小。
以下是需要修改的代码:
#include "include/SDL/SDL.h"
#include "include/SDL/SDL_ttf.h"
int currentX = 0;
int currentY = 0;
int newW;
int newH;
SDL_Surface* screen;
SDL_Surface* fontSurface;
SDL_Color fColor;
SDL_Rect fontRect;
SDL_Event event;
TTF_Font* font;
//Initialize the font, set to white
void fontInit(){
TTF_Init();
font = TTF_OpenFont("dos.ttf", 12);
fColor.r = 0; // 255
fColor.g = 204; // 255
fColor.b = 0; //255
}
//Print the designated string at the specified coordinates
void PrintStr(char *c, int x, int y){
fontSurface = TTF_RenderText_Solid(font, c, fColor);
fontRect.x = x;
fontRect.y = y;
SDL_BlitSurface(fontSurface, NULL, screen, &fontRect);
SDL_Flip(screen);
}
int main(int argc, char** argv)
{
// Initialize the SDL library with the Video subsystem
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE);
//Create the screen
screen = SDL_SetVideoMode(320, 480, 0, SDL_SWSURFACE);
//Initialize fonts
fontInit();
PrintStr("", 0, 0);
do {
// Process the events
while (SDL_PollEvent(&event)) {
switch (event.type) {
case SDL_KEYDOWN:
switch (event.key.keysym.sym) {
// Escape forces us to quit the app
case SDLK_ESCAPE:
event.type = SDL_QUIT;
break;
default:
break;
}
break;
default:
break;
}
}
SDL_Delay(10);
} while (event.type != SDL_QUIT);
// Cleanup
SDL_Quit();
return 0;
}
答案 0 :(得分:1)
这不是一件容易的事,但这听起来像是一个很好的学习项目!你可能需要几千行代码而不是几十行代码。也许从考虑这些问题及其答案开始。
所有这些都需要与最重要的问题一起考虑:
如果你这样做,它会教你很多关于编程的知识,但它可能无法为你提供最好的全屏控制台。