#include "DxLib.h" #include #include namespace { const int WIN_WIDTH = 1024; const int WIN_HEIGHT = 768; char str[] = "I Scream IceCream!"; char samp[] = "CAB"; const int CHAR_W = 20; const int CHAR_H = 20; const int MARGIN = 8; const int MAX_MOJI = 8*7;//8列7行の表 struct Point { int x; int y; }; Point LUT[MAX_MOJI]; std::map LUM; } void DxInit() { ChangeWindowMode(true); SetWindowSizeChangeEnableFlag(false, false); SetMainWindowText("文字列を画像で表示するぞ"); SetGraphMode(WIN_WIDTH, WIN_HEIGHT, 32); SetWindowSizeExtendRate(1.0); SetBackgroundColor(0, 0, 205); // DXライブラリ初期化処理 if (DxLib_Init() == -1) { DxLib_End(); } SetDrawScreen(DX_SCREEN_BACK); } //大文字’U’を引数にすると21が帰ってくる // 20 ← GetWordNum('U'); int GetWordNum(char moji) { //char str[56+1] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!?. ";と同じ char str[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!?. "; int length = strlen(str); int res = -1;//なんも見つからなかったら-1をエラーとして返す for (int i = 0; i < length; i++) { if (moji == str[i]) { res = i; break; } } return( res ); } void MakeLUT() { //LUTをつくるよ! //LUT[56]にwx,wyを設定していく const int TWIDTH = 8;//画像の文字の表の幅(文字数) for (int i = 0; i < MAX_MOJI; i++) { Point tmp; tmp.x = i % TWIDTH; tmp.y = i / TWIDTH; LUT[i] = tmp; } char str[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!?. "; //int length = strlen(str); for (int i = 0; i < MAX_MOJI; i++) { LUM[str[i]] = LUT[i]; } } // //Point GetWordPos(char moji) //{ // // // // return(LUT[res]); //} int WINAPI WinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpCmdLine, _In_ int nCmdShow) { DxInit(); int hWTable = -1; //画像の読み込みが成功すると0より大きいハンドルが返ってくるよ! hWTable = LoadGraph("Image\\abc_table_refine.png"); int length = strlen(str); //表示するメッセージの文字数 //Look UP Table (参照表)を前処理で作っておけたらかっちょいい MakeLUT(); while (true) { ClearDrawScreen(); //ここにやりたい処理を書く //char samp[] = "ABC"; //20x20 @ 1文字 int TWIDTH = 8;//画像の文字の表の幅(文字数) for (int i = 0; i < length; i++) { //int n = GetWordNum(str[i]); //int wx = n % TWIDTH; //int wy = n / TWIDTH; char moji_ima = str[i]; DrawRectGraph(10 + MARGIN * i, 10, //表示位置の調整 LUM[moji_ima].x*CHAR_W, LUM[moji_ima].y*CHAR_H, CHAR_W, CHAR_H, hWTable, TRUE); //画像からの切り抜き位置 } ScreenFlip(); WaitTimer(16); if (ProcessMessage() == -1) break; if (CheckHitKey(KEY_INPUT_ESCAPE) == 1) break; } DxLib_End(); return 0; }