←3DSのHBL用アプリ開発 トップへ

コンソール画面に文字列を出力する

コンソール画面に文字列を出力します。



最終更新:2017/05/18


はじめに


まず、基本のソースコードです。
#include <3ds.h>
#include <stdio.h>
int main(int argc, char **argv) {
    //...
    return 0;//Exit
};
このmain関数の中に書いていきます。

LCDを使用する


LCDを使用するためには、gfxInitDefault関数を使用しフレームバッファを初期化する必要があります。
gfxInitDefault関数を使用したら終了時にgfxExit関数でバッファを開放させます。
そして、コンソールを初期化するために、consoleInit関数を使用ます。
描画して画面を更新する必要があった場合は、gfxFlushBuffers関数gfxSwapBuffers関数で反映します。

コンソール画面に文字列を出力する


LCDの処理が終わったらやっとLCDが使えるようになりました。
文字列の出力は、C言語でおなじみのprintf関数を使います。

Hello, world. のサンプル。L+R+B+↓で終了します。
#include <3ds.h>
#include <stdio.h>
int main(int argc, char **argv) {
    gfxInitDefault();
    consoleInit(GFX_TOP, NULL);
    printf("Hello, world.\n");
    printf("by InoueSoftware");
    while (aptMainLoop()) {//Mainloop
        gfxFlushBuffers();
        gfxSwapBuffers();
        gspWaitForVBlank();
    };
    gfxExit();
    return 0;//Exit
};
実行結果↓
Sample1

コンソールで使える文字は次の通りです。
Image

表示位置、色を変える


表示位置を変えるには、printf関数に渡す文字列に\x1b[行;桁Hを入れると出来ます。
上画面は、29行49桁、下画面は最大で、29行39桁以内に収めます。

表示色を変えるには、printf関数に渡す文字列に\x1b[色コードmを入れると出来ます。
カラーコードは、カラーテーブルを参照してください。

位置指定とカラーコード変更のサンプル。L+R+B+↓で終了します。
#include <3ds.h>
#include <stdio.h>
int main(int argc, char **argv) {
    gfxInitDefault();
    consoleInit(GFX_TOP, NULL);
    printf("\x1b[37m\x1b[46mWhite/Cyan");
    printf("\x1b[30m\x1b[0m\x1b[30;20HBottom");
    while (aptMainLoop()) {//Mainloop
        gfxFlushBuffers();
        gfxSwapBuffers();
        gspWaitForVBlank();
    };
    gfxExit();
    return 0;//Exit
};
実行結果↓
Sample2

下画面も使う


下画面を使用するには、consoleInit関数で下画面も初期化し、コンソールデーターへのポインタを第2引数に指定する必要があります。
そして、consoleSelect関数の引数に初期化で指定したコンソールデーターへのポインタを指定し、出力する画面を切り替えます。
コンソールデーターはPrintConsole構造体型で初期化してください。

上下画面出力サンプル。L+R+B+↓で終了します。
#include <3ds.h>
#include <stdio.h>
int main(int argc, char **argv) {
    gfxInitDefault();
    PrintConsole topScreen, bottomScreen;//構造体の初期化
    consoleInit(GFX_TOP, &topScreen);
    consoleInit(GFX_BOTTOM, &bottomScreen);
    consoleSelect(&topScreen);
    printf("Top Screen");
    consoleSelect(&bottomScreen);
    printf("Bottom Screen");
    while (aptMainLoop()) {//Mainloop
        gfxFlushBuffers();
        gfxSwapBuffers();
        gspWaitForVBlank();
    };
    gfxExit();
    return 0;//Exit
};
実行結果↓
Sample3

コンソールの内容を消す


consoleClear関数で内容が消えます。



[前へ] [次へ]

(C)2017 InoueSoftware / 無断転載禁止